Compare commits

..

No commits in common. "8552305ecc560f53b594af99ddf8d735a9d34dbe" and "0a03ea05f1047740d3d9d91ff0f12b922fda3a7f" have entirely different histories.

14 changed files with 477 additions and 1425 deletions

BIN
4ed.rdbg

Binary file not shown.

12
TODO.md
View File

@ -1,5 +1,4 @@
# TODO
PRIME DIRECTIVE: SIMPLIFY
## Necessary
[] fix project creation - this should just work out of the box
@ -8,16 +7,11 @@ PRIME DIRECTIVE: SIMPLIFY
[] multi cursor editing
[] remove parser
[] fast enough to go read a node_modules folder and search on it
[] backspace through entire filename in navigation strip at top
[] reload dirty files if there are no local edits to them automatically
## Nice to Have
[] remove audio (search @Remove)
[] 4coder projects should have a startup script - so you can do things like add cl to the path
[] Look into removing *keyboard* buffer - seems like over long sessions, that could get out of hand
- good first step: print out the memory footprint of this buffer when we exit 4coder, just so we can see what it's taking up
## Investigations
[] What are fade ranges? Do we need them?
# DONE
[x] reload dirty files if there are no local edits to them automatically
[x] remove audio (search @Remove)
# DONE

View File

@ -159,139 +159,6 @@ CUSTOM_DOC("Delete characters between the cursor position and the first alphanum
push_boundary_list(scratch, boundary_alpha_numeric_unicode));
}
function i64
get_boundary_token_or_whitespace(Application_Links *app, Buffer_ID buffer,
Side side, Scan_Direction direction, i64 pos)
{
// NOTE(PS): originally this was F4_Boundary_TokenAndWhitespace
i64 result = boundary_non_whitespace(app, buffer, side, direction, pos);
Token_Array tokens = get_token_array_from_buffer(app, buffer);
if (tokens.tokens != 0){
switch (direction){
case Scan_Forward:
{
i64 buffer_size = buffer_get_size(app, buffer);
result = buffer_size;
if(tokens.count > 0)
{
Token_Iterator_Array it = token_iterator_pos(0, &tokens, pos);
Token *token = token_it_read(&it);
if(token == 0)
{
break;
}
// NOTE(rjf): Comments/Strings
if(token->kind == TokenBaseKind_Comment ||
token->kind == TokenBaseKind_LiteralString)
{
result = boundary_non_whitespace(app, buffer, side, direction, pos);
break;
}
// NOTE(rjf): All other cases.
else
{
if (token->kind == TokenBaseKind_Whitespace)
{
// token_it_inc_non_whitespace(&it);
// token = token_it_read(&it);
}
if (side == Side_Max){
result = token->pos + token->size;
token_it_inc_all(&it);
Token *ws = token_it_read(&it);
if(ws != 0 && ws->kind == TokenBaseKind_Whitespace &&
get_line_number_from_pos(app, buffer, ws->pos + ws->size) ==
get_line_number_from_pos(app, buffer, token->pos))
{
result = ws->pos + ws->size;
}
}
else{
if (token->pos <= pos){
token_it_inc_non_whitespace(&it);
token = token_it_read(&it);
}
if (token != 0){
result = token->pos;
}
}
}
}
}break;
case Scan_Backward:
{
result = 0;
if (tokens.count > 0){
Token_Iterator_Array it = token_iterator_pos(0, &tokens, pos);
Token *token = token_it_read(&it);
Token_Iterator_Array it2 = it;
token_it_dec_non_whitespace(&it2);
Token *token2 = token_it_read(&it2);
// NOTE(rjf): Comments/Strings
if(token->kind == TokenBaseKind_Comment ||
token->kind == TokenBaseKind_LiteralString ||
(token2 &&
token2->kind == TokenBaseKind_Comment ||
token2->kind == TokenBaseKind_LiteralString))
{
result = boundary_non_whitespace(app, buffer, side, direction, pos);
break;
}
if (token->kind == TokenBaseKind_Whitespace){
token_it_dec_non_whitespace(&it);
token = token_it_read(&it);
}
if (token != 0){
if (side == Side_Min){
if (token->pos >= pos){
token_it_dec_non_whitespace(&it);
token = token_it_read(&it);
}
result = token->pos;
}
else{
if (token->pos + token->size >= pos){
token_it_dec_non_whitespace(&it);
token = token_it_read(&it);
}
result = token->pos + token->size;
}
}
}
}break;
}
}
return(result);
}
CUSTOM_COMMAND_SIG(backspace_alpha_numeric_or_camel_boundary)
CUSTOM_DOC("Deletes left to a alphanumeric or camel boundary.")
{
Scratch_Block scratch(app);
current_view_boundary_delete(app, Scan_Backward, push_boundary_list(scratch,
boundary_line,
boundary_alpha_numeric,
boundary_alpha_numeric_camel));
}
CUSTOM_COMMAND_SIG(backspace_token_boundary)
CUSTOM_DOC("Deletes left to a token boundary.")
{
Scratch_Block scratch(app);
Boundary_Function_List boundary_list = push_boundary_list(scratch, get_boundary_token_or_whitespace);
current_view_boundary_delete(app, Scan_Backward, boundary_list);
}
CUSTOM_COMMAND_SIG(delete_alpha_numeric_boundary)
CUSTOM_DOC("Delete characters between the cursor position and the first alphanumeric boundary to the right.")
{
@ -1706,31 +1573,6 @@ CUSTOM_DOC("Delete the line the on which the cursor sits.")
buffer_replace_range(app, buffer, range, string_u8_litexpr(""));
}
CUSTOM_COMMAND_SIG(delete_to_end_of_line)
CUSTOM_DOC("Deletes all text from the cursor to the end of the line")
{
View_ID view = get_active_view(app, Access_ReadWriteVisible);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
i64 pos = view_get_cursor_pos(app, view);
i64 line_number = get_line_number_from_pos(app, buffer, pos);
Range_Cursor line_range = get_line_range(app, buffer, line_number);
Range_i64 delete_range = {};
if (line_range.start.line != 0 && line_range.end.line != 0)
{
delete_range = Ii64(pos, line_range.end.pos);
}
if (range_size(delete_range) == 0)
{
delete_range.end += 1;
i32 buffer_size = (i32)buffer_get_size(app, buffer);
delete_range.end = clamp_top(delete_range.end, buffer_size);
}
buffer_replace_range(app, buffer, delete_range, string_u8_litexpr(""));
}
////////////////////////////////
CUSTOM_COMMAND_SIG(open_file_in_quotes)
@ -2235,284 +2077,5 @@ CUSTOM_DOC("Notes the external modification of attached files by printing a mess
}
}
CUSTOM_COMMAND_SIG(toggle_compilation_view)
{
Buffer_ID buffer = view_get_buffer(app, global_compilation_view, Access_Always);
Face_ID face_id = get_face_id(app, buffer);
Face_Metrics metrics = get_face_metrics(app, face_id);
if(global_compilation_view_expanded ^= 1)
{
view_set_split_pixel_size(app, global_compilation_view, (i32)(metrics.line_height*32.f));
}
else
{
view_set_split_pixel_size(app, global_compilation_view, (i32)(metrics.line_height*4.f));
}
}
////////////////////////////////////////
// Indentation
function void
reindent_line(Application_Links *app, Buffer_ID buffer, i64 line, i64 indent_delta)
{
Scratch_Block scratch(app);
View_ID view = get_active_view(app, Access_ReadWriteVisible);
String_Const_u8 line_string = push_buffer_line(app, scratch, buffer, line);
i64 line_start_pos = get_line_start_pos(app, buffer, line);
Range_i64 line_indent_range = Ii64(0, 0);
i64 tabs_at_beginning = 0;
i64 spaces_at_beginning = 0;
for(u64 i = 0; i < line_string.size; i += 1)
{
if(line_string.str[i] == '\t')
{
tabs_at_beginning += 1;
}
else if(character_is_whitespace(line_string.str[i]))
{
spaces_at_beginning += 1;
}
else if(!character_is_whitespace(line_string.str[i]))
{
line_indent_range.max = (i64)i;
break;
}
}
// NOTE(PS): This is in the event that we are unindenting a line that
// is JUST tabs or spaces - rather than unindenting nothing
// and then reindenting the proper amount, this should cause
// the removal of all leading tabs and spaces on an otherwise
// empty line
bool place_cursor_at_end = false;
if (line_indent_range.max == 0 && line_string.size == (u64)(spaces_at_beginning + tabs_at_beginning))
{
line_indent_range.max = line_string.size;
place_cursor_at_end = true;
}
// NOTE(rjf): Indent lines.
{
Range_i64 indent_range =
{
line_indent_range.min + line_start_pos,
line_indent_range.max + line_start_pos,
};
i64 indent_width = (i64)def_get_config_u64(app, vars_save_string_lit("indent_width"));
b32 indent_with_tabs = def_get_config_b32(vars_save_string_lit("indent_with_tabs"));
i64 spaces_per_indent_level = indent_width;
i64 indent_level = spaces_at_beginning / spaces_per_indent_level + tabs_at_beginning;
i64 new_indent_level = indent_level + indent_delta;
String_Const_u8 indent_string;
if (indent_with_tabs) {
indent_string = str8_lit("\t");
} else {
indent_string = push_stringf(scratch, "%.*s", Min(indent_width, 16), " ");
}
buffer_replace_range(app, buffer, indent_range, str8_lit(""));
for(i64 i = 0; i < new_indent_level; i += 1)
{
buffer_replace_range(app, buffer, Ii64(line_start_pos), indent_string);
}
if (place_cursor_at_end)
{
// update line_string now that we've edited the line
line_string = push_buffer_line(app, scratch, buffer, line);
line_start_pos = get_line_start_pos(app, buffer, line);
i64 line_end_pos = line_start_pos + line_string.size;
view_set_cursor(app, view, seek_pos(line_end_pos));
}
}
}
internal void
reindent_line_range(Application_Links *app, Buffer_ID buffer, Range_i64 range, i64 indent_delta)
{
for(i64 i = range.min; i <= range.max; i += 1)
{
reindent_line(app, buffer, i, indent_delta);
}
}
// TODO(PS): @F4Layer - it's unclear why we need these, when there's existing, similarly named functions
// already in the codebase. (Just remove the f4_ and the compiler will show you where).
internal Range_i64
f4_get_line_range_from_pos_range(Application_Links *app, Buffer_ID buffer, Range_i64 pos_range)
{
Range_i64 lines_range =
Ii64(get_line_number_from_pos(app, buffer, pos_range.min),
get_line_number_from_pos(app, buffer, pos_range.max));
return lines_range;
}
// TODO(PS): @F4Layer
internal Range_i64
f4_get_pos_range_from_line_range(Application_Links *app, Buffer_ID buffer, Range_i64 line_range)
{
if(line_range.min > line_range.max)
{
i64 swap = line_range.max;
line_range.max = line_range.min;
line_range.min = swap;
}
Range_i64 pos_range =
Ii64(get_line_start_pos(app, buffer, line_range.min),
get_line_end_pos(app, buffer, line_range.max));
return pos_range;
}
internal void
reindent_pos_range(Application_Links *app, Buffer_ID buffer, Range_i64 range, i64 indent_delta)
{
reindent_line_range(app, buffer,
f4_get_line_range_from_pos_range(app, buffer, range),
indent_delta);
}
CUSTOM_COMMAND_SIG(unindent_line)
{
View_ID view = get_active_view(app, Access_ReadWrite);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
i64 pos = view_get_cursor_pos(app, view);
i64 line = get_line_number_from_pos(app, buffer, pos);
reindent_line(app, buffer, line, -1);
}
internal void
adjust_cursor_and_mark_for_indentation(Application_Links *app, View_ID view, i64 original_cursor, i64 original_mark, Range_i64 original_line_range)
{
Buffer_ID buffer = view_get_buffer(app, view, Access_Read);
Scratch_Block scratch(app);
if(original_cursor == original_mark)
{
i64 start_pos = get_line_start_pos(app, buffer, original_line_range.min);
i64 new_pos = start_pos;
String_Const_u8 line = push_buffer_line(app, scratch, buffer, original_line_range.min);
for(u64 i = 0; i < line.size; i += 1)
{
if(!character_is_whitespace(line.str[i]))
{
new_pos = start_pos + (i64)i;
break;
}
}
view_set_cursor(app, view, seek_pos(new_pos));
view_set_mark(app, view, seek_pos(new_pos));
}
else
{
Range_i64 range = f4_get_pos_range_from_line_range(app, buffer, original_line_range);
view_set_cursor(app, view, seek_pos(original_cursor > original_mark ? range.max : range.min));
view_set_mark(app, view, seek_pos(original_cursor > original_mark ? range.min : range.max));
}
}
function void
update_range_indentation(Application_Links* app, i32 indent_offset)
{
Scratch_Block scratch(app);
View_ID view = get_active_view(app, Access_ReadWrite);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWrite);
i64 pos = view_get_cursor_pos(app, view);
i64 mark = view_get_mark_pos(app, view);
Range_i64 pos_range = Ii64(pos, mark);
Range_i64 line_range = get_line_range_from_pos_range(app, buffer, pos_range);
History_Group group = history_group_begin(app, buffer);
reindent_pos_range(app, buffer, Ii64(pos, mark), indent_offset);
adjust_cursor_and_mark_for_indentation(app, view, pos, mark, line_range);
history_group_end(group);
no_mark_snap_to_cursor(app, view);
}
CUSTOM_COMMAND_SIG(indent_range)
{
update_range_indentation(app, 1);
}
CUSTOM_COMMAND_SIG(unindent_range)
{
update_range_indentation(app, -1);
}
CUSTOM_COMMAND_SIG(indent_or_autocomplete)
{
Scratch_Block scratch(app);
View_ID view = get_active_view(app, Access_ReadVisible);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
if (buffer != 0)
{
i64 pos = view_get_cursor_pos(app, view);
Buffer_Cursor buffer_cursor = buffer_compute_cursor(app, buffer, seek_pos(pos));
Buffer_Cursor line_start_cursor = get_line_start(app, buffer, buffer_cursor.line);
u8 char_before = buffer_get_char(app, buffer, pos - 1);
if ((buffer_cursor.pos == line_start_cursor.pos) || character_is_whitespace(char_before))
{
i64 indent_width = (i64)def_get_config_u64(app, vars_save_string_lit("indent_width"));
b32 indent_with_tabs = def_get_config_b32(vars_save_string_lit("indent_with_tabs"));
String_Const_u8 indent_string;
if (indent_with_tabs) {
indent_string = str8_lit("\t");
} else {
indent_string = push_stringf(scratch, "%.*s", Min(indent_width, 16), " ");
}
write_text(app, indent_string);
}
else
{
word_complete(app);
}
}
}
///////////////////////////////////////////
CUSTOM_COMMAND_SIG(input_enter_behavior)
{
View_ID view = get_active_view(app, Access_ReadVisible);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
if (buffer == 0)
{
buffer = view_get_buffer(app, view, Access_ReadVisible);
if (buffer != 0)
{
goto_jump_at_cursor(app);
lock_jump_buffer(app, buffer);
}
}
else
{
leave_current_input_unhandled(app);
}
}
CUSTOM_COMMAND_SIG(input_alt_enter_behavior)
{
View_ID view = get_active_view(app, Access_ReadVisible);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
if (buffer == 0){
buffer = view_get_buffer(app, view, Access_ReadVisible);
if (buffer != 0){
goto_jump_at_cursor_same_panel(app);
lock_jump_buffer(app, buffer);
}
}
else
{
leave_current_input_unhandled(app);
}
}
// BOTTOM

View File

@ -95,95 +95,5 @@ CUSTOM_DOC("Jump to the first definition in the code index matching an identifie
}
}
global String_Const_u8 code_index_note_strs[] = {
str8_lit("Type"),
str8_lit("Function"),
str8_lit("Macro"),
str8_lit("None"),
};
function bool
note_is_of_kind(Code_Index_Note_Kind* kinds, i32 kinds_count, Code_Index_Note* note)
{
bool result = false;
for (i32 i = 0; i < kinds_count; i++)
{
if (kinds[i] == note->note_kind)
{
result = true;
break;
}
}
return result;
}
function void
lister_add_from_buffer_code_index_filtered(Lister* lister, Buffer_ID buffer, Arena* scratch, Code_Index_Note_Kind* kinds, i32 kinds_count, bool filter_all_but_last)
{
Code_Index_File* file_notes = code_index_get_file(buffer);
if (!file_notes) return;
for (Code_Index_Note* note = file_notes->note_list.first;
note != 0;
note = note->next)
{
if (!note_is_of_kind(kinds, kinds_count, note)) continue;
if (filter_all_but_last && note->next_in_hash) continue;
String_Const_u8 sort = code_index_note_strs[note->note_kind];
Tiny_Jump *jump = push_array(scratch, Tiny_Jump, 1);
jump->buffer = buffer;
jump->pos = note->pos.start;
lister_add_item(lister, note->text, sort, jump, 0);
}
}
function void
run_jump_lister(Application_Links* app, Lister* lister)
{
Lister_Result l_result = run_lister(app, lister);
Tiny_Jump result = {};
if (!l_result.canceled && l_result.user_data != 0){
block_copy_struct(&result, (Tiny_Jump*)l_result.user_data);
}
if (result.buffer != 0)
{
View_ID view = get_this_ctx_view(app, Access_Always);
point_stack_push_view_cursor(app, view);
jump_to_location(app, view, result.buffer, result.pos);
}
}
function void
lister_search_filtered(Application_Links* app, char* query, Code_Index_Note_Kind* allowed, i32 allowed_count, bool filter_all_but_last)
{
Scratch_Block scratch(app);
Lister_Block lister(app, scratch);
lister_set_query(lister, query);
lister_set_default_handlers(lister);
for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always);
buffer != 0; buffer = get_buffer_next(app, buffer, Access_Always))
{
lister_add_from_buffer_code_index_filtered(lister, buffer, scratch, allowed, allowed_count, filter_all_but_last);
}
run_jump_lister(app, lister);
}
CUSTOM_UI_COMMAND_SIG(lister_search_all)
CUSTOM_DOC("Runs a search lister on all code indices of the project")
{
char *query = "Search:";
Code_Index_Note_Kind allowed[] = {
CodeIndexNote_Macro,
CodeIndexNote_Function,
CodeIndexNote_Type,
};
lister_search_filtered(app, query, allowed, 3, false);
}
// BOTTOM

