bugfixes for new autocompletion system

This commit is contained in:
Ryan Fleury
2024-05-14 07:50:13 -07:00
parent 362bcbcda5
commit 6c200a59cd
+42 -4
View File
@@ -8838,6 +8838,15 @@ df_view_rule_autocomp_lister_params_from_input_cursor(Arena *arena, String8 stri
if(str8_match(token_string, str8_lit(")"), 0) || str8_match(token_string, str8_lit("]"), 0) || str8_match(token_string, str8_lit("}"), 0)) if(str8_match(token_string, str8_lit(")"), 0) || str8_match(token_string, str8_lit("]"), 0) || str8_match(token_string, str8_lit("}"), 0))
{ {
paren_nest -= 1; paren_nest -= 1;
for(;colon_nest > paren_nest; colon_nest -= 1)
{
if(last_step != 0)
{
DescendStep *step = last_step;
DLLRemove(first_step, last_step, step);
SLLStackPush(free_step, step);
}
}
if(paren_nest == 0 && last_step != 0) if(paren_nest == 0 && last_step != 0)
{ {
DescendStep *step = last_step; DescendStep *step = last_step;
@@ -8868,9 +8877,12 @@ df_view_rule_autocomp_lister_params_from_input_cursor(Arena *arena, String8 stri
{ {
for(;colon_nest > paren_nest; colon_nest -= 1) for(;colon_nest > paren_nest; colon_nest -= 1)
{ {
DescendStep *step = last_step; if(last_step != 0)
DLLRemove(first_step, last_step, step); {
SLLStackPush(free_step, step); DescendStep *step = last_step;
DLLRemove(first_step, last_step, step);
SLLStackPush(free_step, step);
}
} }
} }
} }
@@ -12577,7 +12589,10 @@ df_line_edit(DF_LineEditFlags flags, S32 depth, FuzzyMatchRangeList *matches, Tx
fstr->color.w *= 0.5f; fstr->color.w *= 0.5f;
fstr->size = ui_top_font_size(); fstr->size = ui_top_font_size();
autocomp_fstr_n->next = prev_n ? prev_n->next : 0; autocomp_fstr_n->next = prev_n ? prev_n->next : 0;
if(prev_n != 0) {prev_n->next = autocomp_fstr_n;} if(prev_n != 0)
{
prev_n->next = autocomp_fstr_n;
}
if(prev_n == 0) if(prev_n == 0)
{ {
code_fancy_strings.first = code_fancy_strings.last = autocomp_fstr_n; code_fancy_strings.first = code_fancy_strings.last = autocomp_fstr_n;
@@ -12588,6 +12603,29 @@ df_line_edit(DF_LineEditFlags flags, S32 depth, FuzzyMatchRangeList *matches, Tx
} }
code_fancy_strings.node_count += 1; code_fancy_strings.node_count += 1;
code_fancy_strings.total_size += autocomplete_hint_string.size; code_fancy_strings.total_size += autocomplete_hint_string.size;
if(prev_n != 0 && cursor_off - off < prev_n->v.string.size)
{
String8 full_string = prev_n->v.string;
U64 chop_amt = full_string.size - (cursor_off - off);
prev_n->v.string = str8_chop(full_string, chop_amt);
code_fancy_strings.total_size -= chop_amt;
if(chop_amt != 0)
{
String8 post_cursor = str8_skip(full_string, cursor_off - off);
D_FancyStringNode *post_fstr_n = push_array(scratch.arena, D_FancyStringNode, 1);
D_FancyString *post_fstr = &post_fstr_n->v;
MemoryCopyStruct(post_fstr, &prev_n->v);
post_fstr->string = post_cursor;
if(autocomp_fstr_n->next == 0)
{
code_fancy_strings.last = post_fstr_n;
}
post_fstr_n->next = autocomp_fstr_n->next;
autocomp_fstr_n->next = post_fstr_n;
code_fancy_strings.node_count += 1;
code_fancy_strings.total_size += post_cursor.size;
}
}
} }
} }
ui_box_equip_display_fancy_strings(editstr_box, &code_fancy_strings); ui_box_equip_display_fancy_strings(editstr_box, &code_fancy_strings);