Skip to content
This repository was archived by the owner on Oct 18, 2024. It is now read-only.

Commit 6f3d511

Browse files
committed
Implemented TSTree.getLanguage()
1 parent 4883934 commit 6f3d511

File tree

4 files changed

+46
-11
lines changed

4 files changed

+46
-11
lines changed

android-tree-sitter/src/main/java/com/itsaky/androidide/treesitter/TSTree.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,15 @@ public void edit(TSInputEdit edit) {
4141
Native.edit(pointer, edit);
4242
}
4343

44+
/**
45+
* Get the language that was used to parse the syntax tree.
46+
*
47+
* @return The tree sitter language.
48+
*/
49+
public TSLanguage getLanguage() {
50+
return new TSLanguage(Native.getLanguage(this.pointer));
51+
}
52+
4453
/**
4554
* Get the pointer of this tree.
4655
*
@@ -52,8 +61,13 @@ long getPointer() {
5261

5362
private static class Native {
5463
public static native void edit(long tree, TSInputEdit inputEdit);
64+
5565
public static native void delete(long tree);
66+
5667
public static native long copy(long tree);
68+
5769
public static native TSNode rootNode(long tree);
70+
71+
public static native long getLanguage(long tree);
5872
}
5973
}

android-tree-sitter/src/test/java/com/itsaky/androidide/treesitter/TreeTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ public void testTreeCopy() throws UnsupportedEncodingException {
1818
try (final var tree =
1919
parser.parseString(
2020
"class Main { void main() {} }", TSInputEncoding.TSInputEncodingUTF8)) {
21+
assertThat(tree.getLanguage()).isEqualTo(TSLanguages.java());
2122
assertThat(tree.copy().getRootNode().getNodeString())
2223
.isEqualTo(tree.getRootNode().getNodeString());
2324
}

lib/com_itsaky_androidide_treesitter_TSTree_Native.h

Lines changed: 8 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

lib/ts_tree.cc

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,36 @@
11
#include "com_itsaky_androidide_treesitter_TSTree_Native.h"
22
#include "ts_utils.h"
33

4-
JNIEXPORT void JNICALL Java_com_itsaky_androidide_treesitter_TSTree_00024Native_edit(
5-
JNIEnv* env, jclass self, jlong tree, jobject inputEdit) {
6-
4+
JNIEXPORT void JNICALL
5+
Java_com_itsaky_androidide_treesitter_TSTree_00024Native_edit(
6+
JNIEnv* env, jclass self, jlong tree, jobject inputEdit) {
77
TSInputEdit edit = _unmarshalInputEdit(env, inputEdit);
8-
ts_tree_edit((TSTree*) tree, &edit);
8+
ts_tree_edit((TSTree*)tree, &edit);
99
}
1010

11-
JNIEXPORT void JNICALL Java_com_itsaky_androidide_treesitter_TSTree_00024Native_delete(
12-
JNIEnv* env, jclass self, jlong tree) {
11+
JNIEXPORT void JNICALL
12+
Java_com_itsaky_androidide_treesitter_TSTree_00024Native_delete(JNIEnv* env,
13+
jclass self,
14+
jlong tree) {
1315
ts_tree_delete((TSTree*)tree);
1416
}
1517

16-
JNIEXPORT jlong JNICALL Java_com_itsaky_androidide_treesitter_TSTree_00024Native_copy(
17-
JNIEnv* env, jclass self, jlong tree) {
18-
return (jlong) ts_tree_copy((TSTree*)tree);
18+
JNIEXPORT jlong JNICALL
19+
Java_com_itsaky_androidide_treesitter_TSTree_00024Native_copy(JNIEnv* env,
20+
jclass self,
21+
jlong tree) {
22+
return (jlong)ts_tree_copy((TSTree*)tree);
1923
}
2024

21-
JNIEXPORT jobject JNICALL Java_com_itsaky_androidide_treesitter_TSTree_00024Native_rootNode(
22-
JNIEnv* env, jclass self, jlong tree) {
25+
JNIEXPORT jobject JNICALL
26+
Java_com_itsaky_androidide_treesitter_TSTree_00024Native_rootNode(JNIEnv* env,
27+
jclass self,
28+
jlong tree) {
2329
return _marshalNode(env, ts_tree_root_node((TSTree*)tree));
30+
}
31+
32+
JNIEXPORT jlong JNICALL
33+
Java_com_itsaky_androidide_treesitter_TSTree_00024Native_getLanguage(
34+
JNIEnv* env, jclass self, jlong tree) {
35+
return (jlong)ts_tree_language((TSTree*)tree);
2436
}

0 commit comments

Comments
 (0)