Fix scope commands

master
Allen Webster 2019-09-29 19:49:49 -07:00
parent 1d1ae13d82
commit 6d2a12dd9d
2 changed files with 9 additions and 8 deletions

View File

@ -39,7 +39,7 @@ find_scope_top(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 flag
b32 success = false; b32 success = false;
Token_Array array = get_token_array_from_buffer(app, buffer); Token_Array array = get_token_array_from_buffer(app, buffer);
if (array.tokens != 0){ if (array.tokens != 0){
i64 position = 0; i64 position = start_pos;
i64 token_index = token_index_from_pos(&array, start_pos); i64 token_index = token_index_from_pos(&array, start_pos);
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index); Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
b32 good_status = true; b32 good_status = true;
@ -73,7 +73,7 @@ find_scope_top(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 flag
good_status = token_it_dec(&it); good_status = token_it_dec(&it);
} }
finished:; finished:;
*end_pos_out = start_pos; *end_pos_out = position;
} }
return(success); return(success);
} }
@ -83,7 +83,7 @@ find_scope_bottom(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 f
b32 success = false; b32 success = false;
Token_Array array = get_token_array_from_buffer(app, buffer); Token_Array array = get_token_array_from_buffer(app, buffer);
if (array.tokens != 0){ if (array.tokens != 0){
i64 position = 0; i64 position = start_pos;
i64 token_index = token_index_from_pos(&array, start_pos); i64 token_index = token_index_from_pos(&array, start_pos);
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index); Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
token_it_inc(&it); token_it_inc(&it);
@ -118,7 +118,7 @@ find_scope_bottom(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 f
good_status = token_it_inc(&it); good_status = token_it_inc(&it);
} }
finished:; finished:;
*end_pos_out = start_pos; *end_pos_out = position;
} }
return(success); return(success);
} }
@ -128,7 +128,7 @@ find_next_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 fla
b32 success = false; b32 success = false;
Token_Array array = get_token_array_from_buffer(app, buffer); Token_Array array = get_token_array_from_buffer(app, buffer);
if (array.tokens != 0){ if (array.tokens != 0){
i64 position = 0; i64 position = start_pos;
i64 token_index = token_index_from_pos(&array, start_pos); i64 token_index = token_index_from_pos(&array, start_pos);
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index); Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
token_it_inc(&it); token_it_inc(&it);
@ -182,7 +182,7 @@ find_next_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 fla
} }
} }
finished:; finished:;
*end_pos_out = start_pos; *end_pos_out = position;
} }
return(success); return(success);
} }
@ -192,7 +192,7 @@ find_prev_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 fla
b32 success = false; b32 success = false;
Token_Array array = get_token_array_from_buffer(app, buffer); Token_Array array = get_token_array_from_buffer(app, buffer);
if (array.tokens != 0){ if (array.tokens != 0){
i64 position = 0; i64 position = start_pos;
i64 token_index = token_index_from_pos(&array, start_pos); i64 token_index = token_index_from_pos(&array, start_pos);
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index); Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
if (HasFlag(flags, FindScope_NextSibling)){ if (HasFlag(flags, FindScope_NextSibling)){

View File

@ -552,10 +552,11 @@ buffer_cursor_from_line_col(Gap_Buffer *buffer, i64 line, i64 col){
i64 size = buffer_size(buffer); i64 size = buffer_size(buffer);
i64 line_index = line - 1; i64 line_index = line - 1;
i64 line_count = buffer_line_count(buffer); i64 line_count = buffer_line_count(buffer);
line_index = clamp(0, line_index, line_count); line_index = clamp(0, line_index, line_count - 1);
i64 this_start = buffer->line_starts[line_index]; i64 this_start = buffer->line_starts[line_index];
i64 max_col = (buffer->line_starts[line_index + 1] - this_start); i64 max_col = (buffer->line_starts[line_index + 1] - this_start);
max_col = clamp_bot(1, max_col);
if (col < 0){ if (col < 0){
if (-col > max_col){ if (-col > max_col){