Skip to content

Commit c1082af

Browse files
authored
[feat]: Add Kotlin & ObjC language support (#22)
* add kotlin parser * implement kotlin parser * add kotlin highlights * add objc parser * implement objc parser * update docs, fix lint errors
1 parent 4640430 commit c1082af

File tree

15 files changed

+968
-3
lines changed

15 files changed

+968
-3
lines changed

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.pbxproj

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,10 @@
77
objects = {
88

99
/* Begin PBXBuildFile section */
10+
28171CB2298143C400523F1C /* TreeSitterObjC in Frameworks */ = {isa = PBXBuildFile; productRef = 28171CB1298143C400523F1C /* TreeSitterObjC */; };
1011
282E5977298051980064B34A /* TreeSitterYAML in Frameworks */ = {isa = PBXBuildFile; productRef = 282E5976298051980064B34A /* TreeSitterYAML */; };
1112
2846B262296BA1CF005F60B6 /* TreeSitterDockerfile in Frameworks */ = {isa = PBXBuildFile; productRef = 2846B261296BA1CF005F60B6 /* TreeSitterDockerfile */; };
13+
2886C788298135540023E016 /* TreeSitterKotlin in Frameworks */ = {isa = PBXBuildFile; productRef = 2886C787298135540023E016 /* TreeSitterKotlin */; };
1214
28B3F010290C207D000CD04D /* CodeLanguages_Container.h in Headers */ = {isa = PBXBuildFile; fileRef = 28B3F00F290C207D000CD04D /* CodeLanguages_Container.h */; settings = {ATTRIBUTES = (Public, ); }; };
1315
28B3F02D290C35D9000CD04D /* TreeSitterC in Frameworks */ = {isa = PBXBuildFile; productRef = 28B3F02C290C35D9000CD04D /* TreeSitterC */; };
1416
28B3F030290C35F9000CD04D /* TreeSitterCPP in Frameworks */ = {isa = PBXBuildFile; productRef = 28B3F02F290C35F9000CD04D /* TreeSitterCPP */; };
@@ -60,8 +62,10 @@
6062
28B3F045290C366E000CD04D /* TreeSitterHTML in Frameworks */,
6163
28B3F05A290C36E5000CD04D /* TreeSitterRust in Frameworks */,
6264
28B3F054290C36C5000CD04D /* TreeSitterPython in Frameworks */,
65+
28171CB2298143C400523F1C /* TreeSitterObjC in Frameworks */,
6366
28B3F048290C367C000CD04D /* TreeSitterJava in Frameworks */,
6467
282E5977298051980064B34A /* TreeSitterYAML in Frameworks */,
68+
2886C788298135540023E016 /* TreeSitterKotlin in Frameworks */,
6569
28B3F057290C36D5000CD04D /* TreeSitterRuby in Frameworks */,
6670
);
6771
runOnlyForDeploymentPostprocessing = 0;
@@ -160,6 +164,8 @@
160164
28B9F7A9290DDAC900245748 /* TreeSitterBash */,
161165
2846B261296BA1CF005F60B6 /* TreeSitterDockerfile */,
162166
282E5976298051980064B34A /* TreeSitterYAML */,
167+
2886C787298135540023E016 /* TreeSitterKotlin */,
168+
28171CB1298143C400523F1C /* TreeSitterObjC */,
163169
);
164170
productName = "CodeLanguages-Container";
165171
productReference = 28B3F00C290C207D000CD04D /* CodeLanguages_Container.framework */;
@@ -211,6 +217,8 @@
211217
28B9F7A6290DDAB500245748 /* XCRemoteSwiftPackageReference "tree-sitter-bash" */,
212218
2846B260296BA1CF005F60B6 /* XCRemoteSwiftPackageReference "tree-sitter-dockerfile" */,
213219
282E5975298051980064B34A /* XCRemoteSwiftPackageReference "tree-sitter-yaml" */,
220+
2886C786298135540023E016 /* XCRemoteSwiftPackageReference "tree-sitter-kotlin" */,
221+
28171CB0298143C400523F1C /* XCRemoteSwiftPackageReference "tree-sitter-objc" */,
214222
);
215223
productRefGroup = 28B3F00D290C207D000CD04D /* Products */;
216224
projectDirPath = "";
@@ -450,6 +458,14 @@
450458
/* End XCConfigurationList section */
451459

