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;
|
int query_count = 0;
|
||||||
Tree_Sitter_Query_Cursor queries[2];
|
Tree_Sitter_Query_Cursor queries[2];
|
||||||
Range_i64 edit_range;
|
|
||||||
|
|
||||||
if (would_reparse_entire_file)
|
if (would_reparse_entire_file)
|
||||||
{
|
{
|
||||||
TSNode prev_sibling = {0};
|
TSNode prev_sibling = {0};
|
||||||
TSNode next_sibling = {0};
|
TSNode next_sibling = {0};
|
||||||
|
|
||||||
u32 child_count = ts_node_child_count(root);
|
u32 child_count = ts_node_child_count(root);
|
||||||
for (u32 i = 0; i < child_count; i++)
|
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);
|
queries[query_count++] = tree_sitter_query_init(
|
||||||
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(
|
|
||||||
app,
|
app,
|
||||||
state.buffer_id,
|
state.buffer_id,
|
||||||
state.language->queries.ptr[Tree_Sitter_Language_Query_Tags],
|
state.language->queries.ptr[Tree_Sitter_Language_Query_Tags],
|
||||||
root
|
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
|
else
|
||||||
{
|
{
|
||||||
|
@ -887,18 +863,20 @@ tree_sitter_code_index_update_tick(Application_Links* app)
|
||||||
node_at = parent;
|
node_at = parent;
|
||||||
parent = ts_node_parent(node_at);
|
parent = ts_node_parent(node_at);
|
||||||
}
|
}
|
||||||
edit_range.min = (i64)ts_node_start_byte(node_at);
|
queries[query_count++] = tree_sitter_query_init(
|
||||||
edit_range.max = (i64)ts_node_end_byte(node_at);
|
|
||||||
queries[0] = tree_sitter_query_init(
|
|
||||||
app,
|
app,
|
||||||
state.buffer_id,
|
state.buffer_id,
|
||||||
state.language->queries.ptr[Tree_Sitter_Language_Query_Tags],
|
state.language->queries.ptr[Tree_Sitter_Language_Query_Tags],
|
||||||
node_at
|
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
|
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 = state.index->scope_delim_list.first;
|
||||||
Code_Index_Scope_Delim* delim_before_range = 0;
|
Code_Index_Scope_Delim* delim_before_range = 0;
|
||||||
Code_Index_Scope_Delim* after_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;
|
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* note = state.index->note_list.first;
|
||||||
Code_Index_Note* prev = 0;
|
Code_Index_Note* prev = 0;
|
||||||
Code_Index_Note* note_before_range = 0;
|
Code_Index_Note* note_before_range = 0;
|
||||||
|
|
Loading…
Reference in New Issue