diff --git a/custom/4coder_default_hooks.cpp b/custom/4coder_default_hooks.cpp index 20accb25..a82de309 100644 --- a/custom/4coder_default_hooks.cpp +++ b/custom/4coder_default_hooks.cpp @@ -594,7 +594,8 @@ do_full_lex_async__inner(Async_Context *actx, Buffer_ID buffer_id){ Managed_Scope scope = buffer_get_managed_scope(app, buffer_id); if (scope != 0){ Base_Allocator *allocator = managed_scope_allocator(app, scope); - Token_Array *tokens_ptr = scope_attachment(app, scope, attachment_tokens, Token_Array); + Token_Array *tokens_ptr = scope_attachment(app, scope, attachment_tokens, + Token_Array); base_free(allocator, tokens_ptr->tokens); Token_Array tokens = {}; @@ -620,8 +621,6 @@ BUFFER_HOOK_SIG(default_begin_buffer){ ProfileScope(app, "begin buffer"); b32 treat_as_code = false; - b32 lex_without_strings = false; - (void)(lex_without_strings); String_Const_u8_Array extensions = global_config.code_exts; @@ -664,7 +663,6 @@ BUFFER_HOOK_SIG(default_begin_buffer){ init_language_rust(app); } parse_context_id = parse_context_language_rust; - lex_without_strings = true; } if (string_match(ext, string_u8_litexpr("cpp")) || @@ -777,12 +775,12 @@ BUFFER_HOOK_SIG(default_file_save){ } BUFFER_EDIT_RANGE_SIG(default_buffer_edit_range){ - // buffer_id, range, text + // buffer_id, new_range, text ProfileScope(app, "default edit range"); - Interval_i64 replace_range = Ii64(range.first, range.first + text.size); - i64 insert_size = range_size(range); - i64 text_shift = replace_range_shift(replace_range, insert_size); + Interval_i64 old_range = Ii64(new_range.first, new_range.first + text.size); + i64 insert_size = range_size(new_range); + i64 text_shift = replace_range_shift(old_range, insert_size); Scratch_Block scratch(app); @@ -795,15 +793,18 @@ BUFFER_EDIT_RANGE_SIG(default_buffer_edit_range){ else{ Token_Array *ptr = scope_attachment(app, scope, attachment_tokens, Token_Array); if (ptr != 0 && ptr->tokens != 0){ - i64 token_index_first = token_relex_first(ptr, range.first, 1); - i64 token_index_resync_guess = token_relex_resync(ptr, range.one_past_last, 16); + i64 token_index_first = token_relex_first(ptr, old_range.first, 1); + i64 token_index_resync_guess = + token_relex_resync(ptr, old_range.one_past_last, 16); Token *token_first = ptr->tokens + token_index_first; Token *token_resync = ptr->tokens + token_index_resync_guess; - Interval_i64 relex_range = Ii64(token_first->pos, - token_resync->pos + token_resync->size + text_shift); - String_Const_u8 partial_text = push_buffer_range(app, scratch, buffer_id, relex_range); + Range_i64 relex_range = + Ii64(token_first->pos, + token_resync->pos + token_resync->size + text_shift); + String_Const_u8 partial_text = push_buffer_range(app, scratch, buffer_id, + relex_range); Token_List relex_list = lex_full_input_cpp(scratch, partial_text); if (relex_range.one_past_last < buffer_get_size(app, buffer_id)){ diff --git a/custom/4coder_token.cpp b/custom/4coder_token.cpp index df4198d4..dd4bb111 100644 --- a/custom/4coder_token.cpp +++ b/custom/4coder_token.cpp @@ -637,7 +637,7 @@ internal i64 token_relex_resync(Token_Array *tokens, i64 edit_range_first, i64 look_ahead_repeats){ Token_Iterator_Array it = token_iterator_pos(0, tokens, edit_range_first); b32 good_status = true; - for (i64 i = 0; i < look_ahead_repeats && good_status; i += 1){ + for (i64 i = 0; (i < look_ahead_repeats) && good_status; i += 1){ good_status = token_it_inc(&it); } if (good_status){ diff --git a/custom/4coder_types.h b/custom/4coder_types.h index 0d0c40fd..5141b186 100644 --- a/custom/4coder_types.h +++ b/custom/4coder_types.h @@ -564,9 +564,10 @@ typedef i32 Buffer_Hook_Function(Application_Links *app, Buffer_ID buffer_id); #define BUFFER_HOOK_SIG(name) i32 name(Application_Links *app, Buffer_ID buffer_id) typedef i32 Buffer_Edit_Range_Function(Application_Links *app, Buffer_ID buffer_id, - Range_i64 range, String_Const_u8 text); -#define BUFFER_EDIT_RANGE_SIG(name) i32 name(Application_Links *app, Buffer_ID buffer_id,\ -Interval_i64 range, String_Const_u8 text) + Range_i64 new_range, String_Const_u8 text); +#define BUFFER_EDIT_RANGE_SIG(name) \ +i32 name(Application_Links *app, Buffer_ID buffer_id, \ +Interval_i64 new_range, String_Const_u8 text) typedef Vec2_f32 Delta_Rule_Function(Vec2_f32 pending, b32 is_new_target, f32 dt, void *data); #define DELTA_RULE_SIG(name) \