Clean up re-parse range identification logic
This commit is contained in:
parent
6d77862b78
commit
a92e364e37
|
@ -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;
|
||||
|
|
Loading…
Reference in New Issue