From a34a24f4e7a2cc65489636b87785f2682d9c0499 Mon Sep 17 00:00:00 2001 From: Peter Slattery Date: Wed, 16 Jul 2025 11:31:55 -0700 Subject: [PATCH] Passing the old and new ranges from buffer_edit_range to Buffer_Tree_Sitter_Data so it can be accessed in the tick for incremental code index updating --- code/custom/4coder_custom_hooks.cpp | 3 +++ code/custom/4coder_tree_sitter.cpp | 4 +++- code/custom/4coder_tree_sitter.h | 4 ++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/code/custom/4coder_custom_hooks.cpp b/code/custom/4coder_custom_hooks.cpp index 91581f27..45eefeb1 100644 --- a/code/custom/4coder_custom_hooks.cpp +++ b/code/custom/4coder_custom_hooks.cpp @@ -132,6 +132,9 @@ BUFFER_EDIT_RANGE_SIG(custom_buffer_edit_range){ ts_tree_edit(tree_data->tree, &edit); tree_sitter_parse_incremental(app, buffer_id); + + tree_data->last_update_old_range = old_range; + tree_data->last_update_new_range = new_range; trigger_code_index_update = true; } } diff --git a/code/custom/4coder_tree_sitter.cpp b/code/custom/4coder_tree_sitter.cpp index 591e502d..a4288550 100644 --- a/code/custom/4coder_tree_sitter.cpp +++ b/code/custom/4coder_tree_sitter.cpp @@ -589,8 +589,10 @@ tree_sitter_code_index_update_tick(Application_Links* app) modified_node = modified_node->next ){ Buffer_ID buffer_id = modified_node->buffer; + Managed_Scope buffer_scope = buffer_get_managed_scope(app, buffer_id); + Buffer_Tree_Sitter_Data* tree_data = scope_attachment(app, buffer_scope, buffer_tree_sitter_data_id, Buffer_Tree_Sitter_Data); + if (!tree_data || !tree_data->tree) continue; - // TODO(PS): This should become incremental tree_sitter_code_index_update_full_file(app, buffer_id); } buffer_modified_set_clear(); diff --git a/code/custom/4coder_tree_sitter.h b/code/custom/4coder_tree_sitter.h index 1528e6e9..038744e7 100644 --- a/code/custom/4coder_tree_sitter.h +++ b/code/custom/4coder_tree_sitter.h @@ -45,6 +45,10 @@ struct Buffer_Tree_Sitter_Data { TSTree* tree; System_Mutex tree_mutex; + + // Code Index Update Requests + Range_i64 last_update_old_range; + Range_i64 last_update_new_range; }; struct Tree_Sitter_Query_Cursor