fixed the issues with the async lexer (i think)
This commit is contained in:
parent
0b14cd8ba1
commit
822f228dc9
|
@ -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)){
|
||||
|
|
|
@ -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){
|
||||
|
|
|
@ -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) \
|
||||
|
|
Loading…
Reference in New Issue