diff --git a/code/custom/4coder_tree_sitter.cpp b/code/custom/4coder_tree_sitter.cpp index 4c178ad7..dc20fe77 100644 --- a/code/custom/4coder_tree_sitter.cpp +++ b/code/custom/4coder_tree_sitter.cpp @@ -802,13 +802,10 @@ tree_sitter_code_index_update_tick(Application_Links* app) int query_count = 0; Tree_Sitter_Query_Cursor queries[2]; - Range_i64 edit_range; - if (would_reparse_entire_file) { TSNode prev_sibling = {0}; TSNode next_sibling = {0}; - u32 child_count = ts_node_child_count(root); for (u32 i = 0; i < child_count; i++) { @@ -826,57 +823,36 @@ tree_sitter_code_index_update_tick(Application_Links* app) } } - if (!ts_node_is_null(prev_sibling) && !ts_node_is_null(next_sibling)) + if (ts_node_is_null(prev_sibling) && ts_node_is_null(next_sibling)) { - edit_range.min = (i64)ts_node_start_byte(prev_sibling); - edit_range.max = (i64)ts_node_end_byte(next_sibling); - query_count = 2; - queries[0] = tree_sitter_query_init( - app, - state.buffer_id, - state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], - prev_sibling - ); - queries[1] = tree_sitter_query_init( - app, - state.buffer_id, - state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], - next_sibling - ); - } - else if (!ts_node_is_null(prev_sibling)) - { - edit_range.min = (i64)ts_node_start_byte(prev_sibling); - edit_range.max = (i64)ts_node_end_byte(prev_sibling); - queries[0] = tree_sitter_query_init( - app, - state.buffer_id, - state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], - prev_sibling - ); - } - else if (!ts_node_is_null(next_sibling)) - { - edit_range.min = (i64)ts_node_start_byte(next_sibling); - edit_range.max = (i64)ts_node_end_byte(next_sibling); - queries[0] = tree_sitter_query_init( - app, - state.buffer_id, - state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], - next_sibling - ); - } - else - { - edit_range.min = (i64)ts_node_start_byte(root); - edit_range.max = (i64)ts_node_end_byte(root); - queries[0] = tree_sitter_query_init( + queries[query_count++] = tree_sitter_query_init( app, state.buffer_id, state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], root ); } + else + { + if (!ts_node_is_null(prev_sibling)) + { + queries[query_count++] = tree_sitter_query_init( + app, + state.buffer_id, + state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], + prev_sibling + ); + } + if (!ts_node_is_null(next_sibling)) + { + queries[query_count++] = tree_sitter_query_init( + app, + state.buffer_id, + state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], + next_sibling + ); + } + } } else { @@ -887,18 +863,20 @@ tree_sitter_code_index_update_tick(Application_Links* app) node_at = parent; parent = ts_node_parent(node_at); } - edit_range.min = (i64)ts_node_start_byte(node_at); - edit_range.max = (i64)ts_node_end_byte(node_at); - queries[0] = tree_sitter_query_init( + queries[query_count++] = tree_sitter_query_init( app, state.buffer_id, state.language->queries.ptr[Tree_Sitter_Language_Query_Tags], node_at ); } + + Range_i64 edit_range; + edit_range.min = (i64)ts_node_start_byte(queries[0].first_node); + edit_range.max = (i64)ts_node_end_byte(queries[query_count-1].first_node); tree_data->last_update_node_range = edit_range; // TODO(PS): TEMP - remove me once debugging is done - // Free Scope Delimiters & Notes that fall within old_range + // Free Scope Delimiters that fall within old_range Code_Index_Scope_Delim* delim = state.index->scope_delim_list.first; Code_Index_Scope_Delim* delim_before_range = 0; Code_Index_Scope_Delim* after_range = 0; @@ -924,6 +902,7 @@ tree_sitter_code_index_update_tick(Application_Links* app) } state.last_delim = delim_before_range; + // Free Scope Notes that fall within old_range Code_Index_Note* note = state.index->note_list.first; Code_Index_Note* prev = 0; Code_Index_Note* note_before_range = 0;