452460
/* Begin XCRemoteSwiftPackageReference section */
461+
28171CB0298143C400523F1C /* XCRemoteSwiftPackageReference "tree-sitter-objc" */ = {
462+
isa = XCRemoteSwiftPackageReference;
463+
repositoryURL = "https://github.com/CodeEditApp/tree-sitter-objc";
464+
requirement = {
465+
branch = feature/spm;
466+
kind = branch;
467+
};
468+
};
453469
282E5975298051980064B34A /* XCRemoteSwiftPackageReference "tree-sitter-yaml" */ = {
454470
isa = XCRemoteSwiftPackageReference;
455471
repositoryURL = "https://github.com/lukepistrol/tree-sitter-yaml.git";
@@ -466,6 +482,14 @@
466482
kind = branch;
467483
};
468484
};
485+
2886C786298135540023E016 /* XCRemoteSwiftPackageReference "tree-sitter-kotlin" */ = {
486+
isa = XCRemoteSwiftPackageReference;
487+
repositoryURL = "https://github.com/lukepistrol/tree-sitter-kotlin";
488+
requirement = {
489+
branch = "feature/spm-queries";
490+
kind = branch;
491+
};
492+
};
469493
28B3F02B290C35D9000CD04D /* XCRemoteSwiftPackageReference "tree-sitter-c" */ = {
470494
isa = XCRemoteSwiftPackageReference;
471495
repositoryURL = "https://github.com/tree-sitter/tree-sitter-c.git";
@@ -621,6 +645,11 @@
621645
/* End XCRemoteSwiftPackageReference section */
622646

623647
/* Begin XCSwiftPackageProductDependency section */
648+
28171CB1298143C400523F1C /* TreeSitterObjC */ = {
649+
isa = XCSwiftPackageProductDependency;
650+
package = 28171CB0298143C400523F1C /* XCRemoteSwiftPackageReference "tree-sitter-objc" */;
651+
productName = TreeSitterObjC;
652+
};
624653
282E5976298051980064B34A /* TreeSitterYAML */ = {
625654
isa = XCSwiftPackageProductDependency;
626655
package = 282E5975298051980064B34A /* XCRemoteSwiftPackageReference "tree-sitter-yaml" */;
@@ -631,6 +660,11 @@
631660
package = 2846B260296BA1CF005F60B6 /* XCRemoteSwiftPackageReference "tree-sitter-dockerfile" */;
632661
productName = TreeSitterDockerfile;
633662
};
663+
2886C787298135540023E016 /* TreeSitterKotlin */ = {
664+
isa = XCSwiftPackageProductDependency;
665+
package = 2886C786298135540023E016 /* XCRemoteSwiftPackageReference "tree-sitter-kotlin" */;
666+
productName = TreeSitterKotlin;
667+
};
634668
28B3F02C290C35D9000CD04D /* TreeSitterC */ = {
635669
isa = XCSwiftPackageProductDependency;
636670
package = 28B3F02B290C35D9000CD04D /* XCRemoteSwiftPackageReference "tree-sitter-c" */;

CodeLanguages-Container/CodeLanguages-Container.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved

Lines changed: 19 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CodeLanguages-Container/CodeLanguages-Container/CodeLanguages_Container.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ extern TSLanguage *tree_sitter_html();
3636
extern TSLanguage *tree_sitter_java();
3737
extern TSLanguage *tree_sitter_javascript();
3838
extern TSLanguage *tree_sitter_json();
39+
extern TSLanguage *tree_sitter_kotlin();
40+
extern TSLanguage *tree_sitter_objc();
3941
extern TSLanguage *tree_sitter_php();
4042
extern TSLanguage *tree_sitter_python();
4143
extern TSLanguage *tree_sitter_ruby();
6.01 MB
Binary file not shown.

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,9 @@ In order to add support for additional languages we have a complete guide on how
6464
| [JSDoc](https://github.com/tree-sitter/tree-sitter-jsdoc) | | |
6565
| [JSON](https://github.com/mattmassicotte/tree-sitter-json) |||
6666
| [Julia](https://github.com/tree-sitter/tree-sitter-julia) | | _not available_ |
67-
| [Kotlin](https://github.com/fwcd/tree-sitter-kotlin) | | _not available_ |
67+
| [Kotlin](https://github.com/fwcd/tree-sitter-kotlin/tree/feature/spm-queries) | | |
6868
| [Markdown](https://github.com/ikatyang/tree-sitter-markdown) | | _not available_ |
69+
| [Objective C](https://github.com/CodeEditApp/tree-sitter-objc/tree/feature/spm) |||
6970
| [OCaml](https://github.com/tree-sitter/tree-sitter-ocaml) | | |
7071
| Plain Text || _not available_ |
7172
| [Perl](https://github.com/ganezdragon/tree-sitter-perl) | | _not available_ |

Sources/CodeEditLanguages/CodeLanguage+Definitions.swift

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ public extension CodeLanguage {
2626
.javascript,
2727
.json,
2828
.jsx,
29+
.kotlin,
30+
.objc,
2931
.php,
3032
.python,
3133
.ruby,
@@ -142,6 +144,20 @@ public extension CodeLanguage {
142144
highlights: ["highlights-jsx"]
143145
)
144146

147+
/// A language structure for `Kotlin`
148+
static let kotlin: CodeLanguage = .init(
149+
id: .kotlin,
150+
tsName: "kotlin",
151+
extensions: ["kt", "kts"]
152+
)
153+
154+
/// A language structure for `Objective C`
155+
static let objc: CodeLanguage = .init(
156+
id: .objc,
157+
tsName: "objc",
158+
extensions: ["m"]
159+
)
160+
145161
/// A language structure for `PHP`
146162
static let php: CodeLanguage = .init(
147163
id: .php,

Sources/CodeEditLanguages/CodeLanguage.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -96,6 +96,10 @@ public struct CodeLanguage {
9696
return tree_sitter_json()
9797
case .jsx:
9898
return tree_sitter_javascript()
99+
case .kotlin:
100+
return tree_sitter_kotlin()
101+
case .objc:
102+
return tree_sitter_objc()
99103
case .php:
100104
return tree_sitter_php()
101105
case .python:

Sources/CodeEditLanguages/Documentation.docc/CodeLanguage.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
3434
- JavaScript
3535
- JSON
3636
- JSX
37+
- Kotlin
38+
- Objective C
3739
- PHP
3840
- Python
3941
- Ruby
@@ -78,6 +80,8 @@ let language = CodeLanguage.detectLanguageFrom(url: fileURL)
7880
- ``javascript``
7981
- ``json``
8082
- ``jsx``
83+
- ``kotlin``
84+
- ``objc``
8185
- ``php``
8286
- ``python``
8387
- ``ruby``

Sources/CodeEditLanguages/Documentation.docc/TreeSitterModel.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,8 @@ let query = TreeSitterModel.shared.swiftQuery
4747
- ``javascriptQuery``
4848
- ``jsonQuery``
4949
- ``jsxQuery``
50+
- ``kotlinQuery``
51+
- ``objcQuery``
5052
- ``phpQuery``
5153
- ``pythonQuery``
5254
- ``rubyQuery``

Sources/CodeEditLanguages/Resources/tree-sitter-javascript/tags.scm

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -86,3 +86,14 @@
8686

8787
(new_expression
8888
constructor: (_) @name) @reference.class
89+
90+
(export_statement value: (assignment_expression left: (identifier) @name right: ([
91+
(number)
92+
(string)
93+
(identifier)
94+
(undefined)
95+
(null)
96+
(new_expression)
97+
(binary_expression)
98+
(call_expression)
99+
]))) @definition.constant

0 commit comments

Comments
 (0)