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

Commit e183210

Browse files
committed
Added TSTree.getChangedRanges() and updated submodules
1 parent 3352533 commit e183210

File tree

5 files changed

+37
-2
lines changed

5 files changed

+37
-2
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,14 @@ public TSNode getRootNode() {
2323
return Native.rootNode(pointer);
2424
}
2525

26+
public TSRange[] getChangedRanges(TSTree oldTree) {
27+
TSRange[] ranges = Native.changedRanges(this.pointer, oldTree.pointer);
28+
if (ranges == null) {
29+
return new TSRange[0];
30+
}
31+
return ranges;
32+
}
33+
2634
/**
2735
* Make a shallow copy of this tree. This is very fast.
2836
*
@@ -68,6 +76,8 @@ private static class Native {
6876

6977
public static native TSNode rootNode(long tree);
7078

79+
public static native TSRange[] changedRanges(long tree, long oldTree);
80+
7181
public static native long getLanguage(long tree);
7282
}
7383
}

lib/include/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: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,23 @@ Java_com_itsaky_androidide_treesitter_TSTree_00024Native_rootNode(JNIEnv* env,
2929
return _marshalNode(env, ts_tree_root_node((TSTree*)tree));
3030
}
3131

32+
JNIEXPORT jobjectArray JNICALL Java_com_itsaky_androidide_treesitter_TSTree_00024Native_changedRanges
33+
(JNIEnv *env, jclass self, jlong tree, jlong oldTree) {
34+
uint32_t count;
35+
TSRange *ranges = ts_tree_get_changed_ranges((TSTree*) oldTree, (TSTree*) tree, &count);
36+
if (count == 0) {
37+
return NULL;
38+
}
39+
40+
jclass klass = env->FindClass("com/itsaky/androidide/treesitter/TSRange");
41+
jobjectArray arr = env->NewObjectArray(count, klass, NULL);
42+
for (uint32_t i = 0; i < count; i++) {
43+
TSRange *r = (ranges + i);
44+
env->SetObjectArrayElement(arr, i, _marshalRange(env, *r));
45+
}
46+
return arr;
47+
}
48+
3249
JNIEXPORT jlong JNICALL
3350
Java_com_itsaky_androidide_treesitter_TSTree_00024Native_getLanguage(
3451
JNIEnv* env, jclass self, jlong tree) {

0 commit comments

Comments
 (0)