View File

@ -15,274 +15,12 @@
#include "generated/managed_id_metadata.cpp"
#endif
#define EXTERNAL_KEYBOARD 0
#if OS_MAC && !EXTERNAL_KEYBOARD
global u32 key_alt = KeyCode_Command;
#else
global u32 key_alt = KeyCode_Alt;
#endif
function String_Const_u8
get_lexeme_under_cursor(Application_Links* app, View_ID view, Buffer_ID buffer, Arena* arena)
{
String_Const_u8 lexeme = {0};
i64 pos = view_get_cursor_pos(app, view);
Token* token = get_token_from_pos(app, buffer, pos);
if (token != 0) {
lexeme = push_token_lexeme(app, arena, buffer, token);
}
return lexeme;
}
function void
go_to_definition(Application_Links* app, String_Const_u8 lexeme, View_ID view)
{
Code_Index_Note* note = 0;
// if we're trying to go to the definition of the same lexeme as last time
// then there are probably a typedef + declaration in different locations so
// we want to advance to the next code index note that matches this lexeme
// and then loop
if (string_match(go_to_definition_last_lexeme, lexeme))
{
Code_Index_Note_List* list = code_index__list_from_string(lexeme);
u64 i = 0;
for (Code_Index_Note *it = list->first;
it != 0;
it = it->next_in_hash, i++){
if (string_match(lexeme, it->text) && i > go_to_definition_last_lexeme_index){
note = it;
go_to_definition_last_lexeme_index = i;
break;
}
}
}
if (!note)
{
note = code_index_note_from_string(lexeme);
go_to_definition_last_lexeme = lexeme;
go_to_definition_last_lexeme_index = 0;
}
if (note == 0) return;
Buffer_ID buffer = note->file->buffer;
view_set_buffer(app, view, buffer, 0);
switch (note->note_kind)
{
case CodeIndexNote_Type:
case CodeIndexNote_Function:
case CodeIndexNote_Macro:
{
jump_to_location(app, view, note->file->buffer, note->pos.start);
} break;
default: {} break;
}
}
CUSTOM_COMMAND_SIG(cmd_enter_behavior)
{
View_ID view = get_active_view(app, Access_ReadVisible);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
if (buffer == 0){
buffer = view_get_buffer(app, view, Access_ReadVisible);
if (buffer != 0){
goto_jump_at_cursor(app);
lock_jump_buffer(app, buffer);
}
}
else{
Scratch_Block scratch(app);
String_Const_u8 lexeme = get_lexeme_under_cursor(app, view, buffer, scratch);
if (lexeme.size > 0) {
go_to_definition(app, lexeme, view);
}
}
}
CUSTOM_COMMAND_SIG(cmd_alt_enter_behavior)
{
View_ID view = get_active_view(app, Access_ReadVisible);
Buffer_ID buffer = view_get_buffer(app, view, Access_ReadWriteVisible);
if (buffer == 0){
buffer = view_get_buffer(app, view, Access_ReadVisible);
if (buffer != 0){
goto_jump_at_cursor_same_panel(app);
lock_jump_buffer(app, buffer);
}
}
else{
Scratch_Block scratch(app);
String_Const_u8 lexeme = get_lexeme_under_cursor(app, view, buffer, scratch);
if (lexeme.size > 0) {
view = get_next_view_looped_primary_panels(app, view, Access_Always);
go_to_definition(app, lexeme, view);
}
}
}
function void
bindings_cmd_misc(Mapping* m, Command_Map* map)
{
Bind(command_lister, KeyCode_W);
Bind(change_active_panel, KeyCode_E);
Bind(toggle_compilation_view, KeyCode_Minus);
}
function void
bindings_cmd_file_ops(Mapping* m, Command_Map* map)
{
Bind(set_mark, KeyCode_Space);
Bind(interactive_open_or_new, KeyCode_Comma);
Bind(interactive_switch_buffer, KeyCode_Period);
Bind(save, KeyCode_Semicolon);
}
function void
bindings_cmd_search(Mapping* m, Command_Map* map)
{
Bind(query_replace, KeyCode_S);
Bind(search, KeyCode_F);
Bind(list_all_locations_of_identifier, KeyCode_D);
Bind(list_all_substring_locations_case_insensitive, KeyCode_D, key_alt);
Bind(goto_next_jump, KeyCode_T);
Bind(goto_prev_jump, KeyCode_R);
// Listers
Bind(lister_search_all, KeyCode_1);
}
function void
bindings_cmd_nav(Mapping* m, Command_Map* map)
{
Bind(seek_beginning_of_line, KeyCode_Y);
Bind(seek_end_of_line, KeyCode_P);
Bind(move_left_token_boundary, KeyCode_U);
Bind(move_right_token_boundary, KeyCode_O);
Bind(move_up, KeyCode_I);
Bind(move_left, KeyCode_J);
Bind(move_down, KeyCode_K);
Bind(move_right, KeyCode_L);
Bind(move_up_to_blank_line_end, KeyCode_H);
Bind(move_down_to_blank_line_end, KeyCode_N);
Bind(cmd_enter_behavior, KeyCode_Return);
Bind(cmd_alt_enter_behavior, KeyCode_Return, key_alt);
Bind(jump_to_last_point, KeyCode_Semicolon, KeyCode_Control);
}
function void
custom_keyboard_bindings()
{
modal_set_cursor_color_u32(modal_mode_input, 0xFF00FF00);
modal_set_cursor_color_u32(modal_mode_cmd, 0xFFFF0000);
modal_set_cursor_color_u32(modal_mode_debug, 0xFF00F0FF);
MappingScope();
// Global commands
modal_bind_all(modal_map_id_global, modal_set_mode_toggle, KeyCode_F, key_alt, 0);
modal_bind_all(modal_map_id_global, modal_set_mode_next, KeyCode_F, KeyCode_Control, 0);
modal_bind_all(modal_map_id_global, exit_4coder, KeyCode_F4, key_alt, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F1, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F2, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F3, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F4, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F5, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F6, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F7, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F8, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F9, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F10, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F11, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F12, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F13, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F14, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F15, 0, 0);
modal_bind_all(modal_map_id_global, project_fkey_command, KeyCode_F16, 0, 0);
SelectMapping(&modal_get_mode(modal_mode_cmd)->map);
SelectMap(modal_map_id_global);
{
bindings_cmd_file_ops(m, map);
bindings_cmd_misc(m, map);
bindings_cmd_search(m, map);
bindings_cmd_nav(m, map);
// Text Editing
Bind(delete_to_end_of_line, KeyCode_A);
Bind(undo, KeyCode_Z);
Bind(redo, KeyCode_B);
Bind(copy, KeyCode_C);
Bind(paste, KeyCode_V);
Bind(cut, KeyCode_X);
Bind(backspace_char, KeyCode_Backspace);
Bind(backspace_alpha_numeric_or_camel_boundary, KeyCode_Backspace, key_alt);
Bind(backspace_token_boundary, KeyCode_Backspace, KeyCode_Control);
Bind(unindent_range, KeyCode_Tab, KeyCode_Shift);
Bind(indent_range, KeyCode_Tab);
// Macros
Bind(keyboard_macro_start_recording, KeyCode_1, key_alt);
Bind(keyboard_macro_finish_recording, KeyCode_2, key_alt);
Bind(keyboard_macro_replay, KeyCode_3, key_alt);
}
SelectMapping(&modal_get_mode(modal_mode_input)->map);
SelectMap(modal_map_id_global);
{
BindMouse(click_set_cursor_and_mark, MouseCode_Left);
BindMouseRelease(click_set_cursor, MouseCode_Left);
BindCore(click_set_cursor_and_mark, CoreCode_ClickActivateView);
BindMouseMove(click_set_cursor_if_lbutton);
Bind(delete_char, KeyCode_Delete);
Bind(backspace_char, KeyCode_Backspace);
Bind(backspace_alpha_numeric_or_camel_boundary, KeyCode_Backspace, key_alt);
Bind(backspace_token_boundary, KeyCode_Backspace, KeyCode_Control);
Bind(move_up, KeyCode_I, key_alt);
Bind(move_down, KeyCode_K, key_alt);
BindTextInput(write_text_and_auto_indent);
Bind(indent_or_autocomplete, KeyCode_Tab);
Bind(unindent_line, KeyCode_Tab, KeyCode_Shift);
Bind(write_todo, KeyCode_T, key_alt);
Bind(write_note, KeyCode_G, key_alt);
Bind(input_enter_behavior, KeyCode_Return);
Bind(input_alt_enter_behavior, KeyCode_Return, key_alt);
}
SelectMapping(&modal_get_mode(modal_mode_debug)->map);
SelectMap(modal_map_id_global);
{
bindings_cmd_file_ops(m, map);
bindings_cmd_misc(m, map);
bindings_cmd_search(m, map);
bindings_cmd_nav(m, map);
}
}
void
custom_layer_init(Application_Links *app){
Thread_Context *tctx = get_thread_context(app);
default_framework_init(app);
set_all_default_hooks(app);
modal_init(3, tctx);
custom_keyboard_bindings();
#if 0
mapping_init(tctx, &framework_mapping);
String_ID global_map_id = vars_save_string_lit("keys_global");
String_ID file_map_id = vars_save_string_lit("keys_file");
@ -293,8 +31,6 @@ custom_layer_init(Application_Links *app){
setup_default_mapping(&framework_mapping, global_map_id, file_map_id, code_map_id);
#endif
setup_essential_mapping(&framework_mapping, global_map_id, file_map_id, code_map_id);
#endif
}
#endif //FCODER_DEFAULT_BINDINGS

View File

@ -45,10 +45,6 @@ CUSTOM_ID(colors, defcolor_back_cycle);
CUSTOM_ID(colors, defcolor_text_cycle);
CUSTOM_ID(colors, defcolor_line_numbers_back);
CUSTOM_ID(colors, defcolor_line_numbers_text);
CUSTOM_ID(colors, defcolor_function);
CUSTOM_ID(colors, defcolor_operator);
CUSTOM_ID(colors, defcolor_type);
CUSTOM_ID(colors, defcolor_macro);
struct Color_Table_Node{
Color_Table_Node *next;

View File

@ -58,8 +58,7 @@ global b32 auto_center_after_jumps = AUTO_CENTER_AFTER_JUMPS;
global u8 locked_buffer_space[256];
global String_Const_u8 locked_buffer = {};
global View_ID global_compilation_view = 0;
global b32 global_compilation_view_expanded = 0;
global View_ID build_footer_panel_view_id = 0;
global u8 out_buffer_space[1024];
@ -112,31 +111,5 @@ global Point_Stack point_stack = {};
global Clipboard clipboard0 = {};
////////////////////////////////
// Modal System Maps
global String_ID modal_map_id_global;
global String_ID modal_map_id_file;
global String_ID modal_map_id_code;
// Modal system modes
global Modal_Mode* modal_modes;
global u32 modal_modes_cap;
// State Tracking
global u32 modal_last_mode;
global u32 modal_curr_mode;
// Mode Ids
global u32 modal_mode_input = 0;
global u32 modal_mode_cmd = 1;
global u32 modal_mode_debug = 2;
////////////////////////////////
static String_Const_u8 go_to_definition_last_lexeme = {};
static u64 go_to_definition_last_lexeme_index = 0;
// BOTTOM

View File

@ -13,51 +13,17 @@ CUSTOM_DOC("Default command for responding to a startup event")
String_Const_u8_Array file_names = input.event.core.file_names;
load_themes_default_folder(app);
default_4coder_initialize(app, file_names);
// Setup Default Layout
Buffer_ID comp_buffer = create_buffer(app, str8_lit("*compilation*"), BufferCreate_NeverAttachToFile | BufferCreate_AlwaysNew);
buffer_set_setting(app, comp_buffer, BufferSetting_Unimportant, true);
buffer_set_setting(app, comp_buffer, BufferSetting_ReadOnly, true);
Buffer_Identifier comp_name = buffer_identifier(str8_lit("*compilation*"));
Buffer_Identifier code_left_name = buffer_identifier(str8_lit("*scratch*"));
Buffer_Identifier code_right_name = buffer_identifier(str8_lit("*messages*"));
Buffer_ID comp_id = buffer_identifier_to_id(app, comp_name);
Buffer_ID code_left_id = buffer_identifier_to_id(app, code_left_name);
Buffer_ID code_right_id = buffer_identifier_to_id(app, code_right_name);
// Left Panel
View_ID left_view = get_active_view(app, Access_Always);
new_view_settings(app, left_view);
view_set_buffer(app, left_view, code_left_id, 0);
// Bottom panel
View_ID compilation_view = 0;
compilation_view = open_view(app, left_view, ViewSplit_Bottom);
new_view_settings(app, compilation_view);
Buffer_ID buffer = view_get_buffer(app, compilation_view, Access_Always);
Face_ID face_id = get_face_id(app, buffer);
Face_Metrics metrics = get_face_metrics(app, face_id);
view_set_split_pixel_size(app, compilation_view, (i32)(metrics.line_height*4.f));
view_set_passive(app, compilation_view, true);
global_compilation_view = compilation_view;
view_set_buffer(app, compilation_view, comp_id, 0);
// Right Panel
view_set_active(app, left_view);
open_panel_vsplit(app);
View_ID right_view = get_active_view(app, Access_Always);
view_set_buffer(app, right_view, code_right_id, 0);
view_set_active(app, left_view);
default_4coder_side_by_side_panels(app, file_names);
b32 auto_load = def_get_config_b32(vars_save_string_lit("automatically_load_project"));
if (auto_load){
load_project(app);
}
}
{
def_enable_virtual_whitespace = def_get_config_b32(vars_save_string_lit("enable_virtual_whitespace"));
clear_all_layouts(app);
}
system_set_fullscreen(false);
}
CUSTOM_COMMAND_SIG(default_try_exit)
@ -95,9 +61,7 @@ default_implicit_map(Application_Links *app, String_ID lang, String_ID mode, Inp
View_ID view = get_this_ctx_view(app, Access_Always);
Command_Map_ID map_id = default_get_map_id(app, view);
Modal_Mode* mode_curr = modal_get_mode_curr();
Mapping* mode_map = &mode_curr->map;
Command_Binding binding = map_get_binding_recursive(mode_map, map_id, event);
Command_Binding binding = map_get_binding_recursive(&framework_mapping, map_id, event);
// TODO(allen): map_id <-> map name?
result.map = 0;
@ -339,55 +303,26 @@ default_render_buffer(Application_Links *app, View_ID view_id, Face_ID face_id,
draw_comment_highlights(app, buffer, text_layout_id, &token_array, pairs, ArrayCount(pairs));
}
#if 0
// TODO(allen): Put in 4coder_draw.cpp
// NOTE(allen): Color functions
Scratch_Block scratch(app);
ARGB_Color color_function = fcolor_resolve(fcolor_id(defcolor_function));
ARGB_Color color_operator = fcolor_resolve(fcolor_id(defcolor_operator));
ARGB_Color color_type = fcolor_resolve(fcolor_id(defcolor_type));
ARGB_Color color_macro = fcolor_resolve(fcolor_id(defcolor_macro));
Scratch_Block scratch(app);
ARGB_Color argb = 0xFFFF00FF;
Token_Iterator_Array it = token_iterator_pos(0, &token_array, visible_range.first);
for (;;){
if (!token_it_inc_non_whitespace(&it)){
break;
}
Token *token = token_it_read(&it);
String_Const_u8 lexeme = push_token_lexeme(app, scratch, buffer, token);
Code_Index_Note *note = code_index_note_from_string(lexeme);
if (note != 0)
{
switch (note->note_kind)
{
case CodeIndexNote_Type:
{
paint_text_color(app, text_layout_id, Ii64_size(token->pos, token->size), color_type);
} break;
case CodeIndexNote_Function:
{
paint_text_color(app, text_layout_id, Ii64_size(token->pos, token->size), color_function);
} break;
case CodeIndexNote_Macro:
{
paint_text_color(app, text_layout_id, Ii64_size(token->pos, token->size), color_macro);
} break;
default: {} break;
if (!token_it_inc_non_whitespace(&it)){
break;
}
Token *token = token_it_read(&it);
String_Const_u8 lexeme = push_token_lexeme(app, scratch, buffer, token);
Code_Index_Note *note = code_index_note_from_string(lexeme);
if (note != 0 && note->note_kind == CodeIndexNote_Function){
paint_text_color(app, text_layout_id, Ii64_size(token->pos, token->size), argb);
}
}
else if (token->kind == TokenBaseKind_Operator ||
token->kind == TokenBaseKind_ScopeOpen ||
token->kind == TokenBaseKind_ScopeClose ||
token->kind == TokenBaseKind_ParentheticalOpen ||
token->kind == TokenBaseKind_ParentheticalClose ||
token->kind == TokenBaseKind_StatementClose)
{
paint_text_color(app, text_layout_id, Ii64_size(token->pos, token->size), color_operator);
}
}
#endif
}
else{
paint_text_color_fcolor(app, text_layout_id, visible_range, fcolor_id(defcolor_text_default));
@ -561,7 +496,27 @@ default_render_caller(Application_Links *app, Frame_Info frame_info, View_ID vie
}
function void
default_whole_screen_render_caller(Application_Links *app, Frame_Info frame_info){}
default_whole_screen_render_caller(Application_Links *app, Frame_Info frame_info){
#if 0
Rect_f32 region = global_get_screen_rectangle(app);
Vec2_f32 center = rect_center(region);
Face_ID face_id = get_face_id(app, 0);
Scratch_Block scratch(app);
draw_string_oriented(app, face_id, finalize_color(defcolor_text_default, 0),
SCu8("Hello, World!"), center - V2f32(200.f, 300.f),
0, V2f32(0.f, -1.f));
draw_string_oriented(app, face_id, finalize_color(defcolor_text_default, 0),
SCu8("Hello, World!"), center - V2f32(240.f, 300.f),
0, V2f32(0.f, 1.f));
draw_string_oriented(app, face_id, finalize_color(defcolor_text_default, 0),
SCu8("Hello, World!"), center - V2f32(400.f, 400.f),
0, V2f32(-1.f, 0.f));
draw_string_oriented(app, face_id, finalize_color(defcolor_text_default, 0),
SCu8("Hello, World!"), center - V2f32(400.f, -100.f),
0, V2f32(cos_f32(pi_f32*.333f), sin_f32(pi_f32*.333f)));
#endif
}
HOOK_SIG(default_view_adjust){
// NOTE(allen): Called whenever the view layout/sizes have been modified,
@ -794,8 +749,68 @@ BUFFER_HOOK_SIG(default_begin_buffer){
String_Const_u8 ext = string_file_extension(file_name);
for (i32 i = 0; i < extensions.count; ++i){
if (string_match(ext, extensions.strings[i])){
treat_as_code = true;
break;
if (string_match(ext, string_u8_litexpr("cpp")) ||
string_match(ext, string_u8_litexpr("h")) ||
string_match(ext, string_u8_litexpr("c")) ||
string_match(ext, string_u8_litexpr("hpp")) ||
string_match(ext, string_u8_litexpr("cc"))){
treat_as_code = true;
}
#if 0
treat_as_code = true;
if (string_match(ext, string_u8_litexpr("cs"))){
if (parse_context_language_cs == 0){
init_language_cs(app);
}
parse_context_id = parse_context_language_cs;
}
if (string_match(ext, string_u8_litexpr("java"))){
if (parse_context_language_java == 0){
init_language_java(app);
}
parse_context_id = parse_context_language_java;
}
if (string_match(ext, string_u8_litexpr("rs"))){
if (parse_context_language_rust == 0){
init_language_rust(app);
}
parse_context_id = parse_context_language_rust;
}
if (string_match(ext, string_u8_litexpr("cpp")) ||
string_match(ext, string_u8_litexpr("h")) ||
string_match(ext, string_u8_litexpr("c")) ||
string_match(ext, string_u8_litexpr("hpp")) ||
string_match(ext, string_u8_litexpr("cc"))){
if (parse_context_language_cpp == 0){
init_language_cpp(app);
}
parse_context_id = parse_context_language_cpp;
}
// TODO(NAME): Real GLSL highlighting
if (string_match(ext, string_u8_litexpr("glsl"))){
if (parse_context_language_cpp == 0){
init_language_cpp(app);
}
parse_context_id = parse_context_language_cpp;
}
// TODO(NAME): Real Objective-C highlighting
if (string_match(ext, string_u8_litexpr("m"))){
if (parse_context_language_cpp == 0){
init_language_cpp(app);
}
parse_context_id = parse_context_language_cpp;
}
#endif
break;
}
}
}
@ -817,7 +832,6 @@ BUFFER_HOOK_SIG(default_begin_buffer){
b32 use_lexer = false;
if (treat_as_code){
wrap_lines = def_get_config_b32(vars_save_string_lit("enable_code_wrapping"));
// TODO(PS): @Remove - consider removing the lexer for now? later, replace in favor of tree-sitter
use_lexer = true;
}
@ -825,7 +839,7 @@ BUFFER_HOOK_SIG(default_begin_buffer){
if (buffer_name.size > 0 && buffer_name.str[0] == '*' && buffer_name.str[buffer_name.size - 1] == '*'){
wrap_lines = def_get_config_b32(vars_save_string_lit("enable_output_wrapping"));
}
if (use_lexer){
ProfileBlock(app, "begin buffer kick off lexer");
Async_Task *lex_task_ptr = scope_attachment(app, scope, buffer_lex_task, Async_Task);

View File

@ -63,7 +63,6 @@
#include "4coder_profile_inspect.h"
#include "4coder_tutorial.h"
#include "4coder_search_list.h"
#include "4coder_modal.h"
////////////////////////////////
@ -140,7 +139,6 @@
#include "4coder_docs.cpp"
#include "4coder_variables.cpp"
#include "4coder_search_list.cpp"
#include "4coder_modal.cpp"
#include "4coder_examples.cpp"

View File

@ -850,15 +850,21 @@ draw_original_4coder_style_cursor_mark_highlight(Application_Links *app, View_ID
i64 cursor_pos = view_get_cursor_pos(app, view_id);
i64 mark_pos = view_get_mark_pos(app, view_id);
if (is_active_view){
Modal_Mode* mode_curr = modal_get_mode_curr();
FColor c0 = mode_curr->cursor_color;
FColor c1 = fcolor_id(defcolor_at_cursor);
draw_character_block(app, text_layout_id, cursor_pos, roundness, c0);
paint_text_color_pos(app, text_layout_id, cursor_pos, c1);
draw_character_wire_frame(app, text_layout_id, mark_pos, roundness, outline_thickness, c0);
} else {
draw_character_wire_frame(app, text_layout_id, mark_pos, roundness, outline_thickness, fcolor_id(defcolor_mark));
draw_character_wire_frame(app, text_layout_id, cursor_pos, roundness, outline_thickness, fcolor_id(defcolor_cursor, cursor_sub_id));
draw_character_block(app, text_layout_id, cursor_pos, roundness,
fcolor_id(defcolor_cursor, cursor_sub_id));
paint_text_color_pos(app, text_layout_id, cursor_pos,
fcolor_id(defcolor_at_cursor));
draw_character_wire_frame(app, text_layout_id, mark_pos,
roundness, outline_thickness,
fcolor_id(defcolor_mark));
}
else{
draw_character_wire_frame(app, text_layout_id, mark_pos,
roundness, outline_thickness,
fcolor_id(defcolor_mark));
draw_character_wire_frame(app, text_layout_id, cursor_pos,
roundness, outline_thickness,
fcolor_id(defcolor_cursor, cursor_sub_id));
}
}
}

View File

@ -1,105 +0,0 @@
function void
modal_init(u32 mode_cap, Thread_Context* tctx){
Assert(mode_cap > 0);
modal_modes_cap = mode_cap;
modal_modes = base_array(tctx->allocator, Modal_Mode, mode_cap);
modal_map_id_global = vars_save_string_lit("keys_global");
modal_map_id_file = vars_save_string_lit("keys_file");
modal_map_id_code = vars_save_string_lit("keys_code");
for (u32 i = 0; i < modal_modes_cap; i++){
Modal_Mode* mode = modal_modes + i;
mapping_init(tctx, &mode->map);
setup_essential_mapping(&mode->map, modal_map_id_global, modal_map_id_file, modal_map_id_code);
}
}
function Modal_Mode*
modal_get_mode(u32 mode_id)
{
if (mode_id >= modal_modes_cap) return 0;
return modal_modes + mode_id;
}
function void
modal_bind(Mapping* mode, Command_Map* map, custom_cmd* proc, u32 key_code, u32 mod_key_code0, u32 mod_key_code1)
{
map_set_binding_l(mode, map, BindFWrap_(proc), InputEventKind_KeyStroke, key_code, mod_key_code0, mod_key_code1, 0);
}
function void
modal_bind(u32 mode_id, String_ID map_id, custom_cmd* proc, u32 key_code, u32 mod_key_code0, u32 mod_key_code1)
{
Assert(mode_id < modal_modes_cap);
Modal_Mode* mode = modal_get_mode(mode_id);
Mapping* m = &mode->map;
Command_Map* map = mapping_get_or_make_map(m, map_id);
modal_bind(m, map, proc, key_code, mod_key_code0, mod_key_code1);
}
function void
modal_bind_all(String_ID map_id, custom_cmd* proc, u32 key_code, u32 mod_key_code0, u32 mod_key_code1)
{
for (u32 i = 0; i < modal_modes_cap; i++)
{
Mapping* m = &modal_modes[i].map;
Command_Map* map = mapping_get_or_make_map(m, map_id);
modal_bind(m, map, proc, key_code, mod_key_code0, mod_key_code1);
}
}
function Modal_Mode*
modal_get_mode_curr()
{
return modal_get_mode(modal_curr_mode);
}
function void
modal_set_mode(u32 mode_id)
{
modal_last_mode = modal_curr_mode;
modal_curr_mode = mode_id;
}
function u32
modal_get_next_mode(u32 base)
{
u32 result = (base + 1) % modal_modes_cap;
return result;
}
function void
modal_set_cursor_color(u32 mode_id, FColor color)
{
Modal_Mode* mode = modal_get_mode(mode_id);
mode->cursor_color = color;
}
function void
modal_set_cursor_color_u32(u32 mode_id, u32 color)
{
FColor fc = {};
fc.argb = color;
modal_set_cursor_color(mode_id, fc);
}
CUSTOM_COMMAND_SIG(modal_set_mode_toggle)
{
u32 next_mode = modal_last_mode;
if (next_mode == modal_curr_mode)
{
next_mode = modal_get_next_mode(next_mode);
}
modal_set_mode(next_mode);
}
CUSTOM_COMMAND_SIG(modal_set_mode_next)
{
u32 next_mode = modal_get_next_mode(modal_curr_mode);
modal_set_mode(next_mode);
}

View File

@ -1,17 +0,0 @@
/* date = February 10th 2024 3:00 pm */
#ifndef FRED_MODAL_H
#define FRED_MODAL_H
struct Modal_Mode
{
Mapping map;
FColor cursor_color;
String_Const_u8 name;
};
typedef CUSTOM_COMMAND_SIG(custom_cmd);
function Modal_Mode* modal_get_mode_curr();
#endif //FRED_MODAL_H

View File

@ -2,7 +2,7 @@
#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 269
#define command_one_past_last_id 265
#if defined(CUSTOM_COMMAND_SIG)
#define PROC_LINKS(x,y) x
#else
@ -14,9 +14,7 @@ CUSTOM_COMMAND_SIG(auto_indent_line_at_cursor);
CUSTOM_COMMAND_SIG(auto_indent_range);
CUSTOM_COMMAND_SIG(auto_indent_whole_file);
CUSTOM_COMMAND_SIG(backspace_alpha_numeric_boundary);
CUSTOM_COMMAND_SIG(backspace_alpha_numeric_or_camel_boundary);
CUSTOM_COMMAND_SIG(backspace_char);
CUSTOM_COMMAND_SIG(backspace_token_boundary);
CUSTOM_COMMAND_SIG(basic_change_active_panel);
CUSTOM_COMMAND_SIG(begin_clipboard_collection_mode);
CUSTOM_COMMAND_SIG(build_in_build_panel);
@ -56,7 +54,6 @@ CUSTOM_COMMAND_SIG(delete_current_scope);
CUSTOM_COMMAND_SIG(delete_file_query);
CUSTOM_COMMAND_SIG(delete_line);
CUSTOM_COMMAND_SIG(delete_range);
CUSTOM_COMMAND_SIG(delete_to_end_of_line);
CUSTOM_COMMAND_SIG(display_key_codes);
CUSTOM_COMMAND_SIG(display_text_input);
CUSTOM_COMMAND_SIG(double_backspace);
@ -111,7 +108,6 @@ CUSTOM_COMMAND_SIG(list_all_locations_of_type_definition);
CUSTOM_COMMAND_SIG(list_all_locations_of_type_definition_of_identifier);
CUSTOM_COMMAND_SIG(list_all_substring_locations);
CUSTOM_COMMAND_SIG(list_all_substring_locations_case_insensitive);
CUSTOM_COMMAND_SIG(lister_search_all);
CUSTOM_COMMAND_SIG(load_project);
CUSTOM_COMMAND_SIG(load_theme_current_buffer);
CUSTOM_COMMAND_SIG(load_themes_default_folder);
@ -290,35 +286,33 @@ char *source_name;
i32 source_name_len;
i32 line_number;
};
static Command_Metadata fcoder_metacmd_table[269] = {
static Command_Metadata fcoder_metacmd_table[265] = {
{ PROC_LINKS(allow_mouse, 0), false, "allow_mouse", 11, "Shows the mouse and causes all mouse input to be processed normally.", 68, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 481 },
{ PROC_LINKS(auto_indent_line_at_cursor, 0), false, "auto_indent_line_at_cursor", 26, "Auto-indents the line on which the cursor sits.", 47, "C:\\projects\\4coder_gs\\code\\custom\\4coder_auto_indent.cpp", 56, 420 },
{ PROC_LINKS(auto_indent_range, 0), false, "auto_indent_range", 17, "Auto-indents the range between the cursor and the mark.", 55, "C:\\projects\\4coder_gs\\code\\custom\\4coder_auto_indent.cpp", 56, 430 },
{ PROC_LINKS(auto_indent_whole_file, 0), false, "auto_indent_whole_file", 22, "Audo-indents the entire current buffer.", 39, "C:\\projects\\4coder_gs\\code\\custom\\4coder_auto_indent.cpp", 56, 411 },
{ PROC_LINKS(backspace_alpha_numeric_boundary, 0), false, "backspace_alpha_numeric_boundary", 32, "Delete characters between the cursor position and the first alphanumeric boundary to the left.", 94, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 154 },
{ PROC_LINKS(backspace_alpha_numeric_or_camel_boundary, 0), false, "backspace_alpha_numeric_or_camel_boundary", 41, "Deletes left to a alphanumeric or camel boundary.", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 277 },
{ PROC_LINKS(backspace_char, 0), false, "backspace_char", 14, "Deletes the character to the left of the cursor.", 48, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 96 },
{ PROC_LINKS(backspace_token_boundary, 0), false, "backspace_token_boundary", 24, "Deletes left to a token boundary.", 33, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 287 },
{ PROC_LINKS(basic_change_active_panel, 0), false, "basic_change_active_panel", 25, "Change the currently active panel, moving to the panel with the next highest view_id. Will not skipe the build panel if it is open.", 132, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 801 },
{ PROC_LINKS(basic_change_active_panel, 0), false, "basic_change_active_panel", 25, "Change the currently active panel, moving to the panel with the next highest view_id. Will not skipe the build panel if it is open.", 132, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 668 },
{ PROC_LINKS(begin_clipboard_collection_mode, 0), true, "begin_clipboard_collection_mode", 31, "Allows the user to copy multiple strings from other applications before switching to 4coder and pasting them all.", 113, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 71 },
{ PROC_LINKS(build_in_build_panel, 0), false, "build_in_build_panel", 20, "Looks for a build.bat, build.sh, or makefile in the current and parent directories. Runs the first that it finds and prints the output to *compilation*. Puts the *compilation* buffer in a panel at the footer of the current view.", 230, "C:\\projects\\4coder_gs\\code\\custom\\4coder_build_commands.cpp", 59, 160 },
{ PROC_LINKS(build_search, 0), false, "build_search", 12, "Looks for a build.bat, build.sh, or makefile in the current and parent directories. Runs the first that it finds and prints the output to *compilation*.", 153, "C:\\projects\\4coder_gs\\code\\custom\\4coder_build_commands.cpp", 59, 123 },
{ PROC_LINKS(center_view, 0), false, "center_view", 11, "Centers the view vertically on the line on which the cursor sits.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 330 },
{ PROC_LINKS(center_view, 0), false, "center_view", 11, "Centers the view vertically on the line on which the cursor sits.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 197 },
{ PROC_LINKS(change_active_panel, 0), false, "change_active_panel", 19, "Change the currently active panel, moving to the panel with the next highest view_id.", 85, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 356 },
{ PROC_LINKS(change_active_panel_backwards, 0), false, "change_active_panel_backwards", 29, "Change the currently active panel, moving to the panel with the next lowest view_id.", 84, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 362 },
{ PROC_LINKS(change_to_build_panel, 0), false, "change_to_build_panel", 21, "If the special build panel is open, makes the build panel the active panel.", 75, "C:\\projects\\4coder_gs\\code\\custom\\4coder_build_commands.cpp", 59, 181 },
{ PROC_LINKS(clean_all_lines, 0), false, "clean_all_lines", 15, "Removes trailing whitespace from all lines and removes all blank lines in the current buffer.", 93, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 781 },
{ PROC_LINKS(clean_trailing_whitespace, 0), false, "clean_trailing_whitespace", 25, "Removes trailing whitespace from all lines in the current buffer.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 790 },
{ PROC_LINKS(clean_all_lines, 0), false, "clean_all_lines", 15, "Removes trailing whitespace from all lines and removes all blank lines in the current buffer.", 93, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 648 },
{ PROC_LINKS(clean_trailing_whitespace, 0), false, "clean_trailing_whitespace", 25, "Removes trailing whitespace from all lines in the current buffer.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 657 },
{ PROC_LINKS(clear_all_themes, 0), false, "clear_all_themes", 16, "Clear the theme list", 20, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 565 },
{ PROC_LINKS(clear_clipboard, 0), false, "clear_clipboard", 15, "Clears the history of the clipboard", 35, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 221 },
{ PROC_LINKS(click_set_cursor, 0), false, "click_set_cursor", 16, "Sets the cursor position to the mouse position.", 47, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 368 },
{ PROC_LINKS(click_set_cursor_and_mark, 0), false, "click_set_cursor_and_mark", 25, "Sets the cursor position and mark to the mouse position.", 56, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 358 },
{ PROC_LINKS(click_set_cursor_if_lbutton, 0), false, "click_set_cursor_if_lbutton", 27, "If the mouse left button is pressed, sets the cursor position to the mouse position.", 84, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 378 },
{ PROC_LINKS(click_set_mark, 0), false, "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 391 },
{ PROC_LINKS(click_set_cursor, 0), false, "click_set_cursor", 16, "Sets the cursor position to the mouse position.", 47, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 235 },
{ PROC_LINKS(click_set_cursor_and_mark, 0), false, "click_set_cursor_and_mark", 25, "Sets the cursor position and mark to the mouse position.", 56, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 225 },
{ PROC_LINKS(click_set_cursor_if_lbutton, 0), false, "click_set_cursor_if_lbutton", 27, "If the mouse left button is pressed, sets the cursor position to the mouse position.", 84, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 245 },
{ PROC_LINKS(click_set_mark, 0), false, "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 258 },
{ PROC_LINKS(clipboard_record_clip, 0), false, "clipboard_record_clip", 21, "In response to a new clipboard contents events, saves the new clip onto the clipboard history", 93, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 7 },
{ PROC_LINKS(close_all_code, 0), false, "close_all_code", 14, "Closes any buffer with a filename ending with an extension configured to be recognized as a code file type.", 107, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 829 },
{ PROC_LINKS(close_build_panel, 0), false, "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "C:\\projects\\4coder_gs\\code\\custom\\4coder_build_commands.cpp", 59, 175 },
{ PROC_LINKS(close_panel, 0), false, "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 809 },
{ PROC_LINKS(close_panel, 0), false, "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 676 },
{ PROC_LINKS(command_documentation, 0), true, "command_documentation", 21, "Prompts the user to select a command then loads a doc buffer for that item", 74, "C:\\projects\\4coder_gs\\code\\custom\\4coder_docs.cpp", 49, 190 },
{ PROC_LINKS(command_lister, 0), true, "command_lister", 14, "Opens an interactive list of all registered commands.", 53, "C:\\projects\\4coder_gs\\code\\custom\\4coder_lists.cpp", 50, 761 },
{ PROC_LINKS(comment_line, 0), false, "comment_line", 12, "Insert '//' at the beginning of the line after leading whitespace.", 66, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 125 },
@ -327,25 +321,24 @@ static Command_Metadata fcoder_metacmd_table[269] = {
{ PROC_LINKS(cursor_mark_swap, 0), false, "cursor_mark_swap", 16, "Swaps the position of the cursor and the mark.", 46, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 124 },
{ PROC_LINKS(custom_api_documentation, 0), true, "custom_api_documentation", 24, "Prompts the user to select a Custom API item then loads a doc buffer for that item", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_docs.cpp", 49, 175 },
{ PROC_LINKS(cut, 0), false, "cut", 3, "Cut the text in the range from the cursor to the mark onto the clipboard.", 73, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 119 },
{ PROC_LINKS(decrease_face_size, 0), false, "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 892 },
{ PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2225 },
{ PROC_LINKS(decrease_face_size, 0), false, "decrease_face_size", 18, "Decrease the size of the face used by the current buffer.", 57, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 759 },
{ PROC_LINKS(default_file_externally_modified, 0), false, "default_file_externally_modified", 32, "Notes the external modification of attached files by printing a message.", 72, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2067 },
{ PROC_LINKS(default_startup, 0), false, "default_startup", 15, "Default command for responding to a startup event", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 7 },
{ PROC_LINKS(default_try_exit, 0), false, "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 63 },
{ PROC_LINKS(default_view_input_handler, 0), false, "default_view_input_handler", 26, "Input consumption loop for default view behavior", 48, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 109 },
{ PROC_LINKS(delete_alpha_numeric_boundary, 0), false, "delete_alpha_numeric_boundary", 29, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 295 },
{ PROC_LINKS(default_try_exit, 0), false, "default_try_exit", 16, "Default command for responding to a try-exit event", 50, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 29 },
{ PROC_LINKS(default_view_input_handler, 0), false, "default_view_input_handler", 26, "Input consumption loop for default view behavior", 48, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_hooks.cpp", 58, 73 },
{ PROC_LINKS(delete_alpha_numeric_boundary, 0), false, "delete_alpha_numeric_boundary", 29, "Delete characters between the cursor position and the first alphanumeric boundary to the right.", 95, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 162 },
{ PROC_LINKS(delete_char, 0), false, "delete_char", 11, "Deletes the character to the right of the cursor.", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 79 },
{ PROC_LINKS(delete_current_scope, 0), false, "delete_current_scope", 20, "Deletes the braces surrounding the currently selected scope. Leaves the contents within the scope.", 99, "C:\\projects\\4coder_gs\\code\\custom\\4coder_scope_commands.cpp", 59, 112 },
{ PROC_LINKS(delete_file_query, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1518 },
{ PROC_LINKS(delete_line, 0), false, "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1690 },
{ PROC_LINKS(delete_file_query, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1385 },
{ PROC_LINKS(delete_line, 0), false, "delete_line", 11, "Delete the line the on which the cursor sits.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1557 },
{ PROC_LINKS(delete_range, 0), false, "delete_range", 12, "Deletes the text in the range between the cursor and the mark.", 62, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 134 },
{ PROC_LINKS(delete_to_end_of_line, 0), false, "delete_to_end_of_line", 21, "Deletes all text from the cursor to the end of the line", 55, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1709 },
{ PROC_LINKS(display_key_codes, 0), false, "display_key_codes", 17, "Example of input handling loop", 30, "C:\\projects\\4coder_gs\\code\\custom\\4coder_examples.cpp", 53, 90 },
{ PROC_LINKS(display_text_input, 0), false, "display_text_input", 18, "Example of to_writable and leave_current_input_unhandled", 56, "C:\\projects\\4coder_gs\\code\\custom\\4coder_examples.cpp", 53, 137 },
{ PROC_LINKS(double_backspace, 0), false, "double_backspace", 16, "Example of history group helpers", 32, "C:\\projects\\4coder_gs\\code\\custom\\4coder_examples.cpp", 53, 10 },
{ PROC_LINKS(duplicate_line, 0), false, "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1676 },
{ PROC_LINKS(duplicate_line, 0), false, "duplicate_line", 14, "Create a copy of the line on which the cursor sits.", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1543 },
{ PROC_LINKS(execute_any_cli, 0), false, "execute_any_cli", 15, "Queries for an output buffer name and system command, runs the system command as a CLI and prints the output to the specified buffer.", 133, "C:\\projects\\4coder_gs\\code\\custom\\4coder_cli_command.cpp", 56, 22 },
{ PROC_LINKS(execute_previous_cli, 0), false, "execute_previous_cli", 20, "If the command execute_any_cli has already been used, this will execute a CLI reusing the most recent buffer name and command.", 126, "C:\\projects\\4coder_gs\\code\\custom\\4coder_cli_command.cpp", 56, 7 },
{ PROC_LINKS(exit_4coder, 0), false, "exit_4coder", 11, "Attempts to close 4coder.", 25, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 981 },
{ PROC_LINKS(exit_4coder, 0), false, "exit_4coder", 11, "Attempts to close 4coder.", 25, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 848 },
{ PROC_LINKS(go_to_user_directory, 0), false, "go_to_user_directory", 20, "Go to the 4coder user directory", 31, "C:\\projects\\4coder_gs\\code\\custom\\4coder_config.cpp", 51, 1655 },
{ PROC_LINKS(goto_beginning_of_file, 0), false, "goto_beginning_of_file", 22, "Sets the cursor to the beginning of the file.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_helper.cpp", 51, 2258 },
{ PROC_LINKS(goto_end_of_file, 0), false, "goto_end_of_file", 16, "Sets the cursor to the end of the file.", 39, "C:\\projects\\4coder_gs\\code\\custom\\4coder_helper.cpp", 51, 2266 },
@ -353,18 +346,18 @@ static Command_Metadata fcoder_metacmd_table[269] = {
{ PROC_LINKS(goto_first_jump_same_panel_sticky, 0), false, "goto_first_jump_same_panel_sticky", 33, "If a buffer containing jump locations has been locked in, goes to the first jump in the buffer and views the buffer in the panel where the jump list was.", 153, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 542 },
{ PROC_LINKS(goto_jump_at_cursor, 0), false, "goto_jump_at_cursor", 19, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in another view and changes the active panel to the view containing the jump.", 187, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 348 },
{ PROC_LINKS(goto_jump_at_cursor_same_panel, 0), false, "goto_jump_at_cursor_same_panel", 30, "If the cursor is found to be on a jump location, parses the jump location and brings up the file and position in this view, losing the compilation output or jump list.", 167, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 375 },
{ PROC_LINKS(goto_line, 0), false, "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 989 },
{ PROC_LINKS(goto_line, 0), false, "goto_line", 9, "Queries the user for a number, and jumps the cursor to the corresponding line.", 78, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 856 },
{ PROC_LINKS(goto_next_jump, 0), false, "goto_next_jump", 14, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, skipping sub jump locations.", 123, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 464 },
{ PROC_LINKS(goto_next_jump_no_skips, 0), false, "goto_next_jump_no_skips", 23, "If a buffer containing jump locations has been locked in, goes to the next jump in the buffer, and does not skip sub jump locations.", 132, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 494 },
{ PROC_LINKS(goto_prev_jump, 0), false, "goto_prev_jump", 14, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, skipping sub jump locations.", 127, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 481 },
{ PROC_LINKS(goto_prev_jump_no_skips, 0), false, "goto_prev_jump_no_skips", 23, "If a buffer containing jump locations has been locked in, goes to the previous jump in the buffer, and does not skip sub jump locations.", 136, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 511 },
{ PROC_LINKS(hide_filebar, 0), false, "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 839 },
{ PROC_LINKS(hide_scrollbar, 0), false, "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 825 },
{ PROC_LINKS(hide_filebar, 0), false, "hide_filebar", 12, "Sets the current view to hide it's filebar.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 706 },
{ PROC_LINKS(hide_scrollbar, 0), false, "hide_scrollbar", 14, "Sets the current view to hide it's scrollbar.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 692 },
{ PROC_LINKS(hms_demo_tutorial, 0), false, "hms_demo_tutorial", 17, "Tutorial for built in 4coder bindings and features.", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_tutorial.cpp", 53, 869 },
{ PROC_LINKS(if0_off, 0), false, "if0_off", 7, "Surround the range between the cursor and mark with an '#if 0' and an '#endif'", 78, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 70 },
{ PROC_LINKS(if_read_only_goto_position, 0), false, "if_read_only_goto_position", 26, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor.", 106, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 564 },
{ PROC_LINKS(if_read_only_goto_position_same_panel, 0), false, "if_read_only_goto_position_same_panel", 37, "If the buffer in the active view is writable, inserts a character, otherwise performs goto_jump_at_cursor_same_panel.", 117, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_sticky.cpp", 56, 581 },
{ PROC_LINKS(increase_face_size, 0), false, "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 881 },
{ PROC_LINKS(increase_face_size, 0), false, "increase_face_size", 18, "Increase the size of the face used by the current buffer.", 57, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 748 },
{ PROC_LINKS(interactive_kill_buffer, 0), true, "interactive_kill_buffer", 23, "Interactively kill an open buffer.", 34, "C:\\projects\\4coder_gs\\code\\custom\\4coder_lists.cpp", 50, 521 },
{ PROC_LINKS(interactive_new, 0), true, "interactive_new", 15, "Interactively creates a new file.", 33, "C:\\projects\\4coder_gs\\code\\custom\\4coder_lists.cpp", 50, 661 },
{ PROC_LINKS(interactive_open, 0), true, "interactive_open", 16, "Interactively opens a file.", 27, "C:\\projects\\4coder_gs\\code\\custom\\4coder_lists.cpp", 50, 715 },
@ -372,13 +365,13 @@ static Command_Metadata fcoder_metacmd_table[269] = {
{ PROC_LINKS(interactive_switch_buffer, 0), true, "interactive_switch_buffer", 25, "Interactively switch to an open buffer.", 39, "C:\\projects\\4coder_gs\\code\\custom\\4coder_lists.cpp", 50, 511 },
{ PROC_LINKS(jump_to_definition, 0), true, "jump_to_definition", 18, "List all definitions in the code index and jump to one chosen by the user.", 74, "C:\\projects\\4coder_gs\\code\\custom\\4coder_code_index_listers.cpp", 63, 12 },
{ PROC_LINKS(jump_to_definition_at_cursor, 0), true, "jump_to_definition_at_cursor", 28, "Jump to the first definition in the code index matching an identifier at the cursor", 83, "C:\\projects\\4coder_gs\\code\\custom\\4coder_code_index_listers.cpp", 63, 68 },
{ PROC_LINKS(jump_to_last_point, 0), false, "jump_to_last_point", 18, "Read from the top of the point stack and jump there; if already there pop the top and go to the next option", 107, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1471 },
{ PROC_LINKS(jump_to_last_point, 0), false, "jump_to_last_point", 18, "Read from the top of the point stack and jump there; if already there pop the top and go to the next option", 107, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1338 },
{ PROC_LINKS(keyboard_macro_finish_recording, 0), false, "keyboard_macro_finish_recording", 31, "Stop macro recording, do nothing if macro recording is not already started", 74, "C:\\projects\\4coder_gs\\code\\custom\\4coder_keyboard_macro.cpp", 59, 54 },
{ PROC_LINKS(keyboard_macro_replay, 0), false, "keyboard_macro_replay", 21, "Replay the most recently recorded keyboard macro", 48, "C:\\projects\\4coder_gs\\code\\custom\\4coder_keyboard_macro.cpp", 59, 77 },
{ PROC_LINKS(keyboard_macro_start_recording, 0), false, "keyboard_macro_start_recording", 30, "Start macro recording, do nothing if macro recording is already started", 71, "C:\\projects\\4coder_gs\\code\\custom\\4coder_keyboard_macro.cpp", 59, 41 },
{ PROC_LINKS(kill_buffer, 0), false, "kill_buffer", 11, "Kills the current buffer.", 25, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1886 },
{ PROC_LINKS(kill_buffer, 0), false, "kill_buffer", 11, "Kills the current buffer.", 25, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1728 },
{ PROC_LINKS(kill_tutorial, 0), false, "kill_tutorial", 13, "If there is an active tutorial, kill it.", 40, "C:\\projects\\4coder_gs\\code\\custom\\4coder_tutorial.cpp", 53, 9 },
{ PROC_LINKS(left_adjust_view, 0), false, "left_adjust_view", 16, "Sets the left size of the view near the x position of the cursor.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 345 },
{ PROC_LINKS(left_adjust_view, 0), false, "left_adjust_view", 16, "Sets the left size of the view near the x position of the cursor.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 212 },
{ PROC_LINKS(list_all_functions_all_buffers, 0), false, "list_all_functions_all_buffers", 30, "Creates a jump list of lines from all buffers that appear to define or declare functions.", 89, "C:\\projects\\4coder_gs\\code\\custom\\4coder_function_list.cpp", 58, 296 },
{ PROC_LINKS(list_all_functions_all_buffers_lister, 0), true, "list_all_functions_all_buffers_lister", 37, "Creates a lister of locations that look like function definitions and declarations all buffers.", 95, "C:\\projects\\4coder_gs\\code\\custom\\4coder_function_list.cpp", 58, 302 },
{ PROC_LINKS(list_all_functions_current_buffer, 0), false, "list_all_functions_current_buffer", 33, "Creates a jump list of lines of the current buffer that appear to define or declare functions.", 94, "C:\\projects\\4coder_gs\\code\\custom\\4coder_function_list.cpp", 58, 268 },
@ -393,60 +386,59 @@ static Command_Metadata fcoder_metacmd_table[269] = {
{ PROC_LINKS(list_all_locations_of_type_definition_of_identifier, 0), false, "list_all_locations_of_type_definition_of_identifier", 51, "Reads a token or word under the cursor and lists all locations of strings that appear to define a type whose name matches it.", 125, "C:\\projects\\4coder_gs\\code\\custom\\4coder_search.cpp", 51, 224 },
{ PROC_LINKS(list_all_substring_locations, 0), false, "list_all_substring_locations", 28, "Queries the user for a string and lists all case-sensitive substring matches found in all open buffers.", 103, "C:\\projects\\4coder_gs\\code\\custom\\4coder_search.cpp", 51, 174 },
{ PROC_LINKS(list_all_substring_locations_case_insensitive, 0), false, "list_all_substring_locations_case_insensitive", 45, "Queries the user for a string and lists all case-insensitive substring matches found in all open buffers.", 105, "C:\\projects\\4coder_gs\\code\\custom\\4coder_search.cpp", 51, 186 },
{ PROC_LINKS(lister_search_all, 0), true, "lister_search_all", 17, "Runs a search lister on all code indices of the project", 55, "C:\\projects\\4coder_gs\\code\\custom\\4coder_code_index_listers.cpp", 63, 176 },
{ PROC_LINKS(load_project, 0), false, "load_project", 12, "Looks for a project.4coder file in the current directory and tries to load it. Looks in parent directories until a project file is found or there are no more parents.", 167, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 856 },
{ PROC_LINKS(load_theme_current_buffer, 0), false, "load_theme_current_buffer", 25, "Parse the current buffer as a theme file and add the theme to the theme list. If the buffer has a .4coder postfix in it's name, it is removed when the name is saved.", 165, "C:\\projects\\4coder_gs\\code\\custom\\4coder_config.cpp", 51, 1611 },
{ PROC_LINKS(load_themes_default_folder, 0), false, "load_themes_default_folder", 26, "Loads all the theme files in the default theme folder.", 54, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 535 },
{ PROC_LINKS(load_themes_hot_directory, 0), false, "load_themes_hot_directory", 25, "Loads all the theme files in the current hot directory.", 55, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 554 },
{ PROC_LINKS(make_directory_query, 0), false, "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1630 },
{ PROC_LINKS(make_directory_query, 0), false, "make_directory_query", 20, "Queries the user for a name and creates a new directory with the given name.", 76, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1497 },
{ PROC_LINKS(miblo_decrement_basic, 0), false, "miblo_decrement_basic", 21, "Decrement an integer under the cursor by one.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_miblo_numbers.cpp", 58, 44 },
{ PROC_LINKS(miblo_decrement_time_stamp, 0), false, "miblo_decrement_time_stamp", 26, "Decrement a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "C:\\projects\\4coder_gs\\code\\custom\\4coder_miblo_numbers.cpp", 58, 237 },
{ PROC_LINKS(miblo_decrement_time_stamp_minute, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_miblo_numbers.cpp", 58, 249 },
{ PROC_LINKS(miblo_increment_basic, 0), false, "miblo_increment_basic", 21, "Increment an integer under the cursor by one.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_miblo_numbers.cpp", 58, 29 },
{ PROC_LINKS(miblo_increment_time_stamp, 0), false, "miblo_increment_time_stamp", 26, "Increment a time stamp under the cursor by one second. (format [m]m:ss or h:mm:ss", 81, "C:\\projects\\4coder_gs\\code\\custom\\4coder_miblo_numbers.cpp", 58, 231 },
{ PROC_LINKS(miblo_increment_time_stamp_minute, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_miblo_numbers.cpp", 58, 243 },
{ PROC_LINKS(mouse_wheel_change_face_size, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 934 },
{ PROC_LINKS(mouse_wheel_scroll, 0), false, "mouse_wheel_scroll", 18, "Reads the scroll wheel value from the mouse state and scrolls accordingly.", 74, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 401 },
{ PROC_LINKS(move_down, 0), false, "move_down", 9, "Moves the cursor down one line.", 31, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 475 },
{ PROC_LINKS(move_down_10, 0), false, "move_down_10", 12, "Moves the cursor down ten lines.", 32, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 487 },
{ PROC_LINKS(move_down_textual, 0), false, "move_down_textual", 17, "Moves down to the next line of actual text, regardless of line wrapping.", 72, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 493 },
{ PROC_LINKS(move_down_to_blank_line, 0), false, "move_down_to_blank_line", 23, "Seeks the cursor down to the next blank line.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 546 },
{ PROC_LINKS(move_down_to_blank_line_end, 0), false, "move_down_to_blank_line_end", 27, "Seeks the cursor down to the next blank line and places it at the end of the line.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 570 },
{ PROC_LINKS(move_down_to_blank_line_skip_whitespace, 0), false, "move_down_to_blank_line_skip_whitespace", 39, "Seeks the cursor down to the next blank line and places it at the end of the line.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 558 },
{ PROC_LINKS(move_left, 0), false, "move_left", 9, "Moves the cursor one character to the left.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 576 },
{ PROC_LINKS(move_left_alpha_numeric_boundary, 0), false, "move_left_alpha_numeric_boundary", 32, "Seek left for boundary between alphanumeric characters and non-alphanumeric characters.", 87, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 653 },
{ PROC_LINKS(move_left_alpha_numeric_or_camel_boundary, 0), false, "move_left_alpha_numeric_or_camel_boundary", 41, "Seek left for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 106, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 667 },
{ PROC_LINKS(move_left_token_boundary, 0), false, "move_left_token_boundary", 24, "Seek left for the next beginning of a token.", 44, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 625 },
{ PROC_LINKS(move_left_whitespace_boundary, 0), false, "move_left_whitespace_boundary", 29, "Seek left for the next boundary between whitespace and non-whitespace.", 70, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 610 },
{ PROC_LINKS(move_left_whitespace_or_token_boundary, 0), false, "move_left_whitespace_or_token_boundary", 38, "Seek left for the next end of a token or boundary between whitespace and non-whitespace.", 88, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 639 },
{ PROC_LINKS(move_line_down, 0), false, "move_line_down", 14, "Swaps the line under the cursor with the line below it, and moves the cursor down with it.", 90, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1670 },
{ PROC_LINKS(move_line_up, 0), false, "move_line_up", 12, "Swaps the line under the cursor with the line above it, and moves the cursor up with it.", 88, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1664 },
{ PROC_LINKS(move_right, 0), false, "move_right", 10, "Moves the cursor one character to the right.", 44, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 584 },
{ PROC_LINKS(move_right_alpha_numeric_boundary, 0), false, "move_right_alpha_numeric_boundary", 33, "Seek right for boundary between alphanumeric characters and non-alphanumeric characters.", 88, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 646 },
{ PROC_LINKS(move_right_alpha_numeric_or_camel_boundary, 0), false, "move_right_alpha_numeric_or_camel_boundary", 42, "Seek right for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 107, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 660 },
{ PROC_LINKS(move_right_token_boundary, 0), false, "move_right_token_boundary", 25, "Seek right for the next end of a token.", 39, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 618 },
{ PROC_LINKS(move_right_whitespace_boundary, 0), false, "move_right_whitespace_boundary", 30, "Seek right for the next boundary between whitespace and non-whitespace.", 71, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 602 },
{ PROC_LINKS(move_right_whitespace_or_token_boundary, 0), false, "move_right_whitespace_or_token_boundary", 39, "Seek right for the next end of a token or boundary between whitespace and non-whitespace.", 89, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 632 },
{ PROC_LINKS(move_up, 0), false, "move_up", 7, "Moves the cursor up one line.", 29, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 469 },
{ PROC_LINKS(move_up_10, 0), false, "move_up_10", 10, "Moves the cursor up ten lines.", 30, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 481 },
{ PROC_LINKS(move_up_to_blank_line, 0), false, "move_up_to_blank_line", 21, "Seeks the cursor up to the next blank line.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 540 },
{ PROC_LINKS(move_up_to_blank_line_end, 0), false, "move_up_to_blank_line_end", 25, "Seeks the cursor up to the next blank line and places it at the end of the line.", 80, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 564 },
{ PROC_LINKS(move_up_to_blank_line_skip_whitespace, 0), false, "move_up_to_blank_line_skip_whitespace", 37, "Seeks the cursor up to the next blank line and places it at the end of the line.", 80, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 552 },
{ PROC_LINKS(mouse_wheel_change_face_size, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 801 },
{ PROC_LINKS(mouse_wheel_scroll, 0), false, "mouse_wheel_scroll", 18, "Reads the scroll wheel value from the mouse state and scrolls accordingly.", 74, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 268 },
{ PROC_LINKS(move_down, 0), false, "move_down", 9, "Moves the cursor down one line.", 31, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 342 },
{ PROC_LINKS(move_down_10, 0), false, "move_down_10", 12, "Moves the cursor down ten lines.", 32, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 354 },
{ PROC_LINKS(move_down_textual, 0), false, "move_down_textual", 17, "Moves down to the next line of actual text, regardless of line wrapping.", 72, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 360 },
{ PROC_LINKS(move_down_to_blank_line, 0), false, "move_down_to_blank_line", 23, "Seeks the cursor down to the next blank line.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 413 },
{ PROC_LINKS(move_down_to_blank_line_end, 0), false, "move_down_to_blank_line_end", 27, "Seeks the cursor down to the next blank line and places it at the end of the line.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 437 },
{ PROC_LINKS(move_down_to_blank_line_skip_whitespace, 0), false, "move_down_to_blank_line_skip_whitespace", 39, "Seeks the cursor down to the next blank line and places it at the end of the line.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 425 },
{ PROC_LINKS(move_left, 0), false, "move_left", 9, "Moves the cursor one character to the left.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 443 },
{ PROC_LINKS(move_left_alpha_numeric_boundary, 0), false, "move_left_alpha_numeric_boundary", 32, "Seek left for boundary between alphanumeric characters and non-alphanumeric characters.", 87, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 520 },
{ PROC_LINKS(move_left_alpha_numeric_or_camel_boundary, 0), false, "move_left_alpha_numeric_or_camel_boundary", 41, "Seek left for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 106, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 534 },
{ PROC_LINKS(move_left_token_boundary, 0), false, "move_left_token_boundary", 24, "Seek left for the next beginning of a token.", 44, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 492 },
{ PROC_LINKS(move_left_whitespace_boundary, 0), false, "move_left_whitespace_boundary", 29, "Seek left for the next boundary between whitespace and non-whitespace.", 70, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 477 },
{ PROC_LINKS(move_left_whitespace_or_token_boundary, 0), false, "move_left_whitespace_or_token_boundary", 38, "Seek left for the next end of a token or boundary between whitespace and non-whitespace.", 88, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 506 },
{ PROC_LINKS(move_line_down, 0), false, "move_line_down", 14, "Swaps the line under the cursor with the line below it, and moves the cursor down with it.", 90, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1537 },
{ PROC_LINKS(move_line_up, 0), false, "move_line_up", 12, "Swaps the line under the cursor with the line above it, and moves the cursor up with it.", 88, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1531 },
{ PROC_LINKS(move_right, 0), false, "move_right", 10, "Moves the cursor one character to the right.", 44, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 451 },
{ PROC_LINKS(move_right_alpha_numeric_boundary, 0), false, "move_right_alpha_numeric_boundary", 33, "Seek right for boundary between alphanumeric characters and non-alphanumeric characters.", 88, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 513 },
{ PROC_LINKS(move_right_alpha_numeric_or_camel_boundary, 0), false, "move_right_alpha_numeric_or_camel_boundary", 42, "Seek right for boundary between alphanumeric characters or camel case word and non-alphanumeric characters.", 107, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 527 },
{ PROC_LINKS(move_right_token_boundary, 0), false, "move_right_token_boundary", 25, "Seek right for the next end of a token.", 39, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 485 },
{ PROC_LINKS(move_right_whitespace_boundary, 0), false, "move_right_whitespace_boundary", 30, "Seek right for the next boundary between whitespace and non-whitespace.", 71, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 469 },
{ PROC_LINKS(move_right_whitespace_or_token_boundary, 0), false, "move_right_whitespace_or_token_boundary", 39, "Seek right for the next end of a token or boundary between whitespace and non-whitespace.", 89, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 499 },
{ PROC_LINKS(move_up, 0), false, "move_up", 7, "Moves the cursor up one line.", 29, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 336 },
{ PROC_LINKS(move_up_10, 0), false, "move_up_10", 10, "Moves the cursor up ten lines.", 30, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 348 },
{ PROC_LINKS(move_up_to_blank_line, 0), false, "move_up_to_blank_line", 21, "Seeks the cursor up to the next blank line.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 407 },
{ PROC_LINKS(move_up_to_blank_line_end, 0), false, "move_up_to_blank_line_end", 25, "Seeks the cursor up to the next blank line and places it at the end of the line.", 80, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 431 },
{ PROC_LINKS(move_up_to_blank_line_skip_whitespace, 0), false, "move_up_to_blank_line_skip_whitespace", 37, "Seeks the cursor up to the next blank line and places it at the end of the line.", 80, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 419 },
{ PROC_LINKS(multi_paste, 0), false, "multi_paste", 11, "Paste multiple entries from the clipboard at once", 49, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 229 },
{ PROC_LINKS(multi_paste_interactive, 0), false, "multi_paste_interactive", 23, "Paste multiple lines from the clipboard history, controlled with arrow keys", 75, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 371 },
{ PROC_LINKS(multi_paste_interactive_quick, 0), false, "multi_paste_interactive_quick", 29, "Paste multiple lines from the clipboard history, controlled by inputing the number of lines to paste", 100, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 380 },
{ PROC_LINKS(open_all_code, 0), false, "open_all_code", 13, "Open all code in the current directory. File types are determined by extensions. An extension is considered code based on the extensions specified in 4coder.config.", 164, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 838 },
{ PROC_LINKS(open_all_code_recursive, 0), false, "open_all_code_recursive", 23, "Works as open_all_code but also runs in all subdirectories.", 59, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 847 },
{ PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1736 },
{ PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2219 },
{ PROC_LINKS(open_file_in_quotes, 0), false, "open_file_in_quotes", 19, "Reads a filename from surrounding '\"' characters and attempts to open the corresponding file.", 94, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1578 },
{ PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2061 },
{ PROC_LINKS(open_long_braces, 0), false, "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 46 },
{ PROC_LINKS(open_long_braces_break, 0), false, "open_long_braces_break", 22, "At the cursor, insert a '{' and '}break;' separated by a blank line.", 68, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 62 },
{ PROC_LINKS(open_long_braces_semicolon, 0), false, "open_long_braces_semicolon", 26, "At the cursor, insert a '{' and '};' separated by a blank line.", 63, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 54 },
{ PROC_LINKS(open_matching_file_cpp, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1819 },
{ PROC_LINKS(open_matching_file_cpp, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1661 },
{ PROC_LINKS(open_panel_hsplit, 0), false, "open_panel_hsplit", 17, "Create a new panel by horizontally splitting the active panel.", 62, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 382 },
{ PROC_LINKS(open_panel_vsplit, 0), false, "open_panel_vsplit", 17, "Create a new panel by vertically splitting the active panel.", 60, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 372 },
{ PROC_LINKS(page_down, 0), false, "page_down", 9, "Scrolls the view down one view height and moves the cursor down one view height.", 80, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 511 },
{ PROC_LINKS(page_up, 0), false, "page_up", 7, "Scrolls the view up one view height and moves the cursor up one view height.", 76, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 503 },
{ PROC_LINKS(page_down, 0), false, "page_down", 9, "Scrolls the view down one view height and moves the cursor down one view height.", 80, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 378 },
{ PROC_LINKS(page_up, 0), false, "page_up", 7, "Scrolls the view up one view height and moves the cursor up one view height.", 76, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 370 },
{ PROC_LINKS(paste, 0), false, "paste", 5, "At the cursor, insert the text at the top of the clipboard.", 59, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 130 },
{ PROC_LINKS(paste_and_indent, 0), false, "paste_and_indent", 16, "Paste from the top of clipboard and run auto-indent on the newly pasted text.", 77, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 207 },
{ PROC_LINKS(paste_next, 0), false, "paste_next", 10, "If the previous command was paste or paste_next, replaces the paste range with the next text down on the clipboard, otherwise operates as the paste command.", 156, "C:\\projects\\4coder_gs\\code\\custom\\4coder_clipboard.cpp", 54, 164 },
@ -477,29 +469,29 @@ static Command_Metadata fcoder_metacmd_table[269] = {
{ PROC_LINKS(project_fkey_command, 0), false, "project_fkey_command", 20, "Run an 'fkey command' configured in a project.4coder file. Determines the index of the 'fkey command' by which function key or numeric key was pressed to trigger the command.", 175, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 974 },
{ PROC_LINKS(project_go_to_root_directory, 0), false, "project_go_to_root_directory", 28, "Changes 4coder's hot directory to the root directory of the currently loaded project. With no loaded project nothing hapepns.", 125, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 1000 },
{ PROC_LINKS(project_reprint, 0), false, "project_reprint", 15, "Prints the current project to the file it was loaded from; prints in the most recent project file version", 105, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 1046 },
{ PROC_LINKS(query_replace, 0), false, "query_replace", 13, "Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.", 120, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1417 },
{ PROC_LINKS(query_replace_identifier, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1438 },
{ PROC_LINKS(query_replace_selection, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1454 },
{ PROC_LINKS(quick_swap_buffer, 0), false, "quick_swap_buffer", 17, "Change to the most recently used buffer in this view - or to the top of the buffer stack if the most recent doesn't exist anymore", 129, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1866 },
{ PROC_LINKS(redo, 0), false, "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2046 },
{ PROC_LINKS(redo_all_buffers, 0), false, "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2143 },
{ PROC_LINKS(rename_file_query, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1595 },
{ PROC_LINKS(reopen, 0), false, "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1904 },
{ PROC_LINKS(replace_in_all_buffers, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1327 },
{ PROC_LINKS(replace_in_buffer, 0), false, "replace_in_buffer", 17, "Queries the user for a needle and string. Replaces all occurences of needle with string in the active buffer.", 109, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1318 },
{ PROC_LINKS(replace_in_range, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1309 },
{ PROC_LINKS(reverse_search, 0), false, "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1250 },
{ PROC_LINKS(reverse_search_identifier, 0), false, "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1262 },
{ PROC_LINKS(save, 0), false, "save", 4, "Saves the current buffer.", 25, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1894 },
{ PROC_LINKS(query_replace, 0), false, "query_replace", 13, "Queries the user for two strings, and incrementally replaces every occurence of the first string with the second string.", 120, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1284 },
{ PROC_LINKS(query_replace_identifier, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1305 },
{ PROC_LINKS(query_replace_selection, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1321 },
{ PROC_LINKS(quick_swap_buffer, 0), false, "quick_swap_buffer", 17, "Change to the most recently used buffer in this view - or to the top of the buffer stack if the most recent doesn't exist anymore", 129, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1708 },
{ PROC_LINKS(redo, 0), false, "redo", 4, "Advances forwards through the undo history of the current buffer.", 65, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1888 },
{ PROC_LINKS(redo_all_buffers, 0), false, "redo_all_buffers", 16, "Advances forward through the undo history in the buffer containing the most recent regular edit.", 96, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1985 },
{ PROC_LINKS(rename_file_query, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1462 },
{ PROC_LINKS(reopen, 0), false, "reopen", 6, "Reopen the current buffer from the hard drive.", 46, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1746 },
{ PROC_LINKS(replace_in_all_buffers, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1194 },
{ PROC_LINKS(replace_in_buffer, 0), false, "replace_in_buffer", 17, "Queries the user for a needle and string. Replaces all occurences of needle with string in the active buffer.", 109, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1185 },
{ PROC_LINKS(replace_in_range, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1176 },
{ PROC_LINKS(reverse_search, 0), false, "reverse_search", 14, "Begins an incremental search up through the current buffer for a user specified string.", 87, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1117 },
{ PROC_LINKS(reverse_search_identifier, 0), false, "reverse_search_identifier", 25, "Begins an incremental search up through the current buffer for the word or token under the cursor.", 98, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1129 },
{ PROC_LINKS(save, 0), false, "save", 4, "Saves the current buffer.", 25, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1736 },
{ PROC_LINKS(save_all_dirty_buffers, 0), false, "save_all_dirty_buffers", 22, "Saves all buffers marked dirty (showing the '*' indicator).", 59, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 454 },
{ PROC_LINKS(save_to_query, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1562 },
{ PROC_LINKS(search, 0), false, "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1244 },
{ PROC_LINKS(search_identifier, 0), false, "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1256 },
{ PROC_LINKS(save_to_query, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1429 },
{ PROC_LINKS(search, 0), false, "search", 6, "Begins an incremental search down through the current buffer for a user specified string.", 89, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1111 },
{ PROC_LINKS(search_identifier, 0), false, "search_identifier", 17, "Begins an incremental search down through the current buffer for the word or token under the cursor.", 100, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1123 },
{ PROC_LINKS(seek_beginning_of_line, 0), false, "seek_beginning_of_line", 22, "Seeks the cursor to the beginning of the visual line.", 53, "C:\\projects\\4coder_gs\\code\\custom\\4coder_helper.cpp", 51, 2246 },
{ PROC_LINKS(seek_beginning_of_textual_line, 0), false, "seek_beginning_of_textual_line", 30, "Seeks the cursor to the beginning of the line across all text.", 62, "C:\\projects\\4coder_gs\\code\\custom\\4coder_helper.cpp", 51, 2234 },
{ PROC_LINKS(seek_end_of_line, 0), false, "seek_end_of_line", 16, "Seeks the cursor to the end of the visual line.", 47, "C:\\projects\\4coder_gs\\code\\custom\\4coder_helper.cpp", 51, 2252 },
{ PROC_LINKS(seek_end_of_textual_line, 0), false, "seek_end_of_textual_line", 24, "Seeks the cursor to the end of the line across all text.", 56, "C:\\projects\\4coder_gs\\code\\custom\\4coder_helper.cpp", 51, 2240 },
{ PROC_LINKS(select_all, 0), false, "select_all", 10, "Puts the cursor at the top of the file, and the mark at the bottom of the file.", 79, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 676 },
{ PROC_LINKS(select_all, 0), false, "select_all", 10, "Puts the cursor at the top of the file, and the mark at the bottom of the file.", 79, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 543 },
{ PROC_LINKS(select_next_scope_absolute, 0), false, "select_next_scope_absolute", 26, "Finds the first scope started by '{' after the cursor and puts the cursor and mark on the '{' and '}'.", 102, "C:\\projects\\4coder_gs\\code\\custom\\4coder_scope_commands.cpp", 59, 57 },
{ PROC_LINKS(select_next_scope_after_current, 0), false, "select_next_scope_after_current", 31, "If a scope is selected, find first scope that starts after the selected scope. Otherwise find the first scope that starts after the cursor.", 139, "C:\\projects\\4coder_gs\\code\\custom\\4coder_scope_commands.cpp", 59, 66 },
{ PROC_LINKS(select_prev_scope_absolute, 0), false, "select_prev_scope_absolute", 26, "Finds the first scope started by '{' before the cursor and puts the cursor and mark on the '{' and '}'.", 103, "C:\\projects\\4coder_gs\\code\\custom\\4coder_scope_commands.cpp", 59, 82 },
@ -510,8 +502,8 @@ static Command_Metadata fcoder_metacmd_table[269] = {
{ PROC_LINKS(set_eol_mode_to_binary, 0), false, "set_eol_mode_to_binary", 22, "Puts the buffer in bin line ending mode.", 40, "C:\\projects\\4coder_gs\\code\\custom\\4coder_eol.cpp", 48, 112 },
{ PROC_LINKS(set_eol_mode_to_crlf, 0), false, "set_eol_mode_to_crlf", 20, "Puts the buffer in crlf line ending mode.", 41, "C:\\projects\\4coder_gs\\code\\custom\\4coder_eol.cpp", 48, 86 },
{ PROC_LINKS(set_eol_mode_to_lf, 0), false, "set_eol_mode_to_lf", 18, "Puts the buffer in lf line ending mode.", 39, "C:\\projects\\4coder_gs\\code\\custom\\4coder_eol.cpp", 48, 99 },
{ PROC_LINKS(set_face_size, 0), false, "set_face_size", 13, "Set face size of the face used by the current buffer.", 53, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 861 },
{ PROC_LINKS(set_face_size_this_buffer, 0), false, "set_face_size_this_buffer", 25, "Set face size of the face used by the current buffer; if any other buffers are using the same face a new face is created so that only this buffer is effected", 157, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 903 },
{ PROC_LINKS(set_face_size, 0), false, "set_face_size", 13, "Set face size of the face used by the current buffer.", 53, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 728 },
{ PROC_LINKS(set_face_size_this_buffer, 0), false, "set_face_size_this_buffer", 25, "Set face size of the face used by the current buffer; if any other buffers are using the same face a new face is created so that only this buffer is effected", 157, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 770 },
{ PROC_LINKS(set_mark, 0), false, "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 115 },
{ PROC_LINKS(set_mode_to_notepad_like, 0), false, "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 499 },
{ PROC_LINKS(set_mode_to_original, 0), false, "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 493 },
@ -519,35 +511,35 @@ static Command_Metadata fcoder_metacmd_table[269] = {
{ PROC_LINKS(setup_build_bat_and_sh, 0), false, "setup_build_bat_and_sh", 22, "Queries the user for several configuration options and initializes a new build batch script.", 92, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 1030 },
{ PROC_LINKS(setup_build_sh, 0), false, "setup_build_sh", 14, "Queries the user for several configuration options and initializes a new build shell script.", 92, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 1024 },
{ PROC_LINKS(setup_new_project, 0), false, "setup_new_project", 17, "Queries the user for several configuration options and initializes a new 4coder project with build scripts for every OS.", 120, "C:\\projects\\4coder_gs\\code\\custom\\4coder_project_commands.cpp", 61, 1011 },
{ PROC_LINKS(show_filebar, 0), false, "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 832 },
{ PROC_LINKS(show_scrollbar, 0), false, "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 818 },
{ PROC_LINKS(show_filebar, 0), false, "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 699 },
{ PROC_LINKS(show_scrollbar, 0), false, "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 685 },
{ PROC_LINKS(show_the_log_graph, 0), true, "show_the_log_graph", 18, "Parses *log* and displays the 'log graph' UI", 44, "C:\\projects\\4coder_gs\\code\\custom\\4coder_log_parser.cpp", 55, 991 },
{ PROC_LINKS(snipe_backward_whitespace_or_token_boundary, 0), false, "snipe_backward_whitespace_or_token_boundary", 43, "Delete a single, whole token on or to the left of the cursor and post it to the clipboard.", 90, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 312 },
{ PROC_LINKS(snipe_forward_whitespace_or_token_boundary, 0), false, "snipe_forward_whitespace_or_token_boundary", 42, "Delete a single, whole token on or to the right of the cursor and post it to the clipboard.", 91, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 320 },
{ PROC_LINKS(snipe_backward_whitespace_or_token_boundary, 0), false, "snipe_backward_whitespace_or_token_boundary", 43, "Delete a single, whole token on or to the left of the cursor and post it to the clipboard.", 90, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 179 },
{ PROC_LINKS(snipe_forward_whitespace_or_token_boundary, 0), false, "snipe_forward_whitespace_or_token_boundary", 42, "Delete a single, whole token on or to the right of the cursor and post it to the clipboard.", 91, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 187 },
{ PROC_LINKS(snippet_lister, 0), true, "snippet_lister", 14, "Opens a snippet lister for inserting whole pre-written snippets of text.", 72, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 237 },
{ PROC_LINKS(string_repeat, 0), false, "string_repeat", 13, "Example of query_user_string and query_user_number", 50, "C:\\projects\\4coder_gs\\code\\custom\\4coder_examples.cpp", 53, 179 },
{ PROC_LINKS(suppress_mouse, 0), false, "suppress_mouse", 14, "Hides the mouse and causes all mosue input (clicks, position, wheel) to be ignored.", 83, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 475 },
{ PROC_LINKS(swap_panels, 0), false, "swap_panels", 11, "Swaps the active panel with it's sibling.", 41, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1844 },
{ PROC_LINKS(swap_panels, 0), false, "swap_panels", 11, "Swaps the active panel with it's sibling.", 41, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1686 },
{ PROC_LINKS(theme_lister, 0), true, "theme_lister", 12, "Opens an interactive list of all registered themes.", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_lists.cpp", 50, 785 },
{ PROC_LINKS(to_lowercase, 0), false, "to_lowercase", 12, "Converts all ascii text in the range between the cursor and the mark to lowercase.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 702 },
{ PROC_LINKS(to_uppercase, 0), false, "to_uppercase", 12, "Converts all ascii text in the range between the cursor and the mark to uppercase.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 689 },
{ PROC_LINKS(toggle_filebar, 0), false, "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 846 },
{ PROC_LINKS(toggle_fps_meter, 0), false, "toggle_fps_meter", 16, "Toggles the visibility of the FPS performance meter", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 855 },
{ PROC_LINKS(to_lowercase, 0), false, "to_lowercase", 12, "Converts all ascii text in the range between the cursor and the mark to lowercase.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 569 },
{ PROC_LINKS(to_uppercase, 0), false, "to_uppercase", 12, "Converts all ascii text in the range between the cursor and the mark to uppercase.", 82, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 556 },
{ PROC_LINKS(toggle_filebar, 0), false, "toggle_filebar", 14, "Toggles the visibility status of the current view's filebar.", 60, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 713 },
{ PROC_LINKS(toggle_fps_meter, 0), false, "toggle_fps_meter", 16, "Toggles the visibility of the FPS performance meter", 51, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 722 },
{ PROC_LINKS(toggle_fullscreen, 0), false, "toggle_fullscreen", 17, "Toggle fullscreen mode on or off. The change(s) do not take effect until the next frame.", 89, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 529 },
{ PROC_LINKS(toggle_highlight_enclosing_scopes, 0), false, "toggle_highlight_enclosing_scopes", 33, "In code files scopes surrounding the cursor are highlighted with distinguishing colors.", 87, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 513 },
{ PROC_LINKS(toggle_highlight_line_at_cursor, 0), false, "toggle_highlight_line_at_cursor", 31, "Toggles the line highlight at the cursor.", 41, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 505 },
{ PROC_LINKS(toggle_line_numbers, 0), false, "toggle_line_numbers", 19, "Toggles the left margin line numbers.", 37, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 960 },
{ PROC_LINKS(toggle_line_wrap, 0), false, "toggle_line_wrap", 16, "Toggles the line wrap setting on this buffer.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 968 },
{ PROC_LINKS(toggle_line_numbers, 0), false, "toggle_line_numbers", 19, "Toggles the left margin line numbers.", 37, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 827 },
{ PROC_LINKS(toggle_line_wrap, 0), false, "toggle_line_wrap", 16, "Toggles the line wrap setting on this buffer.", 45, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 835 },
{ PROC_LINKS(toggle_mouse, 0), false, "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 487 },
{ PROC_LINKS(toggle_paren_matching_helper, 0), false, "toggle_paren_matching_helper", 28, "In code files matching parentheses pairs are colored with distinguishing colors.", 80, "C:\\projects\\4coder_gs\\code\\custom\\4coder_default_framework.cpp", 62, 521 },
{ PROC_LINKS(toggle_show_whitespace, 0), false, "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 951 },
{ PROC_LINKS(toggle_show_whitespace, 0), false, "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 818 },
{ PROC_LINKS(toggle_virtual_whitespace, 0), false, "toggle_virtual_whitespace", 25, "Toggles virtual whitespace for all files.", 41, "C:\\projects\\4coder_gs\\code\\custom\\4coder_code_index.cpp", 55, 1238 },
{ PROC_LINKS(tutorial_maximize, 0), false, "tutorial_maximize", 17, "Expand the tutorial window", 26, "C:\\projects\\4coder_gs\\code\\custom\\4coder_tutorial.cpp", 53, 20 },
{ PROC_LINKS(tutorial_minimize, 0), false, "tutorial_minimize", 17, "Shrink the tutorial window", 26, "C:\\projects\\4coder_gs\\code\\custom\\4coder_tutorial.cpp", 53, 34 },
{ PROC_LINKS(uncomment_line, 0), false, "uncomment_line", 14, "If present, delete '//' at the beginning of the line after leading whitespace.", 78, "C:\\projects\\4coder_gs\\code\\custom\\4coder_combined_write_commands.cpp", 68, 137 },
{ PROC_LINKS(undo, 0), false, "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1994 },
{ PROC_LINKS(undo_all_buffers, 0), false, "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 2072 },
{ PROC_LINKS(view_buffer_other_panel, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1832 },
{ PROC_LINKS(undo, 0), false, "undo", 4, "Advances backwards through the undo history of the current buffer.", 66, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1836 },
{ PROC_LINKS(undo_all_buffers, 0), false, "undo_all_buffers", 16, "Advances backward through the undo history in the buffer containing the most recent regular edit.", 97, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1914 },
{ PROC_LINKS(view_buffer_other_panel, 0), false, "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, "C:\\projects\\4coder_gs\\code\\custom\\4coder_base_commands.cpp", 58, 1674 },
{ PROC_LINKS(view_jump_list_with_lister, 0), false, "view_jump_list_with_lister", 26, "When executed on a buffer with jumps, creates a persistent lister for all the jumps", 83, "C:\\projects\\4coder_gs\\code\\custom\\4coder_jump_lister.cpp", 56, 59 },
{ PROC_LINKS(word_complete, 0), false, "word_complete", 13, "Iteratively tries completing the word to the left of the cursor with other words in open buffers that have the same prefix string.", 130, "C:\\projects\\4coder_gs\\code\\custom\\4coder_search.cpp", 51, 433 },
{ PROC_LINKS(word_complete_drop_down, 0), false, "word_complete_drop_down", 23, "Word complete with drop down menu.", 34, "C:\\projects\\4coder_gs\\code\\custom\\4coder_search.cpp", 51, 679 },
@ -566,268 +558,264 @@ static i32 fcoder_metacmd_ID_auto_indent_line_at_cursor = 1;
static i32 fcoder_metacmd_ID_auto_indent_range = 2;
static i32 fcoder_metacmd_ID_auto_indent_whole_file = 3;
static i32 fcoder_metacmd_ID_backspace_alpha_numeric_boundary = 4;
static i32 fcoder_metacmd_ID_backspace_alpha_numeric_or_camel_boundary = 5;
static i32 fcoder_metacmd_ID_backspace_char = 6;
static i32 fcoder_metacmd_ID_backspace_token_boundary = 7;
static i32 fcoder_metacmd_ID_basic_change_active_panel = 8;
static i32 fcoder_metacmd_ID_begin_clipboard_collection_mode = 9;
static i32 fcoder_metacmd_ID_build_in_build_panel = 10;
static i32 fcoder_metacmd_ID_build_search = 11;
static i32 fcoder_metacmd_ID_center_view = 12;
static i32 fcoder_metacmd_ID_change_active_panel = 13;
static i32 fcoder_metacmd_ID_change_active_panel_backwards = 14;
static i32 fcoder_metacmd_ID_change_to_build_panel = 15;
static i32 fcoder_metacmd_ID_clean_all_lines = 16;
static i32 fcoder_metacmd_ID_clean_trailing_whitespace = 17;
static i32 fcoder_metacmd_ID_clear_all_themes = 18;
static i32 fcoder_metacmd_ID_clear_clipboard = 19;
static i32 fcoder_metacmd_ID_click_set_cursor = 20;
static i32 fcoder_metacmd_ID_click_set_cursor_and_mark = 21;
static i32 fcoder_metacmd_ID_click_set_cursor_if_lbutton = 22;
static i32 fcoder_metacmd_ID_click_set_mark = 23;
static i32 fcoder_metacmd_ID_clipboard_record_clip = 24;
static i32 fcoder_metacmd_ID_close_all_code = 25;
static i32 fcoder_metacmd_ID_close_build_panel = 26;
static i32 fcoder_metacmd_ID_close_panel = 27;
static i32 fcoder_metacmd_ID_command_documentation = 28;
static i32 fcoder_metacmd_ID_command_lister = 29;
static i32 fcoder_metacmd_ID_comment_line = 30;
static i32 fcoder_metacmd_ID_comment_line_toggle = 31;
static i32 fcoder_metacmd_ID_copy = 32;
static i32 fcoder_metacmd_ID_cursor_mark_swap = 33;
static i32 fcoder_metacmd_ID_custom_api_documentation = 34;
static i32 fcoder_metacmd_ID_cut = 35;
static i32 fcoder_metacmd_ID_decrease_face_size = 36;
static i32 fcoder_metacmd_ID_default_file_externally_modified = 37;
static i32 fcoder_metacmd_ID_default_startup = 38;
static i32 fcoder_metacmd_ID_default_try_exit = 39;
static i32 fcoder_metacmd_ID_default_view_input_handler = 40;
static i32 fcoder_metacmd_ID_delete_alpha_numeric_boundary = 41;
static i32 fcoder_metacmd_ID_delete_char = 42;
static i32 fcoder_metacmd_ID_delete_current_scope = 43;
static i32 fcoder_metacmd_ID_delete_file_query = 44;
static i32 fcoder_metacmd_ID_delete_line = 45;
static i32 fcoder_metacmd_ID_delete_range = 46;
static i32 fcoder_metacmd_ID_delete_to_end_of_line = 47;
static i32 fcoder_metacmd_ID_display_key_codes = 48;
static i32 fcoder_metacmd_ID_display_text_input = 49;
static i32 fcoder_metacmd_ID_double_backspace = 50;
static i32 fcoder_metacmd_ID_duplicate_line = 51;
static i32 fcoder_metacmd_ID_execute_any_cli = 52;
static i32 fcoder_metacmd_ID_execute_previous_cli = 53;
static i32 fcoder_metacmd_ID_exit_4coder = 54;
static i32 fcoder_metacmd_ID_go_to_user_directory = 55;
static i32 fcoder_metacmd_ID_goto_beginning_of_file = 56;
static i32 fcoder_metacmd_ID_goto_end_of_file = 57;
static i32 fcoder_metacmd_ID_goto_first_jump = 58;
static i32 fcoder_metacmd_ID_goto_first_jump_same_panel_sticky = 59;
static i32 fcoder_metacmd_ID_goto_jump_at_cursor = 60;
static i32 fcoder_metacmd_ID_goto_jump_at_cursor_same_panel = 61;
static i32 fcoder_metacmd_ID_goto_line = 62;
static i32 fcoder_metacmd_ID_goto_next_jump = 63;
static i32 fcoder_metacmd_ID_goto_next_jump_no_skips = 64;
static i32 fcoder_metacmd_ID_goto_prev_jump = 65;
static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 66;
static i32 fcoder_metacmd_ID_hide_filebar = 67;
static i32 fcoder_metacmd_ID_hide_scrollbar = 68;
static i32 fcoder_metacmd_ID_hms_demo_tutorial = 69;
static i32 fcoder_metacmd_ID_if0_off = 70;
static i32 fcoder_metacmd_ID_if_read_only_goto_position = 71;
static i32 fcoder_metacmd_ID_if_read_only_goto_position_same_panel = 72;
static i32 fcoder_metacmd_ID_increase_face_size = 73;
static i32 fcoder_metacmd_ID_interactive_kill_buffer = 74;
static i32 fcoder_metacmd_ID_interactive_new = 75;
static i32 fcoder_metacmd_ID_interactive_open = 76;
static i32 fcoder_metacmd_ID_interactive_open_or_new = 77;
static i32 fcoder_metacmd_ID_interactive_switch_buffer = 78;
static i32 fcoder_metacmd_ID_jump_to_definition = 79;
static i32 fcoder_metacmd_ID_jump_to_definition_at_cursor = 80;
static i32 fcoder_metacmd_ID_jump_to_last_point = 81;
static i32 fcoder_metacmd_ID_keyboard_macro_finish_recording = 82;
static i32 fcoder_metacmd_ID_keyboard_macro_replay = 83;
static i32 fcoder_metacmd_ID_keyboard_macro_start_recording = 84;
static i32 fcoder_metacmd_ID_kill_buffer = 85;
static i32 fcoder_metacmd_ID_kill_tutorial = 86;
static i32 fcoder_metacmd_ID_left_adjust_view = 87;
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 88;
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 89;
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 90;
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 91;
static i32 fcoder_metacmd_ID_list_all_locations = 92;
static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 93;
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 94;
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 95;
static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 96;
static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 97;
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 98;
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 99;
static i32 fcoder_metacmd_ID_list_all_substring_locations = 100;
static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 101;
static i32 fcoder_metacmd_ID_lister_search_all = 102;
static i32 fcoder_metacmd_ID_load_project = 103;
static i32 fcoder_metacmd_ID_load_theme_current_buffer = 104;
static i32 fcoder_metacmd_ID_load_themes_default_folder = 105;
static i32 fcoder_metacmd_ID_load_themes_hot_directory = 106;
static i32 fcoder_metacmd_ID_make_directory_query = 107;
static i32 fcoder_metacmd_ID_miblo_decrement_basic = 108;
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 109;
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 110;
static i32 fcoder_metacmd_ID_miblo_increment_basic = 111;
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 112;
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 113;
static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 114;
static i32 fcoder_metacmd_ID_mouse_wheel_scroll = 115;
static i32 fcoder_metacmd_ID_move_down = 116;
static i32 fcoder_metacmd_ID_move_down_10 = 117;
static i32 fcoder_metacmd_ID_move_down_textual = 118;
static i32 fcoder_metacmd_ID_move_down_to_blank_line = 119;
static i32 fcoder_metacmd_ID_move_down_to_blank_line_end = 120;
static i32 fcoder_metacmd_ID_move_down_to_blank_line_skip_whitespace = 121;
static i32 fcoder_metacmd_ID_move_left = 122;
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_boundary = 123;
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_or_camel_boundary = 124;
static i32 fcoder_metacmd_ID_move_left_token_boundary = 125;
static i32 fcoder_metacmd_ID_move_left_whitespace_boundary = 126;
static i32 fcoder_metacmd_ID_move_left_whitespace_or_token_boundary = 127;
static i32 fcoder_metacmd_ID_move_line_down = 128;
static i32 fcoder_metacmd_ID_move_line_up = 129;
static i32 fcoder_metacmd_ID_move_right = 130;
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_boundary = 131;
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_or_camel_boundary = 132;
static i32 fcoder_metacmd_ID_move_right_token_boundary = 133;
static i32 fcoder_metacmd_ID_move_right_whitespace_boundary = 134;
static i32 fcoder_metacmd_ID_move_right_whitespace_or_token_boundary = 135;
static i32 fcoder_metacmd_ID_move_up = 136;
static i32 fcoder_metacmd_ID_move_up_10 = 137;
static i32 fcoder_metacmd_ID_move_up_to_blank_line = 138;
static i32 fcoder_metacmd_ID_move_up_to_blank_line_end = 139;
static i32 fcoder_metacmd_ID_move_up_to_blank_line_skip_whitespace = 140;
static i32 fcoder_metacmd_ID_multi_paste = 141;
static i32 fcoder_metacmd_ID_multi_paste_interactive = 142;
static i32 fcoder_metacmd_ID_multi_paste_interactive_quick = 143;
static i32 fcoder_metacmd_ID_open_all_code = 144;
static i32 fcoder_metacmd_ID_open_all_code_recursive = 145;
static i32 fcoder_metacmd_ID_open_file_in_quotes = 146;
static i32 fcoder_metacmd_ID_open_in_other = 147;
static i32 fcoder_metacmd_ID_open_long_braces = 148;
static i32 fcoder_metacmd_ID_open_long_braces_break = 149;
static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 150;
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 151;
static i32 fcoder_metacmd_ID_open_panel_hsplit = 152;
static i32 fcoder_metacmd_ID_open_panel_vsplit = 153;
static i32 fcoder_metacmd_ID_page_down = 154;
static i32 fcoder_metacmd_ID_page_up = 155;
static i32 fcoder_metacmd_ID_paste = 156;
static i32 fcoder_metacmd_ID_paste_and_indent = 157;
static i32 fcoder_metacmd_ID_paste_next = 158;
static i32 fcoder_metacmd_ID_paste_next_and_indent = 159;
static i32 fcoder_metacmd_ID_place_in_scope = 160;
static i32 fcoder_metacmd_ID_play_with_a_counter = 161;
static i32 fcoder_metacmd_ID_profile_clear = 162;
static i32 fcoder_metacmd_ID_profile_disable = 163;
static i32 fcoder_metacmd_ID_profile_enable = 164;
static i32 fcoder_metacmd_ID_profile_inspect = 165;
static i32 fcoder_metacmd_ID_project_command_F1 = 166;
static i32 fcoder_metacmd_ID_project_command_F10 = 167;
static i32 fcoder_metacmd_ID_project_command_F11 = 168;
static i32 fcoder_metacmd_ID_project_command_F12 = 169;
static i32 fcoder_metacmd_ID_project_command_F13 = 170;
static i32 fcoder_metacmd_ID_project_command_F14 = 171;
static i32 fcoder_metacmd_ID_project_command_F15 = 172;
static i32 fcoder_metacmd_ID_project_command_F16 = 173;
static i32 fcoder_metacmd_ID_project_command_F2 = 174;
static i32 fcoder_metacmd_ID_project_command_F3 = 175;
static i32 fcoder_metacmd_ID_project_command_F4 = 176;
static i32 fcoder_metacmd_ID_project_command_F5 = 177;
static i32 fcoder_metacmd_ID_project_command_F6 = 178;
static i32 fcoder_metacmd_ID_project_command_F7 = 179;
static i32 fcoder_metacmd_ID_project_command_F8 = 180;
static i32 fcoder_metacmd_ID_project_command_F9 = 181;
static i32 fcoder_metacmd_ID_project_command_lister = 182;
static i32 fcoder_metacmd_ID_project_fkey_command = 183;
static i32 fcoder_metacmd_ID_project_go_to_root_directory = 184;
static i32 fcoder_metacmd_ID_project_reprint = 185;
static i32 fcoder_metacmd_ID_query_replace = 186;
static i32 fcoder_metacmd_ID_query_replace_identifier = 187;
static i32 fcoder_metacmd_ID_query_replace_selection = 188;
static i32 fcoder_metacmd_ID_quick_swap_buffer = 189;
static i32 fcoder_metacmd_ID_redo = 190;
static i32 fcoder_metacmd_ID_redo_all_buffers = 191;
static i32 fcoder_metacmd_ID_rename_file_query = 192;
static i32 fcoder_metacmd_ID_reopen = 193;
static i32 fcoder_metacmd_ID_replace_in_all_buffers = 194;
static i32 fcoder_metacmd_ID_replace_in_buffer = 195;
static i32 fcoder_metacmd_ID_replace_in_range = 196;
static i32 fcoder_metacmd_ID_reverse_search = 197;
static i32 fcoder_metacmd_ID_reverse_search_identifier = 198;
static i32 fcoder_metacmd_ID_save = 199;
static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 200;
static i32 fcoder_metacmd_ID_save_to_query = 201;
static i32 fcoder_metacmd_ID_search = 202;
static i32 fcoder_metacmd_ID_search_identifier = 203;
static i32 fcoder_metacmd_ID_seek_beginning_of_line = 204;
static i32 fcoder_metacmd_ID_seek_beginning_of_textual_line = 205;
static i32 fcoder_metacmd_ID_seek_end_of_line = 206;
static i32 fcoder_metacmd_ID_seek_end_of_textual_line = 207;
static i32 fcoder_metacmd_ID_select_all = 208;
static i32 fcoder_metacmd_ID_select_next_scope_absolute = 209;
static i32 fcoder_metacmd_ID_select_next_scope_after_current = 210;
static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 211;
static i32 fcoder_metacmd_ID_select_prev_top_most_scope = 212;
static i32 fcoder_metacmd_ID_select_surrounding_scope = 213;
static i32 fcoder_metacmd_ID_select_surrounding_scope_maximal = 214;
static i32 fcoder_metacmd_ID_set_eol_mode_from_contents = 215;
static i32 fcoder_metacmd_ID_set_eol_mode_to_binary = 216;
static i32 fcoder_metacmd_ID_set_eol_mode_to_crlf = 217;
static i32 fcoder_metacmd_ID_set_eol_mode_to_lf = 218;
static i32 fcoder_metacmd_ID_set_face_size = 219;
static i32 fcoder_metacmd_ID_set_face_size_this_buffer = 220;
static i32 fcoder_metacmd_ID_set_mark = 221;
static i32 fcoder_metacmd_ID_set_mode_to_notepad_like = 222;
static i32 fcoder_metacmd_ID_set_mode_to_original = 223;
static i32 fcoder_metacmd_ID_setup_build_bat = 224;
static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 225;
static i32 fcoder_metacmd_ID_setup_build_sh = 226;
static i32 fcoder_metacmd_ID_setup_new_project = 227;
static i32 fcoder_metacmd_ID_show_filebar = 228;
static i32 fcoder_metacmd_ID_show_scrollbar = 229;
static i32 fcoder_metacmd_ID_show_the_log_graph = 230;
static i32 fcoder_metacmd_ID_snipe_backward_whitespace_or_token_boundary = 231;
static i32 fcoder_metacmd_ID_snipe_forward_whitespace_or_token_boundary = 232;
static i32 fcoder_metacmd_ID_snippet_lister = 233;
static i32 fcoder_metacmd_ID_string_repeat = 234;
static i32 fcoder_metacmd_ID_suppress_mouse = 235;
static i32 fcoder_metacmd_ID_swap_panels = 236;
static i32 fcoder_metacmd_ID_theme_lister = 237;
static i32 fcoder_metacmd_ID_to_lowercase = 238;
static i32 fcoder_metacmd_ID_to_uppercase = 239;
static i32 fcoder_metacmd_ID_toggle_filebar = 240;
static i32 fcoder_metacmd_ID_toggle_fps_meter = 241;
static i32 fcoder_metacmd_ID_toggle_fullscreen = 242;
static i32 fcoder_metacmd_ID_toggle_highlight_enclosing_scopes = 243;
static i32 fcoder_metacmd_ID_toggle_highlight_line_at_cursor = 244;
static i32 fcoder_metacmd_ID_toggle_line_numbers = 245;
static i32 fcoder_metacmd_ID_toggle_line_wrap = 246;
static i32 fcoder_metacmd_ID_toggle_mouse = 247;
static i32 fcoder_metacmd_ID_toggle_paren_matching_helper = 248;
static i32 fcoder_metacmd_ID_toggle_show_whitespace = 249;
static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 250;
static i32 fcoder_metacmd_ID_tutorial_maximize = 251;
static i32 fcoder_metacmd_ID_tutorial_minimize = 252;
static i32 fcoder_metacmd_ID_uncomment_line = 253;
static i32 fcoder_metacmd_ID_undo = 254;
static i32 fcoder_metacmd_ID_undo_all_buffers = 255;
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 256;
static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 257;
static i32 fcoder_metacmd_ID_word_complete = 258;
static i32 fcoder_metacmd_ID_word_complete_drop_down = 259;
static i32 fcoder_metacmd_ID_write_block = 260;
static i32 fcoder_metacmd_ID_write_hack = 261;
static i32 fcoder_metacmd_ID_write_note = 262;
static i32 fcoder_metacmd_ID_write_space = 263;
static i32 fcoder_metacmd_ID_write_text_and_auto_indent = 264;
static i32 fcoder_metacmd_ID_write_text_input = 265;
static i32 fcoder_metacmd_ID_write_todo = 266;
static i32 fcoder_metacmd_ID_write_underscore = 267;
static i32 fcoder_metacmd_ID_write_zero_struct = 268;
static i32 fcoder_metacmd_ID_backspace_char = 5;
static i32 fcoder_metacmd_ID_basic_change_active_panel = 6;
static i32 fcoder_metacmd_ID_begin_clipboard_collection_mode = 7;
static i32 fcoder_metacmd_ID_build_in_build_panel = 8;
static i32 fcoder_metacmd_ID_build_search = 9;
static i32 fcoder_metacmd_ID_center_view = 10;
static i32 fcoder_metacmd_ID_change_active_panel = 11;
static i32 fcoder_metacmd_ID_change_active_panel_backwards = 12;
static i32 fcoder_metacmd_ID_change_to_build_panel = 13;
static i32 fcoder_metacmd_ID_clean_all_lines = 14;
static i32 fcoder_metacmd_ID_clean_trailing_whitespace = 15;
static i32 fcoder_metacmd_ID_clear_all_themes = 16;
static i32 fcoder_metacmd_ID_clear_clipboard = 17;
static i32 fcoder_metacmd_ID_click_set_cursor = 18;
static i32 fcoder_metacmd_ID_click_set_cursor_and_mark = 19;
static i32 fcoder_metacmd_ID_click_set_cursor_if_lbutton = 20;
static i32 fcoder_metacmd_ID_click_set_mark = 21;
static i32 fcoder_metacmd_ID_clipboard_record_clip = 22;
static i32 fcoder_metacmd_ID_close_all_code = 23;
static i32 fcoder_metacmd_ID_close_build_panel = 24;
static i32 fcoder_metacmd_ID_close_panel = 25;
static i32 fcoder_metacmd_ID_command_documentation = 26;
static i32 fcoder_metacmd_ID_command_lister = 27;
static i32 fcoder_metacmd_ID_comment_line = 28;
static i32 fcoder_metacmd_ID_comment_line_toggle = 29;
static i32 fcoder_metacmd_ID_copy = 30;
static i32 fcoder_metacmd_ID_cursor_mark_swap = 31;
static i32 fcoder_metacmd_ID_custom_api_documentation = 32;
static i32 fcoder_metacmd_ID_cut = 33;
static i32 fcoder_metacmd_ID_decrease_face_size = 34;
static i32 fcoder_metacmd_ID_default_file_externally_modified = 35;
static i32 fcoder_metacmd_ID_default_startup = 36;
static i32 fcoder_metacmd_ID_default_try_exit = 37;
static i32 fcoder_metacmd_ID_default_view_input_handler = 38;
static i32 fcoder_metacmd_ID_delete_alpha_numeric_boundary = 39;
static i32 fcoder_metacmd_ID_delete_char = 40;
static i32 fcoder_metacmd_ID_delete_current_scope = 41;
static i32 fcoder_metacmd_ID_delete_file_query = 42;
static i32 fcoder_metacmd_ID_delete_line = 43;
static i32 fcoder_metacmd_ID_delete_range = 44;
static i32 fcoder_metacmd_ID_display_key_codes = 45;
static i32 fcoder_metacmd_ID_display_text_input = 46;
static i32 fcoder_metacmd_ID_double_backspace = 47;
static i32 fcoder_metacmd_ID_duplicate_line = 48;
static i32 fcoder_metacmd_ID_execute_any_cli = 49;
static i32 fcoder_metacmd_ID_execute_previous_cli = 50;
static i32 fcoder_metacmd_ID_exit_4coder = 51;
static i32 fcoder_metacmd_ID_go_to_user_directory = 52;
static i32 fcoder_metacmd_ID_goto_beginning_of_file = 53;
static i32 fcoder_metacmd_ID_goto_end_of_file = 54;
static i32 fcoder_metacmd_ID_goto_first_jump = 55;
static i32 fcoder_metacmd_ID_goto_first_jump_same_panel_sticky = 56;
static i32 fcoder_metacmd_ID_goto_jump_at_cursor = 57;
static i32 fcoder_metacmd_ID_goto_jump_at_cursor_same_panel = 58;
static i32 fcoder_metacmd_ID_goto_line = 59;
static i32 fcoder_metacmd_ID_goto_next_jump = 60;
static i32 fcoder_metacmd_ID_goto_next_jump_no_skips = 61;
static i32 fcoder_metacmd_ID_goto_prev_jump = 62;
static i32 fcoder_metacmd_ID_goto_prev_jump_no_skips = 63;
static i32 fcoder_metacmd_ID_hide_filebar = 64;
static i32 fcoder_metacmd_ID_hide_scrollbar = 65;
static i32 fcoder_metacmd_ID_hms_demo_tutorial = 66;
static i32 fcoder_metacmd_ID_if0_off = 67;
static i32 fcoder_metacmd_ID_if_read_only_goto_position = 68;
static i32 fcoder_metacmd_ID_if_read_only_goto_position_same_panel = 69;
static i32 fcoder_metacmd_ID_increase_face_size = 70;
static i32 fcoder_metacmd_ID_interactive_kill_buffer = 71;
static i32 fcoder_metacmd_ID_interactive_new = 72;
static i32 fcoder_metacmd_ID_interactive_open = 73;
static i32 fcoder_metacmd_ID_interactive_open_or_new = 74;
static i32 fcoder_metacmd_ID_interactive_switch_buffer = 75;
static i32 fcoder_metacmd_ID_jump_to_definition = 76;
static i32 fcoder_metacmd_ID_jump_to_definition_at_cursor = 77;
static i32 fcoder_metacmd_ID_jump_to_last_point = 78;
static i32 fcoder_metacmd_ID_keyboard_macro_finish_recording = 79;
static i32 fcoder_metacmd_ID_keyboard_macro_replay = 80;
static i32 fcoder_metacmd_ID_keyboard_macro_start_recording = 81;
static i32 fcoder_metacmd_ID_kill_buffer = 82;
static i32 fcoder_metacmd_ID_kill_tutorial = 83;
static i32 fcoder_metacmd_ID_left_adjust_view = 84;
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers = 85;
static i32 fcoder_metacmd_ID_list_all_functions_all_buffers_lister = 86;
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer = 87;
static i32 fcoder_metacmd_ID_list_all_functions_current_buffer_lister = 88;
static i32 fcoder_metacmd_ID_list_all_locations = 89;
static i32 fcoder_metacmd_ID_list_all_locations_case_insensitive = 90;
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier = 91;
static i32 fcoder_metacmd_ID_list_all_locations_of_identifier_case_insensitive = 92;
static i32 fcoder_metacmd_ID_list_all_locations_of_selection = 93;
static i32 fcoder_metacmd_ID_list_all_locations_of_selection_case_insensitive = 94;
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition = 95;
static i32 fcoder_metacmd_ID_list_all_locations_of_type_definition_of_identifier = 96;
static i32 fcoder_metacmd_ID_list_all_substring_locations = 97;
static i32 fcoder_metacmd_ID_list_all_substring_locations_case_insensitive = 98;
static i32 fcoder_metacmd_ID_load_project = 99;
static i32 fcoder_metacmd_ID_load_theme_current_buffer = 100;
static i32 fcoder_metacmd_ID_load_themes_default_folder = 101;
static i32 fcoder_metacmd_ID_load_themes_hot_directory = 102;
static i32 fcoder_metacmd_ID_make_directory_query = 103;
static i32 fcoder_metacmd_ID_miblo_decrement_basic = 104;
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp = 105;
static i32 fcoder_metacmd_ID_miblo_decrement_time_stamp_minute = 106;
static i32 fcoder_metacmd_ID_miblo_increment_basic = 107;
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp = 108;
static i32 fcoder_metacmd_ID_miblo_increment_time_stamp_minute = 109;
static i32 fcoder_metacmd_ID_mouse_wheel_change_face_size = 110;
static i32 fcoder_metacmd_ID_mouse_wheel_scroll = 111;
static i32 fcoder_metacmd_ID_move_down = 112;
static i32 fcoder_metacmd_ID_move_down_10 = 113;
static i32 fcoder_metacmd_ID_move_down_textual = 114;
static i32 fcoder_metacmd_ID_move_down_to_blank_line = 115;
static i32 fcoder_metacmd_ID_move_down_to_blank_line_end = 116;
static i32 fcoder_metacmd_ID_move_down_to_blank_line_skip_whitespace = 117;
static i32 fcoder_metacmd_ID_move_left = 118;
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_boundary = 119;
static i32 fcoder_metacmd_ID_move_left_alpha_numeric_or_camel_boundary = 120;
static i32 fcoder_metacmd_ID_move_left_token_boundary = 121;
static i32 fcoder_metacmd_ID_move_left_whitespace_boundary = 122;
static i32 fcoder_metacmd_ID_move_left_whitespace_or_token_boundary = 123;
static i32 fcoder_metacmd_ID_move_line_down = 124;
static i32 fcoder_metacmd_ID_move_line_up = 125;
static i32 fcoder_metacmd_ID_move_right = 126;
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_boundary = 127;
static i32 fcoder_metacmd_ID_move_right_alpha_numeric_or_camel_boundary = 128;
static i32 fcoder_metacmd_ID_move_right_token_boundary = 129;
static i32 fcoder_metacmd_ID_move_right_whitespace_boundary = 130;
static i32 fcoder_metacmd_ID_move_right_whitespace_or_token_boundary = 131;
static i32 fcoder_metacmd_ID_move_up = 132;
static i32 fcoder_metacmd_ID_move_up_10 = 133;
static i32 fcoder_metacmd_ID_move_up_to_blank_line = 134;
static i32 fcoder_metacmd_ID_move_up_to_blank_line_end = 135;
static i32 fcoder_metacmd_ID_move_up_to_blank_line_skip_whitespace = 136;
static i32 fcoder_metacmd_ID_multi_paste = 137;
static i32 fcoder_metacmd_ID_multi_paste_interactive = 138;
static i32 fcoder_metacmd_ID_multi_paste_interactive_quick = 139;
static i32 fcoder_metacmd_ID_open_all_code = 140;
static i32 fcoder_metacmd_ID_open_all_code_recursive = 141;
static i32 fcoder_metacmd_ID_open_file_in_quotes = 142;
static i32 fcoder_metacmd_ID_open_in_other = 143;
static i32 fcoder_metacmd_ID_open_long_braces = 144;
static i32 fcoder_metacmd_ID_open_long_braces_break = 145;
static i32 fcoder_metacmd_ID_open_long_braces_semicolon = 146;
static i32 fcoder_metacmd_ID_open_matching_file_cpp = 147;
static i32 fcoder_metacmd_ID_open_panel_hsplit = 148;
static i32 fcoder_metacmd_ID_open_panel_vsplit = 149;
static i32 fcoder_metacmd_ID_page_down = 150;
static i32 fcoder_metacmd_ID_page_up = 151;
static i32 fcoder_metacmd_ID_paste = 152;
static i32 fcoder_metacmd_ID_paste_and_indent = 153;
static i32 fcoder_metacmd_ID_paste_next = 154;
static i32 fcoder_metacmd_ID_paste_next_and_indent = 155;
static i32 fcoder_metacmd_ID_place_in_scope = 156;
static i32 fcoder_metacmd_ID_play_with_a_counter = 157;
static i32 fcoder_metacmd_ID_profile_clear = 158;
static i32 fcoder_metacmd_ID_profile_disable = 159;
static i32 fcoder_metacmd_ID_profile_enable = 160;
static i32 fcoder_metacmd_ID_profile_inspect = 161;
static i32 fcoder_metacmd_ID_project_command_F1 = 162;
static i32 fcoder_metacmd_ID_project_command_F10 = 163;
static i32 fcoder_metacmd_ID_project_command_F11 = 164;
static i32 fcoder_metacmd_ID_project_command_F12 = 165;
static i32 fcoder_metacmd_ID_project_command_F13 = 166;
static i32 fcoder_metacmd_ID_project_command_F14 = 167;
static i32 fcoder_metacmd_ID_project_command_F15 = 168;
static i32 fcoder_metacmd_ID_project_command_F16 = 169;
static i32 fcoder_metacmd_ID_project_command_F2 = 170;
static i32 fcoder_metacmd_ID_project_command_F3 = 171;
static i32 fcoder_metacmd_ID_project_command_F4 = 172;
static i32 fcoder_metacmd_ID_project_command_F5 = 173;
static i32 fcoder_metacmd_ID_project_command_F6 = 174;
static i32 fcoder_metacmd_ID_project_command_F7 = 175;
static i32 fcoder_metacmd_ID_project_command_F8 = 176;
static i32 fcoder_metacmd_ID_project_command_F9 = 177;
static i32 fcoder_metacmd_ID_project_command_lister = 178;
static i32 fcoder_metacmd_ID_project_fkey_command = 179;
static i32 fcoder_metacmd_ID_project_go_to_root_directory = 180;
static i32 fcoder_metacmd_ID_project_reprint = 181;
static i32 fcoder_metacmd_ID_query_replace = 182;
static i32 fcoder_metacmd_ID_query_replace_identifier = 183;
static i32 fcoder_metacmd_ID_query_replace_selection = 184;
static i32 fcoder_metacmd_ID_quick_swap_buffer = 185;
static i32 fcoder_metacmd_ID_redo = 186;
static i32 fcoder_metacmd_ID_redo_all_buffers = 187;
static i32 fcoder_metacmd_ID_rename_file_query = 188;
static i32 fcoder_metacmd_ID_reopen = 189;
static i32 fcoder_metacmd_ID_replace_in_all_buffers = 190;
static i32 fcoder_metacmd_ID_replace_in_buffer = 191;
static i32 fcoder_metacmd_ID_replace_in_range = 192;
static i32 fcoder_metacmd_ID_reverse_search = 193;
static i32 fcoder_metacmd_ID_reverse_search_identifier = 194;
static i32 fcoder_metacmd_ID_save = 195;
static i32 fcoder_metacmd_ID_save_all_dirty_buffers = 196;
static i32 fcoder_metacmd_ID_save_to_query = 197;
static i32 fcoder_metacmd_ID_search = 198;
static i32 fcoder_metacmd_ID_search_identifier = 199;
static i32 fcoder_metacmd_ID_seek_beginning_of_line = 200;
static i32 fcoder_metacmd_ID_seek_beginning_of_textual_line = 201;
static i32 fcoder_metacmd_ID_seek_end_of_line = 202;
static i32 fcoder_metacmd_ID_seek_end_of_textual_line = 203;
static i32 fcoder_metacmd_ID_select_all = 204;
static i32 fcoder_metacmd_ID_select_next_scope_absolute = 205;
static i32 fcoder_metacmd_ID_select_next_scope_after_current = 206;
static i32 fcoder_metacmd_ID_select_prev_scope_absolute = 207;
static i32 fcoder_metacmd_ID_select_prev_top_most_scope = 208;
static i32 fcoder_metacmd_ID_select_surrounding_scope = 209;
static i32 fcoder_metacmd_ID_select_surrounding_scope_maximal = 210;
static i32 fcoder_metacmd_ID_set_eol_mode_from_contents = 211;
static i32 fcoder_metacmd_ID_set_eol_mode_to_binary = 212;
static i32 fcoder_metacmd_ID_set_eol_mode_to_crlf = 213;
static i32 fcoder_metacmd_ID_set_eol_mode_to_lf = 214;
static i32 fcoder_metacmd_ID_set_face_size = 215;
static i32 fcoder_metacmd_ID_set_face_size_this_buffer = 216;
static i32 fcoder_metacmd_ID_set_mark = 217;
static i32 fcoder_metacmd_ID_set_mode_to_notepad_like = 218;
static i32 fcoder_metacmd_ID_set_mode_to_original = 219;
static i32 fcoder_metacmd_ID_setup_build_bat = 220;
static i32 fcoder_metacmd_ID_setup_build_bat_and_sh = 221;
static i32 fcoder_metacmd_ID_setup_build_sh = 222;
static i32 fcoder_metacmd_ID_setup_new_project = 223;
static i32 fcoder_metacmd_ID_show_filebar = 224;
static i32 fcoder_metacmd_ID_show_scrollbar = 225;
static i32 fcoder_metacmd_ID_show_the_log_graph = 226;
static i32 fcoder_metacmd_ID_snipe_backward_whitespace_or_token_boundary = 227;
static i32 fcoder_metacmd_ID_snipe_forward_whitespace_or_token_boundary = 228;
static i32 fcoder_metacmd_ID_snippet_lister = 229;
static i32 fcoder_metacmd_ID_string_repeat = 230;
static i32 fcoder_metacmd_ID_suppress_mouse = 231;
static i32 fcoder_metacmd_ID_swap_panels = 232;
static i32 fcoder_metacmd_ID_theme_lister = 233;
static i32 fcoder_metacmd_ID_to_lowercase = 234;
static i32 fcoder_metacmd_ID_to_uppercase = 235;
static i32 fcoder_metacmd_ID_toggle_filebar = 236;
static i32 fcoder_metacmd_ID_toggle_fps_meter = 237;
static i32 fcoder_metacmd_ID_toggle_fullscreen = 238;
static i32 fcoder_metacmd_ID_toggle_highlight_enclosing_scopes = 239;
static i32 fcoder_metacmd_ID_toggle_highlight_line_at_cursor = 240;
static i32 fcoder_metacmd_ID_toggle_line_numbers = 241;
static i32 fcoder_metacmd_ID_toggle_line_wrap = 242;
static i32 fcoder_metacmd_ID_toggle_mouse = 243;
static i32 fcoder_metacmd_ID_toggle_paren_matching_helper = 244;
static i32 fcoder_metacmd_ID_toggle_show_whitespace = 245;
static i32 fcoder_metacmd_ID_toggle_virtual_whitespace = 246;
static i32 fcoder_metacmd_ID_tutorial_maximize = 247;
static i32 fcoder_metacmd_ID_tutorial_minimize = 248;
static i32 fcoder_metacmd_ID_uncomment_line = 249;
static i32 fcoder_metacmd_ID_undo = 250;
static i32 fcoder_metacmd_ID_undo_all_buffers = 251;
static i32 fcoder_metacmd_ID_view_buffer_other_panel = 252;
static i32 fcoder_metacmd_ID_view_jump_list_with_lister = 253;
static i32 fcoder_metacmd_ID_word_complete = 254;
static i32 fcoder_metacmd_ID_word_complete_drop_down = 255;
static i32 fcoder_metacmd_ID_write_block = 256;
static i32 fcoder_metacmd_ID_write_hack = 257;
static i32 fcoder_metacmd_ID_write_note = 258;
static i32 fcoder_metacmd_ID_write_space = 259;
static i32 fcoder_metacmd_ID_write_text_and_auto_indent = 260;
static i32 fcoder_metacmd_ID_write_text_input = 261;
static i32 fcoder_metacmd_ID_write_todo = 262;
static i32 fcoder_metacmd_ID_write_underscore = 263;
static i32 fcoder_metacmd_ID_write_zero_struct = 264;
#endif

View File

@ -38,10 +38,6 @@ defcolor_back_cycle = managed_id_declare(app, string_u8_litexpr("colors"), strin
defcolor_text_cycle = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_text_cycle"));
defcolor_line_numbers_back = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_line_numbers_back"));
defcolor_line_numbers_text = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_line_numbers_text"));
defcolor_function = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_function"));
defcolor_operator = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_operator"));
defcolor_type = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_type"));
defcolor_macro = managed_id_declare(app, string_u8_litexpr("colors"), string_u8_litexpr("defcolor_macro"));
view_rewrite_loc = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("view_rewrite_loc"));
view_next_rewrite_loc = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("view_next_rewrite_loc"));
view_paste_index_loc = managed_id_declare(app, string_u8_litexpr("attachment"), string_u8_litexpr("view_paste_index_loc"));