token based commands are all either recovered or discarded
parent
89063990a2
commit
c254ca750f
|
@ -421,7 +421,7 @@ get_indent_lines_whole_tokens(Application_Links *app, Buffer_ID buffer, Token_Ar
|
|||
|
||||
for (;line_start > 1;){
|
||||
i64 line_start_pos = get_line_start_pos(app, buffer, line_start);
|
||||
Token *token = get_first_token_from_pos(tokens, line_start_pos);
|
||||
Token *token = token_from_pos(&tokens, line_start_pos);
|
||||
if (token != 0 && token->pos < line_start_pos){
|
||||
line_start = get_line_number_from_pos(app, buffer, token->pos);
|
||||
}
|
||||
|
@ -434,7 +434,7 @@ get_indent_lines_whole_tokens(Application_Links *app, Buffer_ID buffer, Token_Ar
|
|||
|
||||
for (;line_end < line_count;){
|
||||
i64 next_line_start_pos = get_line_start_pos(app, buffer, line_end + 1);
|
||||
Token *token = get_first_token_from_pos(tokens, next_line_start_pos);
|
||||
Token *token = token_from_pos(&tokens, next_line_start_pos);
|
||||
if (token != 0 && token->pos < next_line_start_pos){
|
||||
line_end = get_line_number_from_pos(app, buffer, token->pos + token->size);
|
||||
}
|
||||
|
|
|
@ -692,51 +692,12 @@ CUSTOM_DOC("Toggles the visibility status of the current view's filebar.")
|
|||
view_set_setting(app, view, ViewSetting_ShowFileBar, !value);
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(toggle_line_wrap)
|
||||
CUSTOM_DOC("Toggles the current buffer's line wrapping status.")
|
||||
{
|
||||
NotImplemented;
|
||||
#if 0
|
||||
View_ID view = get_active_view(app, AccessProtected);
|
||||
Buffer_ID buffer = view_get_buffer(app, view, AccessProtected);
|
||||
b32 wrapped;
|
||||
buffer_get_setting(app, buffer, BufferSetting_WrapLine, &wrapped);
|
||||
buffer_set_setting(app, buffer, BufferSetting_WrapLine, !wrapped);
|
||||
#endif
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(toggle_fps_meter)
|
||||
CUSTOM_DOC("Toggles the visibility of the FPS performance meter")
|
||||
{
|
||||
show_fps_hud = !show_fps_hud;
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(increase_line_wrap)
|
||||
CUSTOM_DOC("Increases the current buffer's width for line wrapping.")
|
||||
{
|
||||
NotImplemented;
|
||||
#if 0
|
||||
View_ID view = get_active_view(app, AccessProtected);
|
||||
Buffer_ID buffer = view_get_buffer(app, view, AccessProtected);
|
||||
i32 wrap = 0;
|
||||
buffer_get_setting(app, buffer, BufferSetting_WrapPosition, &wrap);
|
||||
buffer_set_setting(app, buffer, BufferSetting_WrapPosition, wrap + 10);
|
||||
#endif
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(decrease_line_wrap)
|
||||
CUSTOM_DOC("Decrases the current buffer's width for line wrapping.")
|
||||
{
|
||||
NotImplemented;
|
||||
#if 0
|
||||
View_ID view = get_active_view(app, AccessProtected);
|
||||
Buffer_ID buffer = view_get_buffer(app, view, AccessProtected);
|
||||
i32 wrap = 0;
|
||||
buffer_get_setting(app, buffer, BufferSetting_WrapPosition, &wrap);
|
||||
buffer_set_setting(app, buffer, BufferSetting_WrapPosition, wrap - 10);
|
||||
#endif
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(increase_face_size)
|
||||
CUSTOM_DOC("Increase the size of the face used by the current buffer.")
|
||||
{
|
||||
|
|
|
@ -4,6 +4,8 @@
|
|||
|
||||
// TOP
|
||||
|
||||
// TODO(allen): move all out of experimental
|
||||
|
||||
#include "4coder_default_include.cpp"
|
||||
#include "4coder_miblo_numbers.cpp"
|
||||
|
||||
|
@ -183,339 +185,6 @@ CUSTOM_COMMAND_SIG(multi_paste_interactive_quick){
|
|||
}
|
||||
}
|
||||
|
||||
// NOTE(allen): Some basic code manipulation ideas.
|
||||
|
||||
CUSTOM_COMMAND_SIG(rename_parameter)
|
||||
CUSTOM_DOC("If the cursor is found to be on the name of a function parameter in the signature of a function definition, all occurences within the scope of the function will be replaced with a new provided string.")
|
||||
{
|
||||
NotImplemented;
|
||||
#if 0
|
||||
View_ID view = get_active_view(app, AccessOpen);
|
||||
Buffer_ID buffer = view_get_buffer(app, view, AccessOpen);
|
||||
i64 cursor_pos = view_get_cursor_pos(app, view);
|
||||
|
||||
Arena *scratch = context_get_arena(app);
|
||||
Temp_Memory temp = begin_temp(scratch);
|
||||
|
||||
Cpp_Get_Token_Result result = {};
|
||||
if (get_token_from_pos(app, buffer, cursor_pos, &result)){
|
||||
if (!result.in_whitespace_after_token){
|
||||
static const i32 stream_space_size = 512;
|
||||
Token stream_space[stream_space_size];
|
||||
Stream_Tokens_DEP stream = {};
|
||||
|
||||
if (init_stream_tokens(&stream, app, buffer, result.token_index, stream_space, stream_space_size)){
|
||||
i32 token_index = result.token_index;
|
||||
Token token = stream.tokens[token_index];
|
||||
|
||||
if (token.type == CPP_TOKEN_IDENTIFIER){
|
||||
Token original_token = token;
|
||||
String_Const_u8 old_lexeme = push_token_lexeme(app, scratch, buffer, token);
|
||||
|
||||
i32 proc_body_found = 0;
|
||||
b32 still_looping = 0;
|
||||
|
||||
++token_index;
|
||||
do{
|
||||
for (; token_index < stream.end; ++token_index){
|
||||
Token *token_ptr = stream.tokens + token_index;
|
||||
switch (token_ptr->type){
|
||||
case CPP_TOKEN_BRACE_OPEN:
|
||||
{
|
||||
proc_body_found = 1;
|
||||
goto doublebreak;
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_BRACE_CLOSE:
|
||||
case CPP_TOKEN_PARENTHESE_OPEN:
|
||||
{
|
||||
goto doublebreak;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
still_looping = forward_stream_tokens(&stream);
|
||||
}while(still_looping);
|
||||
doublebreak:;
|
||||
|
||||
if (proc_body_found){
|
||||
|
||||
u8 with_space[1024];
|
||||
Query_Bar with = {};
|
||||
with.prompt = string_u8_litexpr("New Name: ");
|
||||
with.string = SCu8(with_space, (umem)0);
|
||||
with.string_capacity = sizeof(with_space);
|
||||
if (!query_user_string(app, &with)) return;
|
||||
|
||||
String_Const_u8 replace_string = with.string;
|
||||
|
||||
// TODO(allen): fix this up to work with arena better
|
||||
i32 edit_max = Thousand(100);
|
||||
Buffer_Edit *edits = push_array(scratch, Buffer_Edit, edit_max);
|
||||
i32 edit_count = 0;
|
||||
|
||||
if (edit_max >= 1){
|
||||
Buffer_Edit edit = {};
|
||||
edit.str_start = 0;
|
||||
edit.len = (i32)replace_string.size;
|
||||
edit.start = original_token.start;
|
||||
edit.end = original_token.start + original_token.size;
|
||||
|
||||
edits[edit_count] = edit;
|
||||
edit_count += 1;
|
||||
}
|
||||
|
||||
i32 nesting_level = 0;
|
||||
i32 closed_correctly = 0;
|
||||
++token_index;
|
||||
still_looping = 0;
|
||||
do{
|
||||
for (; token_index < stream.end; ++token_index){
|
||||
Token *token_ptr = stream.tokens + token_index;
|
||||
switch (token_ptr->type){
|
||||
case CPP_TOKEN_IDENTIFIER:
|
||||
{
|
||||
if (token_ptr->size == old_lexeme.size){
|
||||
String_Const_u8 other_lexeme = push_token_lexeme(app, scratch, buffer, *token_ptr);
|
||||
if (string_match(old_lexeme, other_lexeme)){
|
||||
Buffer_Edit edit = {};
|
||||
edit.str_start = 0;
|
||||
edit.len = (i32)replace_string.size;
|
||||
edit.start = token_ptr->start;
|
||||
edit.end = token_ptr->start + token_ptr->size;
|
||||
if (edit_count < edit_max){
|
||||
edits[edit_count] = edit;
|
||||
edit_count += 1;
|
||||
}
|
||||
else{
|
||||
goto doublebreak2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_BRACE_OPEN:
|
||||
{
|
||||
++nesting_level;
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_BRACE_CLOSE:
|
||||
{
|
||||
if (nesting_level == 0){
|
||||
closed_correctly = 1;
|
||||
goto doublebreak2;
|
||||
}
|
||||
else{
|
||||
--nesting_level;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
}
|
||||
still_looping = forward_stream_tokens(&stream);
|
||||
}while(still_looping);
|
||||
doublebreak2:;
|
||||
|
||||
if (closed_correctly){
|
||||
buffer_batch_edit(app, buffer, (char*)replace_string.str, edits, edit_count);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end_temp(temp);
|
||||
#endif
|
||||
}
|
||||
|
||||
typedef u32 Write_Explicit_Enum_Values_Mode;
|
||||
enum{
|
||||
WriteExplicitEnumValues_Integers,
|
||||
WriteExplicitEnumValues_Flags,
|
||||
};
|
||||
|
||||
static void
|
||||
write_explicit_enum_values_parameters(Application_Links *app, Write_Explicit_Enum_Values_Mode mode){
|
||||
NotImplemented;
|
||||
#if 0
|
||||
View_ID view = get_active_view(app, AccessOpen);
|
||||
Buffer_ID buffer = view_get_buffer(app, view, AccessOpen);
|
||||
|
||||
i64 pos = view_get_cursor_pos(app, view);
|
||||
|
||||
Arena *scratch = context_get_arena(app);
|
||||
Temp_Memory temp = begin_temp(scratch);
|
||||
|
||||
Cpp_Get_Token_Result result = {};
|
||||
if (get_token_from_pos(app, buffer, pos, &result)){
|
||||
if (!result.in_whitespace_after_token){
|
||||
Token stream_space[32];
|
||||
Stream_Tokens_DEP stream = {};
|
||||
|
||||
if (init_stream_tokens(&stream, app, buffer, result.token_index, stream_space, 32)){
|
||||
i32 token_index = result.token_index;
|
||||
Token token = stream.tokens[token_index];
|
||||
|
||||
if (token.type == CPP_TOKEN_BRACE_OPEN){
|
||||
++token_index;
|
||||
|
||||
i32 seeker_index = token_index;
|
||||
Stream_Tokens_DEP seek_stream = begin_temp_stream_token(&stream);
|
||||
|
||||
b32 closed_correctly = false;
|
||||
b32 still_looping = false;
|
||||
do{
|
||||
for (; seeker_index < stream.end; ++seeker_index){
|
||||
Token *token_seeker = stream.tokens + seeker_index;
|
||||
switch (token_seeker->type){
|
||||
case CPP_TOKEN_BRACE_CLOSE:
|
||||
closed_correctly = true;
|
||||
goto finished_seek;
|
||||
|
||||
case CPP_TOKEN_BRACE_OPEN:
|
||||
goto finished_seek;
|
||||
}
|
||||
}
|
||||
still_looping = forward_stream_tokens(&stream);
|
||||
}while(still_looping);
|
||||
finished_seek:;
|
||||
end_temp_stream_token(&stream, seek_stream);
|
||||
|
||||
if (closed_correctly){
|
||||
i32 count_estimate = 1 + (seeker_index - token_index)/2;
|
||||
|
||||
i32 edit_count = 0;
|
||||
Buffer_Edit *edits = push_array(scratch, Buffer_Edit, count_estimate);
|
||||
|
||||
List_String_Const_char list = {};
|
||||
|
||||
closed_correctly = false;
|
||||
still_looping = false;
|
||||
u32 value = 0;
|
||||
if (mode == WriteExplicitEnumValues_Flags){
|
||||
value = 1;
|
||||
}
|
||||
|
||||
do{
|
||||
for (;token_index < stream.end; ++token_index){
|
||||
Token *token_ptr = stream.tokens + token_index;
|
||||
switch (token_ptr->type){
|
||||
case CPP_TOKEN_IDENTIFIER:
|
||||
{
|
||||
i32 edit_start = token_ptr->start + token_ptr->size;
|
||||
i32 edit_stop = edit_start;
|
||||
|
||||
i32 edit_is_good = 0;
|
||||
++token_index;
|
||||
do{
|
||||
for (; token_index < stream.end; ++token_index){
|
||||
token_ptr = stream.tokens + token_index;
|
||||
switch (token_ptr->type){
|
||||
case CPP_TOKEN_COMMA:
|
||||
{
|
||||
edit_stop = token_ptr->start;
|
||||
edit_is_good = 1;
|
||||
goto good_edit;
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_BRACE_CLOSE:
|
||||
{
|
||||
edit_stop = token_ptr->start;
|
||||
closed_correctly = 1;
|
||||
edit_is_good = 1;
|
||||
goto good_edit;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
still_looping = forward_stream_tokens(&stream);
|
||||
}while(still_looping);
|
||||
|
||||
good_edit:;
|
||||
if (edit_is_good){
|
||||
i32 str_pos = (i32)(list.total_size);
|
||||
|
||||
string_list_pushf(scratch, &list, " = %d", value);
|
||||
if (closed_correctly){
|
||||
string_list_push_lit(scratch, &list, "\n");
|
||||
}
|
||||
|
||||
switch (mode){
|
||||
case WriteExplicitEnumValues_Integers:
|
||||
{
|
||||
++value;
|
||||
}break;
|
||||
case WriteExplicitEnumValues_Flags:
|
||||
{
|
||||
if (value < (1 << 31)){
|
||||
value <<= 1;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
|
||||
i32 str_size = (i32)(list.total_size) - str_pos;
|
||||
|
||||
Buffer_Edit edit;
|
||||
edit.str_start = str_pos;
|
||||
edit.len = str_size;
|
||||
edit.start = edit_start;
|
||||
edit.end = edit_stop;
|
||||
|
||||
Assert(edit_count < count_estimate);
|
||||
edits[edit_count] = edit;
|
||||
++edit_count;
|
||||
}
|
||||
if (!edit_is_good || closed_correctly){
|
||||
goto finished;
|
||||
}
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_BRACE_CLOSE:
|
||||
{
|
||||
closed_correctly = 1;
|
||||
goto finished;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
|
||||
still_looping = forward_stream_tokens(&stream);
|
||||
}while(still_looping);
|
||||
|
||||
finished:;
|
||||
if (closed_correctly){
|
||||
String_Const_char text = string_list_flatten(scratch, list);
|
||||
buffer_batch_edit(app, buffer, text.str, edits, edit_count);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end_temp(temp);
|
||||
#endif
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(write_explicit_enum_values)
|
||||
CUSTOM_DOC("If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in sequentially starting from zero. Existing values are overwritten.")
|
||||
{
|
||||
write_explicit_enum_values_parameters(app, WriteExplicitEnumValues_Integers);
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(write_explicit_enum_flags)
|
||||
CUSTOM_DOC("If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in to give each a unique power of 2 value, starting from 1. Existing values are overwritten.")
|
||||
{
|
||||
write_explicit_enum_values_parameters(app, WriteExplicitEnumValues_Flags);
|
||||
}
|
||||
|
||||
//
|
||||
// Rename All
|
||||
//
|
||||
|
||||
struct Replace_Target{
|
||||
Replace_Target *next;
|
||||
Buffer_ID buffer_id;
|
||||
i32 start_pos;
|
||||
};
|
||||
|
||||
extern "C" i32
|
||||
get_bindings(void *data, i32 size){
|
||||
Bind_Helper context_ = begin_bind_helper(data, size);
|
||||
|
@ -559,12 +228,6 @@ get_bindings(void *data, i32 size){
|
|||
bind(context, 'A', MDFR_CTRL, replace_in_all_buffers);
|
||||
end_map(context);
|
||||
|
||||
begin_map(context, default_code_map);
|
||||
bind(context, key_insert, MDFR_CTRL, write_explicit_enum_values);
|
||||
bind(context, key_insert, MDFR_CTRL|MDFR_SHIFT, write_explicit_enum_flags);
|
||||
bind(context, 'p', MDFR_ALT, rename_parameter);
|
||||
end_map(context);
|
||||
|
||||
return(end_bind_helper(context));
|
||||
}
|
||||
|
||||
|
|
|
@ -9,24 +9,23 @@
|
|||
// through. Once I build a real parser this should become almost just as easy as
|
||||
// iterating tokens is now.
|
||||
//
|
||||
// NOTE(allen|b4.1.0): This routine assumes C++ sub_kinds in the tokens of the buffer.
|
||||
|
||||
static Get_Positions_Results
|
||||
get_function_positions(Application_Links *app, Buffer_ID buffer, i32 first_token_index, Function_Positions *positions_array, i32 positions_max){
|
||||
get_function_positions(Application_Links *app, Buffer_ID buffer, i64 first_token_index, Function_Positions *positions_array, i64 positions_max){
|
||||
Get_Positions_Results result = {};
|
||||
|
||||
NotImplemented;
|
||||
#if 0
|
||||
Token_Range token_range = buffer_get_token_range(app, buffer);
|
||||
if (token_range.first != 0){
|
||||
Token_Iterator token_it = make_token_iterator(token_range, first_token_index);
|
||||
Token_Array array = get_token_array_from_buffer(app, buffer);
|
||||
if (array.tokens != 0){
|
||||
Token_Iterator_Array it = token_iterator_index(buffer, &array, first_token_index);
|
||||
|
||||
i32 nest_level = 0;
|
||||
i32 paren_nest_level = 0;
|
||||
|
||||
Token *first_paren = 0;
|
||||
i32 first_paren_index = 0;
|
||||
i32 first_paren_position = 0;
|
||||
i32 last_paren_index = 0;
|
||||
Token_Iterator_Array first_paren_it = {};
|
||||
i64 first_paren_index = 0;
|
||||
i64 first_paren_position = 0;
|
||||
i64 last_paren_index = 0;
|
||||
|
||||
// Look for the next token at global scope that might need to be printed.
|
||||
mode1:
|
||||
|
@ -35,82 +34,88 @@ get_function_positions(Application_Links *app, Buffer_ID buffer, i32 first_token
|
|||
first_paren_index = 0;
|
||||
first_paren_position = 0;
|
||||
last_paren_index = 0;
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_next(&token_it)){
|
||||
if (!(token->flags & CPP_TFLAG_PP_BODY)){
|
||||
switch (token->type){
|
||||
case CPP_TOKEN_BRACE_OPEN:
|
||||
for (;;){
|
||||
Token *token = token_it_read(&it);
|
||||
if (!HasFlag(token->flags, TokenBaseFlag_PreprocessorBody)){
|
||||
switch (token->sub_kind){
|
||||
case TokenCppKind_BraceOp:
|
||||
{
|
||||
++nest_level;
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_BRACE_CLOSE:
|
||||
case TokenCppKind_BraceCl:
|
||||
{
|
||||
if (nest_level > 0){
|
||||
--nest_level;
|
||||
}
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_PARENTHESE_OPEN:
|
||||
case TokenCppKind_ParenOp:
|
||||
{
|
||||
if (nest_level == 0){
|
||||
first_paren = token;
|
||||
first_paren_index = token_iterator_current_index(&token_it);
|
||||
first_paren_position = token->start;
|
||||
first_paren_it = it;
|
||||
first_paren_index = token_it_index(&it);
|
||||
first_paren_position = token->pos;
|
||||
goto paren_mode1;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!token_it_inc(&it)){
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
// Look for a closing parenthese to mark the end of a function signature.
|
||||
paren_mode1:
|
||||
paren_nest_level = 0;
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_next(&token_it)){
|
||||
if (!(token->flags & CPP_TFLAG_PP_BODY)){
|
||||
switch (token->type){
|
||||
case CPP_TOKEN_PARENTHESE_OPEN:
|
||||
for (;;){
|
||||
Token *token = token_it_read(&it);
|
||||
if (!HasFlag(token->flags, TokenBaseFlag_PreprocessorBody)){
|
||||
switch (token->sub_kind){
|
||||
case TokenCppKind_ParenOp:
|
||||
{
|
||||
++paren_nest_level;
|
||||
}break;
|
||||
|
||||
case CPP_TOKEN_PARENTHESE_CLOSE:
|
||||
case TokenCppKind_ParenCl:
|
||||
{
|
||||
--paren_nest_level;
|
||||
if (paren_nest_level == 0){
|
||||
last_paren_index = token_iterator_current_index(&token_it);
|
||||
last_paren_index = token_it_index(&it);
|
||||
goto paren_mode2;
|
||||
}
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!token_it_inc(&it)){
|
||||
goto end;
|
||||
}
|
||||
}
|
||||
|
||||
// Look backwards from an open parenthese to find the start of a function signature.
|
||||
paren_mode2:
|
||||
{
|
||||
Token *restore_point = token_iterator_current(&token_it);
|
||||
|
||||
token_iterator_set(&token_it, first_paren);
|
||||
i32 signature_start_index = 0;
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_prev(&token_it)){
|
||||
if ((token->flags & CPP_TFLAG_PP_BODY) || (token->flags & CPP_TFLAG_PP_DIRECTIVE) ||
|
||||
token->type == CPP_TOKEN_BRACE_CLOSE || token->type == CPP_TOKEN_SEMICOLON || token->type == CPP_TOKEN_PARENTHESE_CLOSE){
|
||||
token_iterator_goto_next(&token_it);
|
||||
signature_start_index = token_iterator_current_index(&token_it);
|
||||
if (signature_start_index == -1){
|
||||
Token_Iterator_Array restore_point = it;
|
||||
it = first_paren_it;
|
||||
i64 signature_start_index = 0;
|
||||
for (;;){
|
||||
Token *token = token_it_read(&it);
|
||||
if (HasFlag(token->flags, TokenBaseFlag_PreprocessorBody) ||
|
||||
token->sub_kind == TokenCppKind_BraceCl ||
|
||||
token->sub_kind == TokenCppKind_Semicolon ||
|
||||
token->sub_kind == TokenCppKind_ParenCl){
|
||||
if (!token_it_inc(&it)){
|
||||
signature_start_index = first_paren_index;
|
||||
}
|
||||
else{
|
||||
signature_start_index = token_it_index(&it);
|
||||
}
|
||||
goto paren_mode2_done;
|
||||
}
|
||||
if (!token_it_dec(&it)){
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// When this loop ends by going all the way back to the beginning set the
|
||||
|
@ -119,16 +124,16 @@ get_function_positions(Application_Links *app, Buffer_ID buffer, i32 first_token
|
|||
|
||||
paren_mode2_done:;
|
||||
{
|
||||
Function_Positions positions;
|
||||
Function_Positions positions = {};
|
||||
positions.sig_start_index = signature_start_index;
|
||||
positions.sig_end_index = last_paren_index;
|
||||
positions.open_paren_pos = first_paren_position;
|
||||
positions_array[result.positions_count++] = positions;
|
||||
}
|
||||
|
||||
token_iterator_set(&token_it, restore_point);
|
||||
it = restore_point;
|
||||
if (result.positions_count >= positions_max){
|
||||
result.next_token_index = token_iterator_current_index(&token_it);
|
||||
result.next_token_index = token_it_index(&it);
|
||||
result.still_looping = true;
|
||||
goto end;
|
||||
}
|
||||
|
@ -136,52 +141,44 @@ get_function_positions(Application_Links *app, Buffer_ID buffer, i32 first_token
|
|||
goto mode1;
|
||||
}
|
||||
end:;
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
return(result);
|
||||
}
|
||||
|
||||
static void
|
||||
print_positions_buffered(Application_Links *app, Buffer_Insertion *out, Buffer_ID buffer, Function_Positions *positions_array, i32 positions_count){
|
||||
NotImplemented;
|
||||
#if 0
|
||||
Arena *scratch = context_get_arena(app);
|
||||
Temp_Memory temp = begin_temp(scratch);
|
||||
print_positions_buffered(Application_Links *app, Buffer_Insertion *out, Buffer_ID buffer, Function_Positions *positions_array, i64 positions_count){
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
String_Const_u8 buffer_name = push_buffer_unique_name(app, scratch, buffer);
|
||||
|
||||
for (i32 i = 0; i < positions_count; ++i){
|
||||
Function_Positions *positions = &positions_array[i];
|
||||
|
||||
i32 start_index = positions->sig_start_index;
|
||||
i32 end_index = positions->sig_end_index;
|
||||
i64 start_index = positions->sig_start_index;
|
||||
i64 end_index = positions->sig_end_index;
|
||||
i64 open_paren_pos = positions->open_paren_pos;
|
||||
i64 line_number = get_line_number_from_pos(app, buffer, open_paren_pos);
|
||||
|
||||
Assert(end_index > start_index);
|
||||
|
||||
Token_Range token_range = buffer_get_token_range(app, buffer);
|
||||
if (token_range.first != 0){
|
||||
Token_Array array = get_token_array_from_buffer(app, buffer);
|
||||
if (array.tokens != 0){
|
||||
insertf(out, "%.*s:%lld: ", string_expand(buffer_name), line_number);
|
||||
|
||||
Token prev_token = {};
|
||||
Token_Iterator token_it = make_token_iterator(token_range, start_index);
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0 && token_iterator_current_index(&token_it) <= end_index;
|
||||
token = token_iterator_goto_next_raw(&token_it)){
|
||||
if ((token->flags & CPP_TFLAG_PP_BODY) == 0 && token->type != CPP_TOKEN_COMMENT){
|
||||
if ((prev_token.type == CPP_TOKEN_IDENTIFIER ||
|
||||
prev_token.type == CPP_TOKEN_STAR ||
|
||||
prev_token.type == CPP_TOKEN_COMMA ||
|
||||
(prev_token.flags & CPP_TFLAG_IS_KEYWORD) != 0
|
||||
) &&
|
||||
!(token->type == CPP_TOKEN_PARENTHESE_OPEN ||
|
||||
token->type == CPP_TOKEN_PARENTHESE_CLOSE ||
|
||||
token->type == CPP_TOKEN_COMMA
|
||||
)
|
||||
){
|
||||
Token_Iterator_Array it = token_iterator_index(buffer, &array, start_index);
|
||||
for (;;){
|
||||
Token *token = token_it_read(&it);
|
||||
if (!HasFlag(token->flags, TokenBaseFlag_PreprocessorBody) &&
|
||||
token->kind != TokenBaseKind_Comment){
|
||||
if ((prev_token.sub_kind == TokenCppKind_Identifier ||
|
||||
prev_token.sub_kind == TokenCppKind_Star ||
|
||||
prev_token.sub_kind == TokenCppKind_Comma ||
|
||||
prev_token.kind == TokenBaseKind_Keyword) &&
|
||||
!(token->sub_kind == TokenCppKind_ParenOp ||
|
||||
token->sub_kind == TokenCppKind_ParenCl ||
|
||||
token->sub_kind == TokenCppKind_Comma)){
|
||||
insertc(out, ' ');
|
||||
}
|
||||
|
||||
|
@ -192,21 +189,22 @@ print_positions_buffered(Application_Links *app, Buffer_Insertion *out, Buffer_I
|
|||
|
||||
prev_token = *token;
|
||||
}
|
||||
if (!token_it_inc(&it)){
|
||||
break;
|
||||
}
|
||||
i64 index = token_it_index(&it);
|
||||
if (index > end_index){
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
insertc(out, '\n');
|
||||
}
|
||||
}
|
||||
|
||||
end_temp(temp);
|
||||
#endif
|
||||
}
|
||||
|
||||
static void
|
||||
list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){
|
||||
|
||||
NotImplemented;
|
||||
#if 0
|
||||
// TODO(allen): Use create or switch to buffer and clear here?
|
||||
String_Const_u8 decls_name = string_u8_litexpr("*decls*");
|
||||
Buffer_ID decls_buffer = get_buffer_by_name(app, decls_name, AccessAll);
|
||||
|
@ -214,18 +212,17 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){
|
|||
decls_buffer = create_buffer(app, decls_name, BufferCreate_AlwaysNew);
|
||||
buffer_set_setting(app, decls_buffer, BufferSetting_Unimportant, true);
|
||||
buffer_set_setting(app, decls_buffer, BufferSetting_ReadOnly, true);
|
||||
buffer_set_setting(app, decls_buffer, BufferSetting_WrapLine, false);
|
||||
//buffer_set_setting(app, decls_buffer, BufferSetting_WrapLine, false);
|
||||
}
|
||||
else{
|
||||
clear_buffer(app, decls_buffer);
|
||||
buffer_send_end_signal(app, decls_buffer);
|
||||
}
|
||||
|
||||
Arena *scratch = context_get_arena(app);
|
||||
Temp_Memory temp = begin_temp(scratch);
|
||||
Scratch_Block scratch(app);
|
||||
|
||||
// TODO(allen): rewrite get_function_positions to allocate on arena
|
||||
i32 positions_max = (4<<10)/sizeof(Function_Positions);
|
||||
i32 positions_max = KB(4)/sizeof(Function_Positions);
|
||||
Function_Positions *positions_array = push_array(scratch, Function_Positions, positions_max);
|
||||
|
||||
Cursor insertion_cursor = make_cursor(push_array(scratch, u8, KB(256)), KB(256));
|
||||
|
@ -239,13 +236,14 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){
|
|||
buffer = optional_target_buffer;
|
||||
}
|
||||
|
||||
if (buffer_tokens_are_ready(app, buffer)){
|
||||
i32 token_index = 0;
|
||||
Token_Array array = get_token_array_from_buffer(app, buffer);
|
||||
if (array.tokens != 0){
|
||||
i64 token_index = 0;
|
||||
b32 still_looping = false;
|
||||
do{
|
||||
Get_Positions_Results get_positions_results = get_function_positions(app, buffer, token_index, positions_array, positions_max);
|
||||
|
||||
i32 positions_count = get_positions_results.positions_count;
|
||||
i64 positions_count = get_positions_results.positions_count;
|
||||
token_index = get_positions_results.next_token_index;
|
||||
still_looping = get_positions_results.still_looping;
|
||||
|
||||
|
@ -256,9 +254,6 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){
|
|||
break;
|
||||
}
|
||||
}
|
||||
else{
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
end_buffer_insertion(&out);
|
||||
|
@ -267,10 +262,6 @@ list_all_functions(Application_Links *app, Buffer_ID optional_target_buffer){
|
|||
view_set_buffer(app, view, decls_buffer, 0);
|
||||
|
||||
lock_jump_buffer(app, decls_name);
|
||||
|
||||
end_temp(temp);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
CUSTOM_COMMAND_SIG(list_all_functions_current_buffer)
|
||||
|
|
|
@ -8,14 +8,14 @@
|
|||
#define FCODER_FUNCTION_LIST_H
|
||||
|
||||
struct Function_Positions{
|
||||
i32 sig_start_index;
|
||||
i32 sig_end_index;
|
||||
i32 open_paren_pos;
|
||||
i64 sig_start_index;
|
||||
i64 sig_end_index;
|
||||
i64 open_paren_pos;
|
||||
};
|
||||
|
||||
struct Get_Positions_Results{
|
||||
i32 positions_count;
|
||||
i32 next_token_index;
|
||||
i64 positions_count;
|
||||
i64 next_token_index;
|
||||
b32 still_looping;
|
||||
};
|
||||
|
||||
|
|
|
@ -2,14 +2,14 @@
|
|||
#define command_id(c) (fcoder_metacmd_ID_##c)
|
||||
#define command_metadata(c) (&fcoder_metacmd_table[command_id(c)])
|
||||
#define command_metadata_by_id(id) (&fcoder_metacmd_table[id])
|
||||
#define command_one_past_last_id 232
|
||||
#define command_one_past_last_id 226
|
||||
#if defined(CUSTOM_COMMAND_SIG)
|
||||
#define PROC_LINKS(x,y) x
|
||||
#else
|
||||
#define PROC_LINKS(x,y) y
|
||||
#endif
|
||||
#if defined(CUSTOM_COMMAND_SIG)
|
||||
CUSTOM_COMMAND_SIG(write_explicit_enum_flags);
|
||||
CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp_minute);
|
||||
CUSTOM_COMMAND_SIG(seek_beginning_of_textual_line);
|
||||
CUSTOM_COMMAND_SIG(seek_end_of_textual_line);
|
||||
CUSTOM_COMMAND_SIG(seek_beginning_of_line);
|
||||
|
@ -84,10 +84,7 @@ CUSTOM_COMMAND_SIG(hide_scrollbar);
|
|||
CUSTOM_COMMAND_SIG(show_filebar);
|
||||
CUSTOM_COMMAND_SIG(hide_filebar);
|
||||
CUSTOM_COMMAND_SIG(toggle_filebar);
|
||||
CUSTOM_COMMAND_SIG(toggle_line_wrap);
|
||||
CUSTOM_COMMAND_SIG(toggle_fps_meter);
|
||||
CUSTOM_COMMAND_SIG(increase_line_wrap);
|
||||
CUSTOM_COMMAND_SIG(decrease_line_wrap);
|
||||
CUSTOM_COMMAND_SIG(increase_face_size);
|
||||
CUSTOM_COMMAND_SIG(decrease_face_size);
|
||||
CUSTOM_COMMAND_SIG(mouse_wheel_change_face_size);
|
||||
|
@ -238,9 +235,6 @@ CUSTOM_COMMAND_SIG(miblo_decrement_basic);
|
|||
CUSTOM_COMMAND_SIG(miblo_increment_time_stamp);
|
||||
CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp);
|
||||
CUSTOM_COMMAND_SIG(miblo_increment_time_stamp_minute);
|
||||
CUSTOM_COMMAND_SIG(miblo_decrement_time_stamp_minute);
|
||||
CUSTOM_COMMAND_SIG(rename_parameter);
|
||||
CUSTOM_COMMAND_SIG(write_explicit_enum_values);
|
||||
#endif
|
||||
struct Command_Metadata{
|
||||
PROC_LINKS(Custom_Command_Function, void) *proc;
|
||||
|
@ -252,8 +246,8 @@ char *source_name;
|
|||
i32 source_name_len;
|
||||
i32 line_number;
|
||||
};
|
||||
static Command_Metadata fcoder_metacmd_table[232] = {
|
||||
{ PROC_LINKS(write_explicit_enum_flags, 0), "write_explicit_enum_flags", 25, "If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in to give each a unique power of 2 value, starting from 1. Existing values are overwritten.", 194, "w:\\4ed\\code\\4coder_experiments.cpp", 34, 503 },
|
||||
static Command_Metadata fcoder_metacmd_table[226] = {
|
||||
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\4coder_miblo_numbers.cpp", 36, 249 },
|
||||
{ PROC_LINKS(seek_beginning_of_textual_line, 0), "seek_beginning_of_textual_line", 30, "Seeks the cursor to the beginning of the line across all text.", 62, "w:\\4ed\\code\\4coder_seek.cpp", 27, 29 },
|
||||
{ PROC_LINKS(seek_end_of_textual_line, 0), "seek_end_of_textual_line", 24, "Seeks the cursor to the end of the line across all text.", 56, "w:\\4ed\\code\\4coder_seek.cpp", 27, 35 },
|
||||
{ PROC_LINKS(seek_beginning_of_line, 0), "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "w:\\4ed\\code\\4coder_seek.cpp", 27, 41 },
|
||||
|
@ -328,51 +322,48 @@ static Command_Metadata fcoder_metacmd_table[232] = {
|
|||
{ PROC_LINKS(show_filebar, 0), "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 672 },
|
||||
{ PROC_LINKS(hide_filebar, 0), "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 679 },
|
||||
{ PROC_LINKS(toggle_filebar, 0), "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 686 },
|
||||
{ PROC_LINKS(toggle_line_wrap, 0), "toggle_line_wrap", 16, "Toggles the current buffer's line wrapping status.", 50, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 695 },
|
||||
{ PROC_LINKS(toggle_fps_meter, 0), "toggle_fps_meter", 16, "Toggles the visibility of the FPS performance meter", 51, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 708 },
|
||||
{ PROC_LINKS(increase_line_wrap, 0), "increase_line_wrap", 18, "Increases the current buffer's width for line wrapping.", 55, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 714 },
|
||||
{ PROC_LINKS(decrease_line_wrap, 0), "decrease_line_wrap", 18, "Decrases the current buffer's width for line wrapping.", 54, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 727 },
|
||||
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 740 },
|
||||
{ PROC_LINKS(decrease_face_size, 0), "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 751 },
|
||||
{ PROC_LINKS(mouse_wheel_change_face_size, 0), "mouse_wheel_change_face_size", 28, "Reads the state of the mouse wheel and uses it to either increase or decrease the face size.", 92, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 762 },
|
||||
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 779 },
|
||||
{ PROC_LINKS(toggle_show_whitespace, 0), "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 789 },
|
||||
{ PROC_LINKS(toggle_line_numbers, 0), "toggle_line_numbers", 19, "Toggles the left margin line numbers.", 37, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 798 },
|
||||
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 804 },
|
||||
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 812 },
|
||||
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 820 },
|
||||
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 828 },
|
||||
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1039 },
|
||||
{ PROC_LINKS(reverse_search, 0), "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1045 },
|
||||
{ PROC_LINKS(search_identifier, 0), "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1051 },
|
||||
{ PROC_LINKS(reverse_search_identifier, 0), "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1062 },
|
||||
{ PROC_LINKS(replace_in_range, 0), "replace_in_range", 16, "Queries the user for a needle and string. Replaces all occurences of needle with string in the range between cursor and the mark in the active buffer.", 150, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1113 },
|
||||
{ PROC_LINKS(replace_in_buffer, 0), "replace_in_buffer", 17, "Queries the user for a needle and string. Replaces all occurences of needle with string in the active buffer.", 109, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1122 },
|
||||
{ PROC_LINKS(replace_in_all_buffers, 0), "replace_in_all_buffers", 22, "Queries the user for a needle and string. Replaces all occurences of needle with string in all editable buffers.", 112, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1131 },
|
||||
{ PROC_LINKS(query_replace, 0), "query_replace", 13, "Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.", 120, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1219 },
|
||||
{ PROC_LINKS(query_replace_identifier, 0), "query_replace_identifier", 24, "Queries the user for a string, and incrementally replace every occurence of the word or token found at the cursor with the specified string.", 140, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1239 },
|
||||
{ PROC_LINKS(query_replace_selection, 0), "query_replace_selection", 23, "Queries the user for a string, and incrementally replace every occurence of the string found in the selected range with the specified string.", 141, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1255 },
|
||||
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1290 },
|
||||
{ PROC_LINKS(delete_file_query, 0), "delete_file_query", 17, "Deletes the file of the current buffer if 4coder has the appropriate access rights. Will ask the user for confirmation first.", 125, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1315 },
|
||||
{ PROC_LINKS(save_to_query, 0), "save_to_query", 13, "Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.", 110, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1353 },
|
||||
{ PROC_LINKS(rename_file_query, 0), "rename_file_query", 17, "Queries the user for a new name and renames the file of the current buffer, altering the buffer's name too.", 107, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1388 },
|
||||
{ PROC_LINKS(make_directory_query, 0), "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1428 },
|
||||
{ PROC_LINKS(move_line_up, 0), "move_line_up", 12, "Swaps the line under the cursor with the line above it, and moves the cursor up with it.", 88, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1461 },
|
||||
{ PROC_LINKS(move_line_down, 0), "move_line_down", 14, "Swaps the line under the cursor with the line below it, and moves the cursor down with it.", 90, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1467 },
|
||||
{ PROC_LINKS(duplicate_line, 0), "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1473 },
|
||||
{ PROC_LINKS(delete_line, 0), "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1487 },
|
||||
{ PROC_LINKS(open_file_in_quotes, 0), "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1552 },
|
||||
{ PROC_LINKS(open_matching_file_cpp, 0), "open_matching_file_cpp", 22, "If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.", 110, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1584 },
|
||||
{ PROC_LINKS(view_buffer_other_panel, 0), "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1597 },
|
||||
{ PROC_LINKS(swap_buffers_between_panels, 0), "swap_buffers_between_panels", 27, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1609 },
|
||||
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1645 },
|
||||
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1653 },
|
||||
{ PROC_LINKS(reopen, 0), "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1665 },
|
||||
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1723 },
|
||||
{ PROC_LINKS(redo, 0), "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1736 },
|
||||
{ PROC_LINKS(undo_all_buffers, 0), "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1750 },
|
||||
{ PROC_LINKS(redo_all_buffers, 0), "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1824 },
|
||||
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1927 },
|
||||
{ PROC_LINKS(toggle_fps_meter, 0), "toggle_fps_meter", 16, "Toggles the visibility of the FPS performance meter", 51, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 695 },
|
||||
{ PROC_LINKS(increase_face_size, 0), "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 701 },
|
||||
{ PROC_LINKS(decrease_face_size, 0), "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 712 },
|
||||
{ PROC_LINKS(mouse_wheel_change_face_size, 0), "mouse_wheel_change_face_size", 28, "Reads the state of the mouse wheel and uses it to either increase or decrease the face size.", 92, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 723 },
|
||||
{ PROC_LINKS(toggle_virtual_whitespace, 0), "toggle_virtual_whitespace", 25, "Toggles the current buffer's virtual whitespace status.", 55, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 740 },
|
||||
{ PROC_LINKS(toggle_show_whitespace, 0), "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 750 },
|
||||
{ PROC_LINKS(toggle_line_numbers, 0), "toggle_line_numbers", 19, "Toggles the left margin line numbers.", 37, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 759 },
|
||||
{ PROC_LINKS(eol_dosify, 0), "eol_dosify", 10, "Puts the buffer in DOS line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 765 },
|
||||
{ PROC_LINKS(eol_nixify, 0), "eol_nixify", 10, "Puts the buffer in NIX line ending mode.", 40, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 773 },
|
||||
{ PROC_LINKS(exit_4coder, 0), "exit_4coder", 11, "Attempts to close 4coder.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 781 },
|
||||
{ PROC_LINKS(goto_line, 0), "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 789 },
|
||||
{ PROC_LINKS(search, 0), "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1000 },
|
||||
{ PROC_LINKS(reverse_search, 0), "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1006 },
|
||||
{ PROC_LINKS(search_identifier, 0), "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1012 },
|
||||
{ PROC_LINKS(reverse_search_identifier, 0), "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1023 },
|
||||
{ PROC_LINKS(replace_in_range, 0), "replace_in_range", 16, "Queries the user for a needle and string. Replaces all occurences of needle with string in the range between cursor and the mark in the active buffer.", 150, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1074 },
|
||||
{ PROC_LINKS(replace_in_buffer, 0), "replace_in_buffer", 17, "Queries the user for a needle and string. Replaces all occurences of needle with string in the active buffer.", 109, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1083 },
|
||||
{ PROC_LINKS(replace_in_all_buffers, 0), "replace_in_all_buffers", 22, "Queries the user for a needle and string. Replaces all occurences of needle with string in all editable buffers.", 112, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1092 },
|
||||
{ PROC_LINKS(query_replace, 0), "query_replace", 13, "Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.", 120, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1180 },
|
||||
{ PROC_LINKS(query_replace_identifier, 0), "query_replace_identifier", 24, "Queries the user for a string, and incrementally replace every occurence of the word or token found at the cursor with the specified string.", 140, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1200 },
|
||||
{ PROC_LINKS(query_replace_selection, 0), "query_replace_selection", 23, "Queries the user for a string, and incrementally replace every occurence of the string found in the selected range with the specified string.", 141, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1216 },
|
||||
{ PROC_LINKS(save_all_dirty_buffers, 0), "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1251 },
|
||||
{ PROC_LINKS(delete_file_query, 0), "delete_file_query", 17, "Deletes the file of the current buffer if 4coder has the appropriate access rights. Will ask the user for confirmation first.", 125, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1276 },
|
||||
{ PROC_LINKS(save_to_query, 0), "save_to_query", 13, "Queries the user for a file name and saves the contents of the current buffer, altering the buffer's name too.", 110, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1314 },
|
||||
{ PROC_LINKS(rename_file_query, 0), "rename_file_query", 17, "Queries the user for a new name and renames the file of the current buffer, altering the buffer's name too.", 107, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1349 },
|
||||
{ PROC_LINKS(make_directory_query, 0), "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1389 },
|
||||
{ PROC_LINKS(move_line_up, 0), "move_line_up", 12, "Swaps the line under the cursor with the line above it, and moves the cursor up with it.", 88, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1422 },
|
||||
{ PROC_LINKS(move_line_down, 0), "move_line_down", 14, "Swaps the line under the cursor with the line below it, and moves the cursor down with it.", 90, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1428 },
|
||||
{ PROC_LINKS(duplicate_line, 0), "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1434 },
|
||||
{ PROC_LINKS(delete_line, 0), "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1448 },
|
||||
{ PROC_LINKS(open_file_in_quotes, 0), "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1513 },
|
||||
{ PROC_LINKS(open_matching_file_cpp, 0), "open_matching_file_cpp", 22, "If the current file is a *.cpp or *.h, attempts to open the corresponding *.h or *.cpp file in the other view.", 110, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1545 },
|
||||
{ PROC_LINKS(view_buffer_other_panel, 0), "view_buffer_other_panel", 23, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1558 },
|
||||
{ PROC_LINKS(swap_buffers_between_panels, 0), "swap_buffers_between_panels", 27, "Set the other non-active panel to view the buffer that the active panel views, and switch to that panel.", 104, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1570 },
|
||||
{ PROC_LINKS(kill_buffer, 0), "kill_buffer", 11, "Kills the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1606 },
|
||||
{ PROC_LINKS(save, 0), "save", 4, "Saves the current buffer.", 25, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1614 },
|
||||
{ PROC_LINKS(reopen, 0), "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1626 },
|
||||
{ PROC_LINKS(undo, 0), "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1684 },
|
||||
{ PROC_LINKS(redo, 0), "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1697 },
|
||||
{ PROC_LINKS(undo_all_buffers, 0), "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1711 },
|
||||
{ PROC_LINKS(redo_all_buffers, 0), "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1785 },
|
||||
{ PROC_LINKS(open_in_other, 0), "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "w:\\4ed\\code\\4coder_base_commands.cpp", 36, 1888 },
|
||||
{ PROC_LINKS(lister__quit, 0), "lister__quit", 12, "A lister mode command that quits the list without executing any actions.", 72, "w:\\4ed\\code\\4coder_lists.cpp", 28, 8 },
|
||||
{ PROC_LINKS(lister__activate, 0), "lister__activate", 16, "A lister mode command that activates the list's action on the highlighted item.", 79, "w:\\4ed\\code\\4coder_lists.cpp", 28, 15 },
|
||||
{ PROC_LINKS(lister__write_character, 0), "lister__write_character", 23, "A lister mode command that dispatches to the lister's write character handler.", 78, "w:\\4ed\\code\\4coder_lists.cpp", 28, 30 },
|
||||
|
@ -452,15 +443,15 @@ static Command_Metadata fcoder_metacmd_table[232] = {
|
|||
{ PROC_LINKS(setup_build_sh, 0), "setup_build_sh", 14, "Queries the user for several configuration options and initializes a new build shell script.", 92, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1319 },
|
||||
{ PROC_LINKS(setup_build_bat_and_sh, 0), "setup_build_bat_and_sh", 22, "Queries the user for several configuration options and initializes a new build batch script.", 92, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1325 },
|
||||
{ PROC_LINKS(project_command_lister, 0), "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "w:\\4ed\\code\\4coder_project_commands.cpp", 39, 1340 },
|
||||
{ PROC_LINKS(list_all_functions_current_buffer, 0), "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 276 },
|
||||
{ PROC_LINKS(list_all_functions_current_buffer_lister, 0), "list_all_functions_current_buffer_lister", 40, "Creates a lister of locations that look like function definitions and declarations in the buffer.", 97, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 286 },
|
||||
{ PROC_LINKS(list_all_functions_all_buffers, 0), "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 298 },
|
||||
{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 304 },
|
||||
{ PROC_LINKS(select_surrounding_scope, 0), "select_surrounding_scope", 24, "Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.", 107, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 348 },
|
||||
{ PROC_LINKS(select_next_scope_absolute, 0), "select_next_scope_absolute", 26, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 363 },
|
||||
{ PROC_LINKS(select_prev_scope_absolute, 0), "select_prev_scope_absolute", 26, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 382 },
|
||||
{ PROC_LINKS(place_in_scope, 0), "place_in_scope", 14, "Wraps the code contained in the range between cursor and mark with a new curly brace scope.", 91, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 456 },
|
||||
{ PROC_LINKS(delete_current_scope, 0), "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 462 },
|
||||
{ PROC_LINKS(list_all_functions_current_buffer, 0), "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 267 },
|
||||
{ PROC_LINKS(list_all_functions_current_buffer_lister, 0), "list_all_functions_current_buffer_lister", 40, "Creates a lister of locations that look like function definitions and declarations in the buffer.", 97, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 277 },
|
||||
{ PROC_LINKS(list_all_functions_all_buffers, 0), "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 289 },
|
||||
{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "w:\\4ed\\code\\4coder_function_list.cpp", 36, 295 },
|
||||
{ PROC_LINKS(select_surrounding_scope, 0), "select_surrounding_scope", 24, "Finds the scope enclosed by '{' '}' surrounding the cursor and puts the cursor and mark on the '{' and '}'.", 107, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 319 },
|
||||
{ PROC_LINKS(select_next_scope_absolute, 0), "select_next_scope_absolute", 26, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 334 },
|
||||
{ PROC_LINKS(select_prev_scope_absolute, 0), "select_prev_scope_absolute", 26, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 353 },
|
||||
{ PROC_LINKS(place_in_scope, 0), "place_in_scope", 14, "Wraps the code contained in the range between cursor and mark with a new curly brace scope.", 91, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 427 },
|
||||
{ PROC_LINKS(delete_current_scope, 0), "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "w:\\4ed\\code\\4coder_scope_commands.cpp", 37, 433 },
|
||||
{ PROC_LINKS(open_long_braces, 0), "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 46 },
|
||||
{ PROC_LINKS(open_long_braces_semicolon, 0), "open_long_braces_semicolon", 26, "At the cursor, insert a '{' and '};' separated by a blank line.", 63, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 54 },
|
||||
{ PROC_LINKS(open_long_braces_break, 0), "open_long_braces_break", 22, "At the cursor, insert a '{' and '}break;' separated by a blank line.", 68, "w:\\4ed\\code\\4coder_combined_write_commands.cpp", 46, 62 },
|
||||
|
@ -482,11 +473,8 @@ static Command_Metadata fcoder_metacmd_table[232] = {
|
|||
{ PROC_LINKS(miblo_increment_time_stamp, 0), "miblo_increment_time_stamp", 26, "Increment a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\4coder_miblo_numbers.cpp", 36, 231 },
|
||||
{ PROC_LINKS(miblo_decrement_time_stamp, 0), "miblo_decrement_time_stamp", 26, "Decrement a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\4coder_miblo_numbers.cpp", 36, 237 },
|
||||
{ PROC_LINKS(miblo_increment_time_stamp_minute, 0), "miblo_increment_time_stamp_minute", 33, "Increment a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\4coder_miblo_numbers.cpp", 36, 243 },
|
||||
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), "miblo_decrement_time_stamp_minute", 33, "Decrement a time stamp under the cursor by one minute. (format [m]m:ss or h:mm:ss", 81, "w:\\4ed\\code\\4coder_miblo_numbers.cpp", 36, 249 },
|
||||
{ PROC_LINKS(rename_parameter, 0), "rename_parameter", 16, "If the cursor is found to be on the name of a function parameter in the signature of a function definition, all occurences within the scope of the function will be replaced with a new provided string.", 200, "w:\\4ed\\code\\4coder_experiments.cpp", 34, 188 },
|
||||
{ PROC_LINKS(write_explicit_enum_values, 0), "write_explicit_enum_values", 26, "If the cursor is found to be on the '{' of an enum definition, the values of the enum will be filled in sequentially starting from zero. Existing values are overwritten.", 170, "w:\\4ed\\code\\4coder_experiments.cpp", 34, 497 },
|
||||
};
|
||||
static i32 fcoder_metacmd_ID_write_explicit_enum_flags = 0;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 0;
|
||||
static i32 fcoder_metacmd_ID_seek_beginning_of_textual_line = 1;
|
||||
static i32 fcoder_metacmd_ID_seek_end_of_textual_line = 2;
|
||||
static i32 fcoder_metacmd_ID_seek_beginning_of_line = 3;
|
||||
|
@ -561,161 +549,155 @@ static i32 fcoder_metacmd_ID_hide_scrollbar = 71;
|
|||
static i32 fcoder_metacmd_ID_show_filebar = 72;
|
||||
static i32 fcoder_metacmd_ID_hide_filebar = 73;
|
||||
static i32 fcoder_metacmd_ID_toggle_filebar = 74;
|
||||
static i32 fcoder_metacmd_ID_toggle_line_wrap = 75;
|
||||
static i32 fcoder_metacmd_ID_toggle_fps_meter = 76;
|
||||
static i32 fcoder_metacmd_ID_increase_line_wrap = 77;
|
||||
static i32 fcoder_metacmd_ID_decrease_line_wrap = 78;
|
||||
static i32 fcoder_metacmd_ID_increase_face_size = 79;
|
||||
static i32 fcoder_metacmd_ID_decrease_face_size = 80;
|
||||
static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 81;
|
||||
static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 82;
|
||||
static i32 fcoder_metacmd_ID_toggle_show_whitespace = 83;
|
||||
static i32 fcoder_metacmd_ID_toggle_line_numbers = 84;
|
||||
static i32 fcoder_metacmd_ID_eol_dosify = 85;
|
||||
static i32 fcoder_metacmd_ID_eol_nixify = 86;
|
||||
static i32 fcoder_metacmd_ID_exit_4coder = 87;
|
||||
static i32 fcoder_metacmd_ID_goto_line = 88;
|
||||
static i32 fcoder_metacmd_ID_search = 89;
|
||||
static i32 fcoder_metacmd_ID_reverse_search = 90;
|
||||
static i32 fcoder_metacmd_ID_search_identifier = 91;
|
||||
static i32 fcoder_metacmd_ID_reverse_search_identifier = 92;
|
||||
static i32 fcoder_metacmd_ID_replace_in_range = 93;
|
||||
static i32 fcoder_metacmd_ID_replace_in_buffer = 94;
|
||||
static i32 fcoder_metacmd_ID_replace_in_all_buffers = 95;
|
||||
static i32 fcoder_metacmd_ID_query_replace = 96;
|
||||
static i32 fcoder_metacmd_ID_query_replace_identifier = 97;
|
||||
static i32 fcoder_metacmd_ID_query_replace_selection = 98;
|
||||
static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 99;
|
||||
static i32 fcoder_metacmd_ID_delete_file_query = 100;
|
||||
static i32 fcoder_metacmd_ID_save_to_query = 101;
|
||||
static i32 fcoder_metacmd_ID_rename_file_query = 102;
|
||||
static i32 fcoder_metacmd_ID_make_directory_query = 103;
|
||||
static i32 fcoder_metacmd_ID_move_line_up = 104;
|
||||
static i32 fcoder_metacmd_ID_move_line_down = 105;
|
||||
static i32 fcoder_metacmd_ID_duplicate_line = 106;
|
||||
static i32 fcoder_metacmd_ID_delete_line = 107;
|
||||
static i32 fcoder_metacmd_ID_open_file_in_quotes = 108;
|
||||
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 109;
|
||||
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 110;
|
||||
static i32 fcoder_metacmd_ID_swap_buffers_between_panels = 111;
|
||||
static i32 fcoder_metacmd_ID_kill_buffer = 112;
|
||||
static i32 fcoder_metacmd_ID_save = 113;
|
||||
static i32 fcoder_metacmd_ID_reopen = 114;
|
||||
static i32 fcoder_metacmd_ID_undo = 115;
|
||||
static i32 fcoder_metacmd_ID_redo = 116;
|
||||
static i32 fcoder_metacmd_ID_undo_all_buffers = 117;
|
||||
static i32 fcoder_metacmd_ID_redo_all_buffers = 118;
|
||||
static i32 fcoder_metacmd_ID_open_in_other = 119;
|
||||
static i32 fcoder_metacmd_ID_lister__quit = 120;
|
||||
static i32 fcoder_metacmd_ID_lister__activate = 121;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character = 122;
|
||||
static i32 fcoder_metacmd_ID_lister__backspace_text_field = 123;
|
||||
static i32 fcoder_metacmd_ID_lister__move_up = 124;
|
||||
static i32 fcoder_metacmd_ID_lister__move_down = 125;
|
||||
static i32 fcoder_metacmd_ID_lister__wheel_scroll = 126;
|
||||
static i32 fcoder_metacmd_ID_lister__mouse_press = 127;
|
||||
static i32 fcoder_metacmd_ID_lister__mouse_release = 128;
|
||||
static i32 fcoder_metacmd_ID_lister__repaint = 129;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character__default = 130;
|
||||
static i32 fcoder_metacmd_ID_lister__backspace_text_field__default = 131;
|
||||
static i32 fcoder_metacmd_ID_lister__move_up__default = 132;
|
||||
static i32 fcoder_metacmd_ID_lister__move_down__default = 133;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character__file_path = 134;
|
||||
static i32 fcoder_metacmd_ID_lister__backspace_text_field__file_path = 135;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character__fixed_list = 136;
|
||||
static i32 fcoder_metacmd_ID_interactive_switch_buffer = 137;
|
||||
static i32 fcoder_metacmd_ID_interactive_kill_buffer = 138;
|
||||
static i32 fcoder_metacmd_ID_interactive_open_or_new = 139;
|
||||
static i32 fcoder_metacmd_ID_interactive_new = 140;
|
||||
static i32 fcoder_metacmd_ID_interactive_open = 141;
|
||||
static i32 fcoder_metacmd_ID_command_lister = 142;
|
||||
static i32 fcoder_metacmd_ID_auto_tab_whole_file = 143;
|
||||
static i32 fcoder_metacmd_ID_auto_tab_line_at_cursor = 144;
|
||||
static i32 fcoder_metacmd_ID_auto_tab_range = 145;
|
||||
static i32 fcoder_metacmd_ID_write_and_auto_tab = 146;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations = 147;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations = 148;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 149;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 150;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 151;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 152;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 153;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 154;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 155;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 156;
|
||||
static i32 fcoder_metacmd_ID_word_complete = 157;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor = 158;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor_same_panel = 159;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump = 160;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump = 161;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump_no_skips = 162;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 163;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump = 164;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump_same_panel_sticky = 165;
|
||||
static i32 fcoder_metacmd_ID_newline_or_goto_position = 166;
|
||||
static i32 fcoder_metacmd_ID_newline_or_goto_position_same_panel = 167;
|
||||
static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 168;
|
||||
static i32 fcoder_metacmd_ID_log_graph__escape = 169;
|
||||
static i32 fcoder_metacmd_ID_log_graph__scroll_wheel = 170;
|
||||
static i32 fcoder_metacmd_ID_log_graph__page_up = 171;
|
||||
static i32 fcoder_metacmd_ID_log_graph__page_down = 172;
|
||||
static i32 fcoder_metacmd_ID_log_graph__click_select_event = 173;
|
||||
static i32 fcoder_metacmd_ID_log_graph__click_jump_to_event_source = 174;
|
||||
static i32 fcoder_metacmd_ID_show_the_log_graph = 175;
|
||||
static i32 fcoder_metacmd_ID_copy = 176;
|
||||
static i32 fcoder_metacmd_ID_cut = 177;
|
||||
static i32 fcoder_metacmd_ID_paste = 178;
|
||||
static i32 fcoder_metacmd_ID_paste_next = 179;
|
||||
static i32 fcoder_metacmd_ID_paste_and_indent = 180;
|
||||
static i32 fcoder_metacmd_ID_paste_next_and_indent = 181;
|
||||
static i32 fcoder_metacmd_ID_execute_previous_cli = 182;
|
||||
static i32 fcoder_metacmd_ID_execute_any_cli = 183;
|
||||
static i32 fcoder_metacmd_ID_build_search = 184;
|
||||
static i32 fcoder_metacmd_ID_build_in_build_panel = 185;
|
||||
static i32 fcoder_metacmd_ID_close_build_panel = 186;
|
||||
static i32 fcoder_metacmd_ID_change_to_build_panel = 187;
|
||||
static i32 fcoder_metacmd_ID_close_all_code = 188;
|
||||
static i32 fcoder_metacmd_ID_open_all_code = 189;
|
||||
static i32 fcoder_metacmd_ID_open_all_code_recursive = 190;
|
||||
static i32 fcoder_metacmd_ID_load_project = 191;
|
||||
static i32 fcoder_metacmd_ID_project_fkey_command = 192;
|
||||
static i32 fcoder_metacmd_ID_project_go_to_root_directory = 193;
|
||||
static i32 fcoder_metacmd_ID_setup_new_project = 194;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat = 195;
|
||||
static i32 fcoder_metacmd_ID_setup_build_sh = 196;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 197;
|
||||
static i32 fcoder_metacmd_ID_project_command_lister = 198;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 199;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 200;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 201;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 202;
|
||||
static i32 fcoder_metacmd_ID_select_surrounding_scope = 203;
|
||||
static i32 fcoder_metacmd_ID_select_next_scope_absolute = 204;
|
||||
static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 205;
|
||||
static i32 fcoder_metacmd_ID_place_in_scope = 206;
|
||||
static i32 fcoder_metacmd_ID_delete_current_scope = 207;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces = 208;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 209;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_break = 210;
|
||||
static i32 fcoder_metacmd_ID_if0_off = 211;
|
||||
static i32 fcoder_metacmd_ID_write_todo = 212;
|
||||
static i32 fcoder_metacmd_ID_write_hack = 213;
|
||||
static i32 fcoder_metacmd_ID_write_note = 214;
|
||||
static i32 fcoder_metacmd_ID_write_block = 215;
|
||||
static i32 fcoder_metacmd_ID_write_zero_struct = 216;
|
||||
static i32 fcoder_metacmd_ID_comment_line = 217;
|
||||
static i32 fcoder_metacmd_ID_uncomment_line = 218;
|
||||
static i32 fcoder_metacmd_ID_comment_line_toggle = 219;
|
||||
static i32 fcoder_metacmd_ID_snippet_lister = 220;
|
||||
static i32 fcoder_metacmd_ID_set_bindings_choose = 221;
|
||||
static i32 fcoder_metacmd_ID_set_bindings_default = 222;
|
||||
static i32 fcoder_metacmd_ID_set_bindings_mac_default = 223;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_basic = 224;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_basic = 225;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 226;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 227;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 228;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 229;
|
||||
static i32 fcoder_metacmd_ID_rename_parameter = 230;
|
||||
static i32 fcoder_metacmd_ID_write_explicit_enum_values = 231;
|
||||
static i32 fcoder_metacmd_ID_toggle_fps_meter = 75;
|
||||
static i32 fcoder_metacmd_ID_increase_face_size = 76;
|
||||
static i32 fcoder_metacmd_ID_decrease_face_size = 77;
|
||||
static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 78;
|
||||
static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 79;
|
||||
static i32 fcoder_metacmd_ID_toggle_show_whitespace = 80;
|
||||
static i32 fcoder_metacmd_ID_toggle_line_numbers = 81;
|
||||
static i32 fcoder_metacmd_ID_eol_dosify = 82;
|
||||
static i32 fcoder_metacmd_ID_eol_nixify = 83;
|
||||
static i32 fcoder_metacmd_ID_exit_4coder = 84;
|
||||
static i32 fcoder_metacmd_ID_goto_line = 85;
|
||||
static i32 fcoder_metacmd_ID_search = 86;
|
||||
static i32 fcoder_metacmd_ID_reverse_search = 87;
|
||||
static i32 fcoder_metacmd_ID_search_identifier = 88;
|
||||
static i32 fcoder_metacmd_ID_reverse_search_identifier = 89;
|
||||
static i32 fcoder_metacmd_ID_replace_in_range = 90;
|
||||
static i32 fcoder_metacmd_ID_replace_in_buffer = 91;
|
||||
static i32 fcoder_metacmd_ID_replace_in_all_buffers = 92;
|
||||
static i32 fcoder_metacmd_ID_query_replace = 93;
|
||||
static i32 fcoder_metacmd_ID_query_replace_identifier = 94;
|
||||
static i32 fcoder_metacmd_ID_query_replace_selection = 95;
|
||||
static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 96;
|
||||
static i32 fcoder_metacmd_ID_delete_file_query = 97;
|
||||
static i32 fcoder_metacmd_ID_save_to_query = 98;
|
||||
static i32 fcoder_metacmd_ID_rename_file_query = 99;
|
||||
static i32 fcoder_metacmd_ID_make_directory_query = 100;
|
||||
static i32 fcoder_metacmd_ID_move_line_up = 101;
|
||||
static i32 fcoder_metacmd_ID_move_line_down = 102;
|
||||
static i32 fcoder_metacmd_ID_duplicate_line = 103;
|
||||
static i32 fcoder_metacmd_ID_delete_line = 104;
|
||||
static i32 fcoder_metacmd_ID_open_file_in_quotes = 105;
|
||||
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 106;
|
||||
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 107;
|
||||
static i32 fcoder_metacmd_ID_swap_buffers_between_panels = 108;
|
||||
static i32 fcoder_metacmd_ID_kill_buffer = 109;
|
||||
static i32 fcoder_metacmd_ID_save = 110;
|
||||
static i32 fcoder_metacmd_ID_reopen = 111;
|
||||
static i32 fcoder_metacmd_ID_undo = 112;
|
||||
static i32 fcoder_metacmd_ID_redo = 113;
|
||||
static i32 fcoder_metacmd_ID_undo_all_buffers = 114;
|
||||
static i32 fcoder_metacmd_ID_redo_all_buffers = 115;
|
||||
static i32 fcoder_metacmd_ID_open_in_other = 116;
|
||||
static i32 fcoder_metacmd_ID_lister__quit = 117;
|
||||
static i32 fcoder_metacmd_ID_lister__activate = 118;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character = 119;
|
||||
static i32 fcoder_metacmd_ID_lister__backspace_text_field = 120;
|
||||
static i32 fcoder_metacmd_ID_lister__move_up = 121;
|
||||
static i32 fcoder_metacmd_ID_lister__move_down = 122;
|
||||
static i32 fcoder_metacmd_ID_lister__wheel_scroll = 123;
|
||||
static i32 fcoder_metacmd_ID_lister__mouse_press = 124;
|
||||
static i32 fcoder_metacmd_ID_lister__mouse_release = 125;
|
||||
static i32 fcoder_metacmd_ID_lister__repaint = 126;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character__default = 127;
|
||||
static i32 fcoder_metacmd_ID_lister__backspace_text_field__default = 128;
|
||||
static i32 fcoder_metacmd_ID_lister__move_up__default = 129;
|
||||
static i32 fcoder_metacmd_ID_lister__move_down__default = 130;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character__file_path = 131;
|
||||
static i32 fcoder_metacmd_ID_lister__backspace_text_field__file_path = 132;
|
||||
static i32 fcoder_metacmd_ID_lister__write_character__fixed_list = 133;
|
||||
static i32 fcoder_metacmd_ID_interactive_switch_buffer = 134;
|
||||
static i32 fcoder_metacmd_ID_interactive_kill_buffer = 135;
|
||||
static i32 fcoder_metacmd_ID_interactive_open_or_new = 136;
|
||||
static i32 fcoder_metacmd_ID_interactive_new = 137;
|
||||
static i32 fcoder_metacmd_ID_interactive_open = 138;
|
||||
static i32 fcoder_metacmd_ID_command_lister = 139;
|
||||
static i32 fcoder_metacmd_ID_auto_tab_whole_file = 140;
|
||||
static i32 fcoder_metacmd_ID_auto_tab_line_at_cursor = 141;
|
||||
static i32 fcoder_metacmd_ID_auto_tab_range = 142;
|
||||
static i32 fcoder_metacmd_ID_write_and_auto_tab = 143;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations = 144;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations = 145;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 146;
|
||||
static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 147;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 148;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 149;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 150;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 151;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 152;
|
||||
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 153;
|
||||
static i32 fcoder_metacmd_ID_word_complete = 154;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor = 155;
|
||||
static i32 fcoder_metacmd_ID_goto_jump_at_cursor_same_panel = 156;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump = 157;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump = 158;
|
||||
static i32 fcoder_metacmd_ID_goto_next_jump_no_skips = 159;
|
||||
static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 160;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump = 161;
|
||||
static i32 fcoder_metacmd_ID_goto_first_jump_same_panel_sticky = 162;
|
||||
static i32 fcoder_metacmd_ID_newline_or_goto_position = 163;
|
||||
static i32 fcoder_metacmd_ID_newline_or_goto_position_same_panel = 164;
|
||||
static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 165;
|
||||
static i32 fcoder_metacmd_ID_log_graph__escape = 166;
|
||||
static i32 fcoder_metacmd_ID_log_graph__scroll_wheel = 167;
|
||||
static i32 fcoder_metacmd_ID_log_graph__page_up = 168;
|
||||
static i32 fcoder_metacmd_ID_log_graph__page_down = 169;
|
||||
static i32 fcoder_metacmd_ID_log_graph__click_select_event = 170;
|
||||
static i32 fcoder_metacmd_ID_log_graph__click_jump_to_event_source = 171;
|
||||
static i32 fcoder_metacmd_ID_show_the_log_graph = 172;
|
||||
static i32 fcoder_metacmd_ID_copy = 173;
|
||||
static i32 fcoder_metacmd_ID_cut = 174;
|
||||
static i32 fcoder_metacmd_ID_paste = 175;
|
||||
static i32 fcoder_metacmd_ID_paste_next = 176;
|
||||
static i32 fcoder_metacmd_ID_paste_and_indent = 177;
|
||||
static i32 fcoder_metacmd_ID_paste_next_and_indent = 178;
|
||||
static i32 fcoder_metacmd_ID_execute_previous_cli = 179;
|
||||
static i32 fcoder_metacmd_ID_execute_any_cli = 180;
|
||||
static i32 fcoder_metacmd_ID_build_search = 181;
|
||||
static i32 fcoder_metacmd_ID_build_in_build_panel = 182;
|
||||
static i32 fcoder_metacmd_ID_close_build_panel = 183;
|
||||
static i32 fcoder_metacmd_ID_change_to_build_panel = 184;
|
||||
static i32 fcoder_metacmd_ID_close_all_code = 185;
|
||||
static i32 fcoder_metacmd_ID_open_all_code = 186;
|
||||
static i32 fcoder_metacmd_ID_open_all_code_recursive = 187;
|
||||
static i32 fcoder_metacmd_ID_load_project = 188;
|
||||
static i32 fcoder_metacmd_ID_project_fkey_command = 189;
|
||||
static i32 fcoder_metacmd_ID_project_go_to_root_directory = 190;
|
||||
static i32 fcoder_metacmd_ID_setup_new_project = 191;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat = 192;
|
||||
static i32 fcoder_metacmd_ID_setup_build_sh = 193;
|
||||
static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 194;
|
||||
static i32 fcoder_metacmd_ID_project_command_lister = 195;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 196;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 197;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 198;
|
||||
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 199;
|
||||
static i32 fcoder_metacmd_ID_select_surrounding_scope = 200;
|
||||
static i32 fcoder_metacmd_ID_select_next_scope_absolute = 201;
|
||||
static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 202;
|
||||
static i32 fcoder_metacmd_ID_place_in_scope = 203;
|
||||
static i32 fcoder_metacmd_ID_delete_current_scope = 204;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces = 205;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 206;
|
||||
static i32 fcoder_metacmd_ID_open_long_braces_break = 207;
|
||||
static i32 fcoder_metacmd_ID_if0_off = 208;
|
||||
static i32 fcoder_metacmd_ID_write_todo = 209;
|
||||
static i32 fcoder_metacmd_ID_write_hack = 210;
|
||||
static i32 fcoder_metacmd_ID_write_note = 211;
|
||||
static i32 fcoder_metacmd_ID_write_block = 212;
|
||||
static i32 fcoder_metacmd_ID_write_zero_struct = 213;
|
||||
static i32 fcoder_metacmd_ID_comment_line = 214;
|
||||
static i32 fcoder_metacmd_ID_uncomment_line = 215;
|
||||
static i32 fcoder_metacmd_ID_comment_line_toggle = 216;
|
||||
static i32 fcoder_metacmd_ID_snippet_lister = 217;
|
||||
static i32 fcoder_metacmd_ID_set_bindings_choose = 218;
|
||||
static i32 fcoder_metacmd_ID_set_bindings_default = 219;
|
||||
static i32 fcoder_metacmd_ID_set_bindings_mac_default = 220;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_basic = 221;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_basic = 222;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 223;
|
||||
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 224;
|
||||
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 225;
|
||||
#endif
|
||||
|
|
|
@ -292,6 +292,19 @@ get_key_code(char *buffer){
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
internal Token_Array
|
||||
get_token_array_from_buffer(Application_Links *app, Buffer_ID buffer){
|
||||
Token_Array result = {};
|
||||
Managed_Scope scope = buffer_get_managed_scope(app, buffer);
|
||||
Token_Array *ptr = scope_attachment(app, scope, attachment_tokens, Token_Array);
|
||||
if (ptr != 0){
|
||||
result = *ptr;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal Buffer_Seek
|
||||
seek_location(ID_Line_Column_Jump_Location location){
|
||||
return(seek_line_col(location.line, location.column));
|
||||
|
@ -601,27 +614,10 @@ get_line_end_pos_from_pos(Application_Links *app, Buffer_ID buffer, i64 pos){
|
|||
return(get_line_side_pos_from_pos(app, buffer, pos, Side_Max));
|
||||
}
|
||||
|
||||
internal Token*
|
||||
get_first_token_from_pos(Token_Array tokens, i64 pos){
|
||||
NotImplemented;
|
||||
Token *result = 0;
|
||||
#if 0
|
||||
Get_Token_Result get_token = cpp_get_token(tokens, (i32)pos);
|
||||
if (get_token.in_whitespace_after_token){
|
||||
get_token.token_index += 1;
|
||||
}
|
||||
Token *result = 0;
|
||||
if (get_token.token_index < tokens.count){
|
||||
result = tokens.tokens + get_token.token_index;
|
||||
}
|
||||
#endif
|
||||
return(result);
|
||||
}
|
||||
|
||||
internal Token*
|
||||
get_first_token_from_line(Application_Links *app, Buffer_ID buffer, Token_Array tokens, i64 line){
|
||||
i64 line_start = get_line_start_pos(app, buffer, line);
|
||||
return(get_first_token_from_pos(tokens, line_start));
|
||||
return(token_from_pos(&tokens, line_start));
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
@ -801,31 +797,29 @@ boundary_inside_quotes(Application_Links *app, Buffer_ID buffer, Side side, Scan
|
|||
internal i64
|
||||
boundary_token(Application_Links *app, Buffer_ID buffer, Side side, Scan_Direction direction, i64 pos){
|
||||
i64 result = boundary_non_whitespace(app, buffer, side, direction, pos);
|
||||
NotImplemented;
|
||||
#if 0
|
||||
if (!buffer_tokens_are_ready(app, buffer)){
|
||||
Token_Array tokens = get_token_array_from_buffer(app, buffer);
|
||||
if (tokens.tokens == 0){
|
||||
result = boundary_non_whitespace(app, buffer, side, direction, pos);
|
||||
}
|
||||
else{
|
||||
Token_Array tokens = buffer_get_token_array(app, buffer);
|
||||
switch (direction){
|
||||
case Scan_Forward:
|
||||
{
|
||||
i32 buffer_size = (i32)buffer_get_size(app, buffer);
|
||||
i64 buffer_size = buffer_get_size(app, buffer);
|
||||
if (tokens.count > 0){
|
||||
Token *token = get_first_token_from_pos(tokens, pos);
|
||||
Token *token = token_from_pos(&tokens, pos);
|
||||
if (token != 0){
|
||||
if (side == Side_Max){
|
||||
result = token->start + token->size;
|
||||
result = token->pos + token->size;
|
||||
}
|
||||
else{
|
||||
if (token->start > pos){
|
||||
result = token->start;
|
||||
if (token->pos > pos){
|
||||
result = token->pos;
|
||||
}
|
||||
else{
|
||||
token += 1;
|
||||
if (token < tokens.tokens + tokens.count){
|
||||
result = token->start;
|
||||
result = token->pos;
|
||||
}
|
||||
else{
|
||||
result = buffer_size;
|
||||
|
@ -845,20 +839,20 @@ boundary_token(Application_Links *app, Buffer_ID buffer, Side side, Scan_Directi
|
|||
case Scan_Backward:
|
||||
{
|
||||
if (tokens.count > 0){
|
||||
Token *token = get_first_token_from_pos(tokens, pos);
|
||||
Token *token = token_from_pos(&tokens, pos);
|
||||
if (side == Side_Min){
|
||||
if (token == 0){
|
||||
token = tokens.tokens + tokens.count - 1;
|
||||
result = token->start;
|
||||
result = token->pos;
|
||||
}
|
||||
else{
|
||||
if (token->start < pos){
|
||||
result = token->start;
|
||||
if (token->pos < pos){
|
||||
result = token->pos;
|
||||
}
|
||||
else{
|
||||
token -= 1;
|
||||
if (token >= tokens.tokens){
|
||||
result = token->start;
|
||||
result = token->pos;
|
||||
}
|
||||
else{
|
||||
result = 0;
|
||||
|
@ -869,15 +863,15 @@ boundary_token(Application_Links *app, Buffer_ID buffer, Side side, Scan_Directi
|
|||
else{
|
||||
if (token == 0){
|
||||
token = tokens.tokens + tokens.count - 1;
|
||||
result = token->start + token->size;
|
||||
result = token->pos + token->size;
|
||||
}
|
||||
else{
|
||||
token -= 1;
|
||||
if (token >= tokens.tokens && token->start + token->size == pos){
|
||||
if (token >= tokens.tokens && token->pos + token->size == pos){
|
||||
token -= 1;
|
||||
}
|
||||
if (token >= tokens.tokens){
|
||||
result = token->start + token->size;
|
||||
result = token->pos + token->size;
|
||||
}
|
||||
else{
|
||||
result = 0;
|
||||
|
@ -891,7 +885,6 @@ boundary_token(Application_Links *app, Buffer_ID buffer, Side side, Scan_Directi
|
|||
}break;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return(result);
|
||||
}
|
||||
|
||||
|
@ -1874,19 +1867,6 @@ try_buffer_kill(Application_Links *app, Buffer_ID buffer, View_ID gui_view_id, B
|
|||
|
||||
////////////////////////////////
|
||||
|
||||
internal Token_Array
|
||||
get_token_array_from_buffer(Application_Links *app, Buffer_ID buffer){
|
||||
Token_Array result = {};
|
||||
Managed_Scope scope = buffer_get_managed_scope(app, buffer);
|
||||
Token_Array *ptr = scope_attachment(app, scope, attachment_tokens, Token_Array);
|
||||
if (ptr != 0){
|
||||
result = *ptr;
|
||||
}
|
||||
return(result);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal String_Const_u8
|
||||
get_query_string(Application_Links *app, char *query_str, u8 *string_space, i32 space_size){
|
||||
Query_Bar bar;
|
||||
|
|
|
@ -37,34 +37,26 @@ find_scope_get_token_type(Find_Scope_Flag flags, Token_Base_Kind kind){
|
|||
static b32
|
||||
find_scope_top(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 flags, i64 *end_pos_out){
|
||||
b32 success = false;
|
||||
NotImplemented;
|
||||
#if 0
|
||||
Cpp_Get_Token_Result get_result = {};
|
||||
i32 position = 0;
|
||||
if (get_token_from_pos(app, buffer, start_pos, &get_result)){
|
||||
i32 token_index = get_result.token_index;
|
||||
Token_Array array = get_token_array_from_buffer(app, buffer);
|
||||
if (array.tokens != 0){
|
||||
i64 position = 0;
|
||||
i64 token_index = token_index_from_pos(&array, start_pos);
|
||||
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
|
||||
b32 good_status = true;
|
||||
if (HasFlag(flags, FindScope_Parent)){
|
||||
--token_index;
|
||||
if (get_result.in_whitespace_after_token){
|
||||
++token_index;
|
||||
good_status = token_it_dec(&it);
|
||||
}
|
||||
}
|
||||
if (token_index >= 0){
|
||||
Token_Range token_range = buffer_get_token_range(app, buffer);
|
||||
if (token_range.first != 0){
|
||||
Token_Iterator token_it = make_token_iterator(token_range, token_index);
|
||||
i32 nest_level = 0;
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_prev(&token_it)){
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->type);
|
||||
for (;good_status;){
|
||||
Token *token = token_it_read(&it);
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->kind);
|
||||
switch (type){
|
||||
case FindScopeTokenType_Open:
|
||||
{
|
||||
if (nest_level == 0){
|
||||
success = true;
|
||||
position = token->start;
|
||||
if (flags & FindScope_EndOfToken){
|
||||
position = token->pos;
|
||||
if (HasFlag(flags, FindScope_EndOfToken)){
|
||||
position += token->size;
|
||||
}
|
||||
goto finished;
|
||||
|
@ -78,39 +70,31 @@ find_scope_top(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 flag
|
|||
++nest_level;
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
good_status = token_it_dec(&it);
|
||||
}
|
||||
finished:;
|
||||
*end_pos_out = position;
|
||||
#endif
|
||||
*end_pos_out = start_pos;
|
||||
}
|
||||
return(success);
|
||||
}
|
||||
|
||||
static b32
|
||||
find_scope_bottom(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 flags, i64 *end_pos_out){
|
||||
b32 success = false;
|
||||
#if 0
|
||||
Cpp_Get_Token_Result get_result = {};
|
||||
i32 position = 0;
|
||||
if (get_token_from_pos(app, buffer, start_pos, &get_result)){
|
||||
i32 token_index = get_result.token_index + 1;
|
||||
Token_Array array = get_token_array_from_buffer(app, buffer);
|
||||
if (array.tokens != 0){
|
||||
i64 position = 0;
|
||||
i64 token_index = token_index_from_pos(&array, start_pos);
|
||||
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
|
||||
token_it_inc(&it);
|
||||
if (HasFlag(flags, FindScope_Parent)){
|
||||
--token_index;
|
||||
if (get_result.in_whitespace_after_token){
|
||||
++token_index;
|
||||
token_it_dec(&it);
|
||||
}
|
||||
}
|
||||
if (token_index >= 0){
|
||||
Token_Range token_range = buffer_get_token_range(app, buffer);
|
||||
if (token_range.first != 0){
|
||||
Token_Iterator token_it = make_token_iterator(token_range, token_index);
|
||||
b32 good_status = true;
|
||||
i32 nest_level = 0;
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_next(&token_it)){
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->type);
|
||||
for (;good_status;){
|
||||
Token *token = token_it_read(&it);
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->kind);
|
||||
switch (type){
|
||||
case FindScopeTokenType_Open:
|
||||
{
|
||||
|
@ -120,8 +104,8 @@ find_scope_bottom(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 f
|
|||
{
|
||||
if (nest_level == 0){
|
||||
success = true;
|
||||
position = token->start;
|
||||
if (flags & FindScope_EndOfToken){
|
||||
position = token->pos;
|
||||
if (HasFlag(flags, FindScope_EndOfToken)){
|
||||
position += token->size;
|
||||
}
|
||||
goto finished;
|
||||
|
@ -131,42 +115,36 @@ find_scope_bottom(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 f
|
|||
}
|
||||
}break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
good_status = token_it_inc(&it);
|
||||
}
|
||||
finished:;
|
||||
*end_pos_out = position;
|
||||
#endif
|
||||
*end_pos_out = start_pos;
|
||||
}
|
||||
return(success);
|
||||
}
|
||||
|
||||
static b32
|
||||
find_next_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 flags, i64 *end_pos_out){
|
||||
b32 success = false;
|
||||
NotImplemented;
|
||||
#if 0
|
||||
Cpp_Get_Token_Result get_result = {};
|
||||
Token_Array array = get_token_array_from_buffer(app, buffer);
|
||||
if (array.tokens != 0){
|
||||
i64 position = 0;
|
||||
if (get_token_from_pos(app, buffer, start_pos, &get_result)){
|
||||
i32 token_index = get_result.token_index + 1;
|
||||
if (token_index >= 0){
|
||||
Token_Range token_range = buffer_get_token_range(app, buffer);
|
||||
if (token_range.first != 0){
|
||||
Token_Iterator token_it = make_token_iterator(token_range, token_index);
|
||||
i64 token_index = token_index_from_pos(&array, start_pos);
|
||||
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
|
||||
token_it_inc(&it);
|
||||
if (HasFlag(flags, FindScope_NextSibling)){
|
||||
b32 good_status = true;
|
||||
i32 nest_level = 1;
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_next(&token_it)){
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->type);
|
||||
for (;good_status;){
|
||||
Token *token = token_it_read(&it);
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->kind);
|
||||
switch (type){
|
||||
case FindScopeTokenType_Open:
|
||||
{
|
||||
if (nest_level == 0){
|
||||
success = 1;
|
||||
position = token->start;
|
||||
if (flags & FindScope_EndOfToken){
|
||||
success = true;
|
||||
position = token->pos;
|
||||
if (HasFlag(flags, FindScope_EndOfToken)){
|
||||
position += token->size;
|
||||
}
|
||||
goto finished;
|
||||
|
@ -184,51 +162,45 @@ find_next_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 fla
|
|||
}
|
||||
}break;
|
||||
}
|
||||
good_status = token_it_inc(&it);
|
||||
}
|
||||
}
|
||||
else{
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_next(&token_it)){
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->type);
|
||||
b32 good_status = true;
|
||||
for (;good_status;){
|
||||
Token *token = token_it_read(&it);
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->kind);
|
||||
if (type == FindScopeTokenType_Open){
|
||||
success = 1;
|
||||
position = token->start;
|
||||
success = true;
|
||||
position = token->pos;
|
||||
if (flags & FindScope_EndOfToken){
|
||||
position += token->size;
|
||||
}
|
||||
goto finished;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
good_status = token_it_inc(&it);
|
||||
}
|
||||
}
|
||||
finished:;
|
||||
*end_pos_out = position;
|
||||
#endif
|
||||
*end_pos_out = start_pos;
|
||||
}
|
||||
return(success);
|
||||
}
|
||||
|
||||
static b32
|
||||
find_prev_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 flags, i64 *end_pos_out){
|
||||
b32 success = false;
|
||||
NotImplemented;
|
||||
#if 0
|
||||
Cpp_Get_Token_Result get_result = {};
|
||||
Token_Array array = get_token_array_from_buffer(app, buffer);
|
||||
if (array.tokens != 0){
|
||||
i64 position = 0;
|
||||
if (get_token_from_pos(app, buffer, start_pos, &get_result)){
|
||||
i32 token_index = get_result.token_index - 1;
|
||||
if (token_index >= 0){
|
||||
Token_Range token_range = buffer_get_token_range(app, buffer);
|
||||
if (token_range.first != 0){
|
||||
Token_Iterator token_it = make_token_iterator(token_range, token_index);
|
||||
if (flags & FindScope_NextSibling){
|
||||
i64 token_index = token_index_from_pos(&array, start_pos);
|
||||
Token_Iterator_Array it = token_iterator_index(buffer, &array, token_index);
|
||||
if (HasFlag(flags, FindScope_NextSibling)){
|
||||
b32 status_good = token_it_dec(&it);
|
||||
i32 nest_level = -1;
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_prev(&token_it)){
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->type);
|
||||
for (;status_good;){
|
||||
Token *token = token_it_read(&it);
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->kind);
|
||||
switch (type){
|
||||
case FindScopeTokenType_Open:
|
||||
{
|
||||
|
@ -238,8 +210,8 @@ find_prev_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 fla
|
|||
}
|
||||
else if (nest_level == 0){
|
||||
success = true;
|
||||
position = token->start;
|
||||
if (flags & FindScope_EndOfToken){
|
||||
position = token->pos;
|
||||
if (HasFlag(flags, FindScope_EndOfToken)){
|
||||
position += token->size;
|
||||
}
|
||||
goto finished;
|
||||
|
@ -253,29 +225,28 @@ find_prev_scope(Application_Links *app, Buffer_ID buffer, i64 start_pos, u32 fla
|
|||
++nest_level;
|
||||
}break;
|
||||
}
|
||||
status_good = token_it_dec(&it);
|
||||
}
|
||||
}
|
||||
else{
|
||||
for (Token *token = token_iterator_current(&token_it);
|
||||
token != 0;
|
||||
token = token_iterator_goto_prev(&token_it)){
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->type);
|
||||
b32 status_good = token_it_dec(&it);
|
||||
for (;status_good;){
|
||||
Token *token = token_it_read(&it);
|
||||
Find_Scope_Token_Type type = find_scope_get_token_type(flags, token->kind);
|
||||
if (type == FindScopeTokenType_Open){
|
||||
success = true;
|
||||
position = token->start;
|
||||
if (flags & FindScope_EndOfToken){
|
||||
position = token->pos;
|
||||
if (HasFlag(flags, FindScope_EndOfToken)){
|
||||
position += token->size;
|
||||
}
|
||||
goto finished;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
status_good = token_it_dec(&it);
|
||||
}
|
||||
}
|
||||
finished:;
|
||||
*end_pos_out = position;
|
||||
#endif
|
||||
}
|
||||
return(success);
|
||||
}
|
||||
|
||||
|
|
|
@ -330,6 +330,8 @@ internal void
|
|||
table_clear(Table_u32_u16 *table){
|
||||
block_zero_dynamic_array(table->keys, table->slot_count);
|
||||
block_zero_dynamic_array(table->vals, table->slot_count);
|
||||
table->used_count = 0;
|
||||
table->dirty_count = 0;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
@ -487,8 +489,11 @@ table_erase(Table_Data_u64 *table, Data key){
|
|||
|
||||
internal void
|
||||
table_clear(Table_Data_u64 *table){
|
||||
block_zero_dynamic_array(table->hashes, table->slot_count);
|
||||
block_zero_dynamic_array(table->keys, table->slot_count);
|
||||
block_zero_dynamic_array(table->vals, table->slot_count);
|
||||
table->used_count = 0;
|
||||
table->dirty_count = 0;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
@ -649,6 +654,8 @@ internal void
|
|||
table_clear(Table_u64_Data *table){
|
||||
block_zero_dynamic_array(table->keys, table->slot_count);
|
||||
block_zero_dynamic_array(table->vals, table->slot_count);
|
||||
table->used_count = 0;
|
||||
table->dirty_count = 0;
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
@ -801,8 +808,11 @@ table_erase(Table_Data_Data *table, Data key){
|
|||
|
||||
internal void
|
||||
table_clear(Table_Data_Data *table){
|
||||
block_zero_dynamic_array(table->hashes, table->slot_count);
|
||||
block_zero_dynamic_array(table->keys, table->slot_count);
|
||||
block_zero_dynamic_array(table->vals, table->slot_count);
|
||||
table->used_count = 0;
|
||||
table->dirty_count = 0;
|
||||
}
|
||||
|
||||
// BOTTOM
|
||||
|
|
|
@ -81,6 +81,18 @@ token_index_from_pos(Token_Array *tokens, u64 pos){
|
|||
return(token_index_from_pos(tokens->tokens, tokens->count, pos));
|
||||
}
|
||||
|
||||
internal Token*
|
||||
token_from_pos(Token *tokens, i64 count, i64 pos){
|
||||
i64 index = token_index_from_pos(tokens, count, pos);
|
||||
return(tokens + index);
|
||||
}
|
||||
|
||||
internal Token*
|
||||
token_from_pos(Token_Array *tokens, u64 pos){
|
||||
i64 index = token_index_from_pos(tokens, pos);
|
||||
return(tokens->tokens + index);
|
||||
}
|
||||
|
||||
////////////////////////////////
|
||||
|
||||
internal Token_Iterator_Array
|
||||
|
@ -96,8 +108,8 @@ token_iterator_index(u64 user_id, Token *tokens, i64 count, i64 token_index){
|
|||
}
|
||||
|
||||
internal Token_Iterator_Array
|
||||
token_iterator_index(u64 user_id, Token_Array tokens, i64 token_index){
|
||||
return(token_iterator_index(user_id, tokens.tokens, tokens.count, token_index));
|
||||
token_iterator_index(u64 user_id, Token_Array *tokens, i64 token_index){
|
||||
return(token_iterator_index(user_id, tokens->tokens, tokens->count, token_index));
|
||||
}
|
||||
|
||||
internal Token_Iterator_Array
|
||||
|
@ -106,8 +118,8 @@ token_iterator(u64 user_id, Token *tokens, i64 count, Token *token){
|
|||
}
|
||||
|
||||
internal Token_Iterator_Array
|
||||
token_iterator(u64 user_id, Token_Array tokens, Token *token){
|
||||
return(token_iterator_index(user_id, tokens.tokens, tokens.count, (i64)(token - tokens.tokens)));
|
||||
token_iterator(u64 user_id, Token_Array *tokens, Token *token){
|
||||
return(token_iterator_index(user_id, tokens->tokens, tokens->count, (i64)(token - tokens->tokens)));
|
||||
}
|
||||
|
||||
internal Token_Iterator_Array
|
||||
|
@ -116,8 +128,8 @@ token_iterator(u64 user_id, Token *tokens, i64 count){
|
|||
}
|
||||
|
||||
internal Token_Iterator_Array
|
||||
token_iterator(u64 user_id, Token_Array tokens){
|
||||
return(token_iterator_index(user_id, tokens.tokens, tokens.count, 0));
|
||||
token_iterator(u64 user_id, Token_Array *tokens){
|
||||
return(token_iterator_index(user_id, tokens->tokens, tokens->count, 0));
|
||||
}
|
||||
|
||||
internal Token_Iterator_Array
|
||||
|
@ -127,9 +139,9 @@ token_iterator_pos(u64 user_id, Token *tokens, i64 count, i64 pos){
|
|||
}
|
||||
|
||||
internal Token_Iterator_Array
|
||||
token_iterator_pos(u64 user_id, Token_Array tokens, i64 pos){
|
||||
i64 index = token_index_from_pos(tokens.tokens, tokens.count, pos);
|
||||
return(token_iterator_index(user_id, tokens.tokens, tokens.count, index));
|
||||
token_iterator_pos(u64 user_id, Token_Array *tokens, i64 pos){
|
||||
i64 index = token_index_from_pos(tokens->tokens, tokens->count, pos);
|
||||
return(token_iterator_index(user_id, tokens->tokens, tokens->count, index));
|
||||
}
|
||||
|
||||
internal Token*
|
||||
|
|
|
@ -435,8 +435,8 @@ buffer_remeasure_starts(Arena *scratch, Gap_Buffer *buffer, Interval_i64 old_lin
|
|||
for (i64 i = old_line_indexes.one_past_last; i < old_line_start_count; i += 1, line_start_ptr += 1){
|
||||
*line_start_ptr += text_shift;
|
||||
}
|
||||
block_copy_dynamic_array(buffer->line_starts + old_line_indexes.one_past_last,
|
||||
buffer->line_starts + new_line_indexes_opl,
|
||||
block_copy_dynamic_array(buffer->line_starts + new_line_indexes_opl,
|
||||
buffer->line_starts + old_line_indexes.one_past_last,
|
||||
buffer->line_start_count - old_line_indexes.one_past_last);
|
||||
|
||||
i64 first_pos = buffer->line_starts[old_line_indexes.first];
|
||||
|
|
|
@ -24,7 +24,7 @@ struct File_Edit_Positions{
|
|||
i64 cursor_pos;
|
||||
};
|
||||
|
||||
// TODO(allen): do(replace Text_Effect with markers over time)
|
||||
// TODO(allen): do(replace Text_Effect with IM rendering over time)
|
||||
struct Text_Effect{
|
||||
i64 start;
|
||||
i64 end;
|
||||
|
|
Loading…
Reference in New Issue