From 43913b122ac603859123ecfb57ad9c3136caddb9 Mon Sep 17 00:00:00 2001 From: Allen Webster Date: Wed, 25 Nov 2020 14:35:27 -0800 Subject: [PATCH] Try moving one variable out of the old config system into the new one 'enable_virtual_whitespace' --- 4ed.cpp | 2 +- custom/4coder_code_index.cpp | 7 +- custom/4coder_config.cpp | 161 ++++++++++++++++------------ custom/4coder_config.h | 15 ++- custom/4coder_default_hooks.cpp | 2 +- custom/4coder_dynamic_bindings.cpp | 2 +- custom/4coder_project_commands.cpp | 20 +--- custom/generated/command_metadata.h | 26 ++--- 8 files changed, 126 insertions(+), 109 deletions(-) diff --git a/4ed.cpp b/4ed.cpp index 1bc1f93c..d56dc553 100644 --- a/4ed.cpp +++ b/4ed.cpp @@ -33,7 +33,7 @@ init_command_line_settings(App_Settings *settings, Plat_Settings *plat_settings, } } - switch (mode){ + switch (mode){ case CLMode_App: { switch (action){ diff --git a/custom/4coder_code_index.cpp b/custom/4coder_code_index.cpp index 37dfc064..067e3ef9 100644 --- a/custom/4coder_code_index.cpp +++ b/custom/4coder_code_index.cpp @@ -1195,7 +1195,8 @@ function Layout_Item_List layout_virt_indent_index(Application_Links *app, Arena *arena, Buffer_ID buffer, Range_i64 range, Face_ID face, f32 width, Layout_Wrap_Kind kind){ Layout_Item_List result = {}; - if (global_config.enable_virtual_whitespace){ + b32 enable_virtual_whitespace = def_get_config_b32(vars_save_string_lit("enable_virtual_whitespace")); + if (enable_virtual_whitespace){ code_index_lock(); Code_Index_File *file = code_index_get_file(buffer); if (file != 0){ @@ -1234,7 +1235,9 @@ layout_virt_indent_index_generic(Application_Links *app, Arena *arena, Buffer_ID CUSTOM_COMMAND_SIG(toggle_virtual_whitespace) CUSTOM_DOC("Toggles virtual whitespace for all files.") { - global_config.enable_virtual_whitespace = !global_config.enable_virtual_whitespace; + String_ID key = vars_save_string_lit("enable_virtual_whitespace"); + b32 enable_virtual_whitespace = def_get_config_b32(key); + def_set_config_b32(key, !enable_virtual_whitespace); for (Buffer_ID buffer = get_buffer_next(app, 0, Access_Always); buffer != 0; diff --git a/custom/4coder_config.cpp b/custom/4coder_config.cpp index 72f3b37a..0aa1b52c 100644 --- a/custom/4coder_config.cpp +++ b/custom/4coder_config.cpp @@ -35,6 +35,16 @@ parse_extension_line_to_extension_list(Application_Links *app, return(array); } +//////////////////////////////// +// NOTE(allen): Token Array + +function Token_Array +token_array_from_text(Application_Links *app, Arena *arena, String_Const_u8 data){ + ProfileScope(app, "token array from text"); + Token_List list = lex_full_input_cpp(arena, data); + return(token_array_from_list(arena, &list)); +} + //////////////////////////////// // NOTE(allen): Built in Mapping @@ -232,7 +242,7 @@ def_config_parser_get_boolean(Config_Parser *ctx){ } function Config* -def_config_parser_config(Config_Parser *ctx){ +def_config_parser_top(Config_Parser *ctx){ i32 *version = def_config_parser_version(ctx); Config_Assignment *first = 0; @@ -485,18 +495,31 @@ def_config_parser_element(Config_Parser *ctx){ } function Config* -def_config_parse(Application_Links *app, Arena *arena, String_Const_u8 file_name, - String_Const_u8 data, Token_Array array){ +def_config_parse(Application_Links *app, Arena *arena, String_Const_u8 file_name, String_Const_u8 data, Token_Array array){ ProfileScope(app, "config parse"); Temp_Memory restore_point = begin_temp(arena); Config_Parser ctx = def_config_parser_init(arena, file_name, data, array); - Config *config = def_config_parser_config(&ctx); + Config *config = def_config_parser_top(&ctx); if (config == 0){ end_temp(restore_point); } return(config); } +function Config* +def_config_from_text(Application_Links *app, Arena *arena, String_Const_u8 file_name, String_Const_u8 data){ + Config *parsed = 0; + Temp_Memory restore_point = begin_temp(arena); + Token_Array array = token_array_from_text(app, arena, data); + if (array.tokens != 0){ + parsed = def_config_parse(app, arena, file_name, data, array); + if (parsed == 0){ + end_temp(restore_point); + } + } + return(parsed); +} + function Config_Error* def_config_push_error(Arena *arena, Config_Error_List *list, String_Const_u8 file_name, u8 *pos, char *error_text){ Config_Error *error = push_array(arena, Config_Error, 1); @@ -672,12 +695,11 @@ def_var_dump_rvalue(Application_Links *app, Config *config, Variable_Handle dst, } function Variable_Handle -def_var_from_config(Application_Links *app, Variable_Handle parent, String_Const_u8 key, Config *config){ +def_fill_var_from_config(Application_Links *app, Variable_Handle parent, String_ID key, Config *config){ Variable_Handle result = vars_get_nil(); - String_ID key_id = vars_save_string(key); - if (key_id != 0){ + if (key != 0){ String_ID file_name_id = vars_save_string(config->file_name); - result = vars_new_variable(parent, key_id, file_name_id); + result = vars_new_variable(parent, key, file_name_id); Variable_Handle var = result; @@ -715,6 +737,64 @@ def_var_from_config(Application_Links *app, Variable_Handle parent, String_Const } +//////////////////////////////// +// NOTE(allen): Config Variables Read + +global const u64 def_config_lookup_count = 4; +global String_ID def_config_lookup_table[def_config_lookup_count] = {}; + +function void +_def_config_table_init(void){ + if (def_config_lookup_table[0] == 0){ + def_config_lookup_table[0] = vars_save_string(string_u8_litinit("ses_config")); + def_config_lookup_table[1] = vars_save_string(string_u8_litinit("prj_config")); + def_config_lookup_table[2] = vars_save_string(string_u8_litinit("usr_config")); + def_config_lookup_table[3] = vars_save_string(string_u8_litinit("def_config")); + } +} + +function Variable_Handle +def_get_config_var(String_ID key){ + _def_config_table_init(); + + Variable_Handle result = vars_get_nil(); + Variable_Handle root = vars_get_root(); + for (u64 i = 0; i < def_config_lookup_count; i += 1){ + String_ID block_key = def_config_lookup_table[i]; + Variable_Handle block_var = vars_read_key(root, block_key); + Variable_Handle var = vars_read_key(block_var, key); + if (!vars_is_nil(var)){ + result = var; + break; + } + } + + return(result); +} + +function void +def_set_config_var(String_ID key, String_ID val){ + _def_config_table_init(); + Variable_Handle root = vars_get_root(); + Variable_Handle block_var = vars_read_key(root, def_config_lookup_table[0]); + vars_new_variable(block_var, key, val); +} + +function b32 +def_get_config_b32(String_ID key){ + Variable_Handle var = def_get_config_var(key); + String_ID val = vars_string_id_from_var(var); + b32 result = (val != 0 && val != vars_save_string_lit("false")); + return(result); +} + +function void +def_set_config_b32(String_ID key, b32 val){ + String_ID val_id = val?vars_save_string_lit("true"):vars_save_string_lit("false"); + def_set_config_var(key, val_id); +} + + //////////////////////////////// // NOTE(allen): Eval @@ -1240,30 +1320,6 @@ change_mode(Application_Links *app, String_Const_u8 mode){ //////////////////////////////// -function Token_Array -token_array_from_text(Application_Links *app, Arena *arena, String_Const_u8 data){ - ProfileScope(app, "token array from text"); - Token_List list = lex_full_input_cpp(arena, data); - return(token_array_from_list(arena, &list)); -} - -function Config* -config_from_text(Application_Links *app, Arena *arena, String_Const_u8 file_name, - String_Const_u8 data){ - Config *parsed = 0; - Temp_Memory restore_point = begin_temp(arena); - Token_Array array = token_array_from_text(app, arena, data); - if (array.tokens != 0){ - parsed = def_config_parse(app, arena, file_name, data, array); - if (parsed == 0){ - end_temp(restore_point); - } - } - return(parsed); -} - -//////////////////////////////// - function void config_init_default(Config_Data *config){ config->user_name = SCu8(config->user_name_space, (u64)0); @@ -1287,7 +1343,6 @@ config_init_default(Config_Data *config){ config->enable_output_wrapping = false; config->enable_undo_fade_out = true; - config->enable_virtual_whitespace = true; config->enable_code_wrapping = true; config->automatically_indent_text_on_save = true; config->automatically_save_changes_on_build = true; @@ -1331,7 +1386,7 @@ config_parse__data(Application_Links *app, Arena *arena, String_Const_u8 file_na b32 success = false; - Config *parsed = config_from_text(app, arena, file_name, data); + Config *parsed = def_config_from_text(app, arena, file_name, data); if (parsed != 0){ success = true; @@ -1364,7 +1419,6 @@ config_parse__data(Application_Links *app, Arena *arena, String_Const_u8 file_na config_bool_var(parsed, "enable_undo_fade_out", 0, &config->enable_undo_fade_out); - config_bool_var(parsed, "enable_virtual_whitespace", 0, &config->enable_virtual_whitespace); config_bool_var(parsed, "enable_code_wrapping", 0, &config->enable_code_wrapping); config_bool_var(parsed, "automatically_indent_text_on_save", 0, &config->automatically_indent_text_on_save); config_bool_var(parsed, "automatically_save_changes_on_build", 0, &config->automatically_save_changes_on_build); @@ -1453,7 +1507,7 @@ config_parse__file_name(Application_Links *app, Arena *arena, char *file_name, C function Config* theme_parse__data(Application_Links *app, Arena *arena, String_Const_u8 file_name, String_Const_u8 data, Arena *color_arena, Color_Table *color_table){ - Config *parsed = config_from_text(app, arena, file_name, data); + Config *parsed = def_config_from_text(app, arena, file_name, data); if (parsed != 0){ for (Config_Assignment *node = parsed->first; node != 0; @@ -1538,39 +1592,6 @@ theme_parse__file_name(Application_Links *app, Arena *arena, char *file_name, Ar //////////////////////////////// -function void -config_feedback_bool(Arena *arena, List_String_Const_u8 *list, char *name, b32 val){ - string_list_pushf(arena, list, "%s = %s;\n", name, (char*)(val?"true":"false")); -} - -function void -config_feedback_string(Arena *arena, List_String_Const_u8 *list, char *name, String_Const_u8 val){ - val.size = clamp_bot(0, val.size); - string_list_pushf(arena, list, "%s = \"%.*s\";\n", name, string_expand(val)); -} - -function void -config_feedback_string(Arena *arena, List_String_Const_u8 *list, char *name, char *val){ - string_list_pushf(arena, list, "%s = \"%s\";\n", name, val); -} - -function void -config_feedback_extension_list(Arena *arena, List_String_Const_u8 *list, char *name, String_Const_u8_Array *extensions){ - string_list_pushf(arena, list, "%s = \"", name); - for (i32 i = 0; i < extensions->count; ++i){ - String_Const_u8 ext = extensions->strings[i]; - string_list_pushf(arena, list, ".%.*s", string_expand(ext)); - } - string_list_push_u8_lit(arena, list, "\";\n"); -} - -function void -config_feedback_int(Arena *arena, List_String_Const_u8 *list, char *name, i32 val){ - string_list_pushf(arena, list, "%s = %d;\n", name, val); -} - -//////////////////////////////// - function void load_config_and_apply(Application_Links *app, Arena *out_arena, Config_Data *config, i32 override_font_size, b32 override_hinting){ @@ -1589,7 +1610,7 @@ load_config_and_apply(Application_Links *app, Arena *out_arena, Config_Data *con // NOTE(allen): Save As Variables if (error_text.str == 0){ - Variable_Handle config_var = def_var_from_config(app, vars_get_root(), string_litinit("config"), parsed); + Variable_Handle config_var = def_fill_var_from_config(app, vars_get_root(), vars_save_string_lit("def_config"), parsed); vars_print(app, config_var); } } diff --git a/custom/4coder_config.h b/custom/4coder_config.h index c09c0dff..a147ece5 100644 --- a/custom/4coder_config.h +++ b/custom/4coder_config.h @@ -204,7 +204,6 @@ struct Config_Data{ b8 indent_with_tabs; b8 enable_undo_fade_out; - b8 enable_virtual_whitespace; b8 enable_code_wrapping; b8 automatically_indent_text_on_save; b8 automatically_save_changes_on_build; @@ -266,7 +265,7 @@ function b32 def_config_parser_get_boolean(Config_Parser *ctx); function void def_config_parser_recover(Config_Parser *ctx); -function Config* def_config_parser_config (Config_Parser *ctx); +function Config* def_config_parser_top (Config_Parser *ctx); function i32* def_config_parser_version (Config_Parser *ctx); function Config_Assignment* def_config_parser_assignment(Config_Parser *ctx); function Config_LValue* def_config_parser_lvalue (Config_Parser *ctx); @@ -275,6 +274,7 @@ function Config_Compound* def_config_parser_compound (Config_Parser *ct function Config_Compound_Element* def_config_parser_element (Config_Parser *ctx); function Config* def_config_parse(Application_Links *app, Arena *arena, String_Const_u8 file_name, String_Const_u8 data, Token_Array array); +function Config* def_config_from_text(Application_Links *app, Arena *arena, String_Const_u8 file_name, String_Const_u8 data); function Config_Error* def_config_push_error(Arena *arena, Config_Error_List *list, String_Const_u8 file_name, u8 *pos, char *error_text); function Config_Error* def_config_push_error(Arena *arena, Config *config, u8 *pos, char *error_text); @@ -287,7 +287,16 @@ function void def_config_parser_recover(Config_Parser *ctx); //////////////////////////////// // NOTE(allen): Dump Config to Variables -function Variable_Handle def_var_from_config(Application_Links *app, Variable_Handle parent, String_Const_u8 key, Config *config); +function Variable_Handle def_fill_var_from_config(Application_Links *app, Variable_Handle parent, String_ID key, Config *config); + +//////////////////////////////// +// NOTE(allen): Config Variables Read + +function Variable_Handle def_get_config_var(String_ID key); +function void def_set_config_var(String_ID key, String_ID val); + +function b32 def_get_config_b32(String_ID key); +function void def_set_config_b32(String_ID key, b32 val); #endif diff --git a/custom/4coder_default_hooks.cpp b/custom/4coder_default_hooks.cpp index c89d16f5..2106370d 100644 --- a/custom/4coder_default_hooks.cpp +++ b/custom/4coder_default_hooks.cpp @@ -895,7 +895,7 @@ BUFFER_HOOK_SIG(default_file_save){ // buffer_id ProfileScope(app, "default file save"); - b32 is_virtual = global_config.enable_virtual_whitespace; + b32 is_virtual = def_get_config_b32(vars_save_string_lit("enable_virtual_whitespace")); if (global_config.automatically_indent_text_on_save && is_virtual){ auto_indent_buffer(app, buffer_id, buffer_range(app, buffer_id)); } diff --git a/custom/4coder_dynamic_bindings.cpp b/custom/4coder_dynamic_bindings.cpp index 828829af..83eb9197 100644 --- a/custom/4coder_dynamic_bindings.cpp +++ b/custom/4coder_dynamic_bindings.cpp @@ -27,7 +27,7 @@ dynamic_binding_load_from_file(Application_Links *app, Mapping *mapping, String_ FILE *file = open_file_try_current_path_then_binary_path(app, (char*)filename_copied.str); if (file != 0){ Data data = dump_file_handle(scratch, file); - Config *parsed = config_from_text(app, scratch, filename, SCu8(data)); + Config *parsed = def_config_from_text(app, scratch, filename, SCu8(data)); fclose(file); if (parsed != 0){ diff --git a/custom/4coder_project_commands.cpp b/custom/4coder_project_commands.cpp index ffb4d1b7..ad81e775 100644 --- a/custom/4coder_project_commands.cpp +++ b/custom/4coder_project_commands.cpp @@ -718,25 +718,9 @@ set_current_project(Application_Links *app, Project *project, Config *parsed){ Variable_Handle proj_var = {}; if (parsed->version == 0 || *parsed->version < 2){ -#if 0 - struct Project{ - b32 loaded; - - String_Const_u8 dir; - String_Const_u8 name; - - Project_File_Pattern_Array pattern_array; - Project_File_Pattern_Array blacklist_pattern_array; - Project_File_Load_Path_Array load_path_array; - Project_Command_Array command_array; - - i32 fkey_commands[16]; - }; -#endif - print_message(app, string_u8_litexpr("Project variables converted from version 1 to version 2\n")); - String_ID project_id = vars_save_string(string_litinit("project")); + String_ID project_id = vars_save_string_lit("prj_config"); String_ID version_id = vars_save_string(string_litinit("version")); String_ID project_name_id = vars_save_string(string_litinit("project_name")); String_ID patterns_id = vars_save_string(string_litinit("patterns")); @@ -818,7 +802,7 @@ set_current_project(Application_Links *app, Project *project, Config *parsed){ } } else{ - proj_var = def_var_from_config(app, vars_get_root(), string_litinit("project"), parsed); + proj_var = def_fill_var_from_config(app, vars_get_root(), vars_save_string_lit("prj_config"), parsed); } vars_print(app, proj_var); diff --git a/custom/generated/command_metadata.h b/custom/generated/command_metadata.h index 851ba005..641e78f5 100644 --- a/custom/generated/command_metadata.h +++ b/custom/generated/command_metadata.h @@ -295,7 +295,7 @@ static Command_Metadata fcoder_metacmd_table[250] = { { 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, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 243 }, { PROC_LINKS(click_set_mark, 0), false, "click_set_mark", 14, "Sets the mark position to the mouse position.", 45, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 256 }, { 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, "W:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 959 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 943 }, { PROC_LINKS(close_build_panel, 0), false, "close_build_panel", 17, "If the special build panel is open, closes it.", 46, "W:\\4ed\\code\\custom\\4coder_build_commands.cpp", 44, 174 }, { PROC_LINKS(close_panel, 0), false, "close_panel", 11, "Closes the currently active panel if it is not the only panel open.", 67, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 674 }, { 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, "W:\\4ed\\code\\custom\\4coder_docs.cpp", 34, 190 }, @@ -371,8 +371,8 @@ static Command_Metadata fcoder_metacmd_table[250] = { { 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, "W:\\4ed\\code\\custom\\4coder_search.cpp", 36, 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, "W:\\4ed\\code\\custom\\4coder_search.cpp", 36, 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, "W:\\4ed\\code\\custom\\4coder_search.cpp", 36, 186 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 979 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_config.cpp", 36, 1661 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 963 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_config.cpp", 36, 1682 }, { PROC_LINKS(load_themes_default_folder, 0), false, "load_themes_default_folder", 26, "Loads all the theme files in the default theme folder.", 54, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 533 }, { PROC_LINKS(load_themes_hot_directory, 0), false, "load_themes_hot_directory", 25, "Loads all the theme files in the current hot directory.", 55, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 545 }, { 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, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1493 }, @@ -414,8 +414,8 @@ static Command_Metadata fcoder_metacmd_table[250] = { { 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, "W:\\4ed\\code\\custom\\4coder_clipboard.cpp", 39, 380 }, { PROC_LINKS(music_start, 0), false, "music_start", 11, "Starts the music.", 17, "W:\\4ed\\code\\custom\\4coder_examples.cpp", 38, 213 }, { PROC_LINKS(music_stop, 0), false, "music_stop", 10, "Stops the music.", 16, "W:\\4ed\\code\\custom\\4coder_examples.cpp", 38, 232 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 965 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 971 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 949 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 955 }, { 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, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1574 }, { PROC_LINKS(open_in_other, 0), false, "open_in_other", 13, "Interactively opens a file in the other panel.", 46, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 2056 }, { PROC_LINKS(open_long_braces, 0), false, "open_long_braces", 16, "At the cursor, insert a '{' and '}' separated by a blank line.", 62, "W:\\4ed\\code\\custom\\4coder_combined_write_commands.cpp", 53, 46 }, @@ -436,9 +436,9 @@ static Command_Metadata fcoder_metacmd_table[250] = { { PROC_LINKS(profile_disable, 0), false, "profile_disable", 15, "Prevent 4coder's self profiler from gathering new profiling information.", 72, "W:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 219 }, { PROC_LINKS(profile_enable, 0), false, "profile_enable", 14, "Allow 4coder's self profiler to gather new profiling information.", 65, "W:\\4ed\\code\\custom\\4coder_profile.cpp", 37, 212 }, { PROC_LINKS(profile_inspect, 0), true, "profile_inspect", 15, "Inspect all currently collected profiling information in 4coder's self profiler.", 80, "W:\\4ed\\code\\custom\\4coder_profile_inspect.cpp", 45, 886 }, -{ PROC_LINKS(project_command_lister, 0), false, "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1405 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 987 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1013 }, +{ PROC_LINKS(project_command_lister, 0), false, "project_command_lister", 22, "Open a lister of all commands in the currently loaded project.", 62, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1389 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 971 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 997 }, { 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, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1280 }, { 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, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1301 }, { 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, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 1317 }, @@ -477,10 +477,10 @@ static Command_Metadata fcoder_metacmd_table[250] = { { PROC_LINKS(set_mark, 0), false, "set_mark", 8, "Sets the mark to the current position of the cursor.", 52, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 115 }, { PROC_LINKS(set_mode_to_notepad_like, 0), false, "set_mode_to_notepad_like", 24, "Sets the edit mode to Notepad like.", 35, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 503 }, { PROC_LINKS(set_mode_to_original, 0), false, "set_mode_to_original", 20, "Sets the edit mode to 4coder original.", 38, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 497 }, -{ PROC_LINKS(setup_build_bat, 0), false, "setup_build_bat", 15, "Queries the user for several configuration options and initializes a new build batch script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1354 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1366 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1360 }, -{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1347 }, +{ PROC_LINKS(setup_build_bat, 0), false, "setup_build_bat", 15, "Queries the user for several configuration options and initializes a new build batch script.", 92, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1338 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1350 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1344 }, +{ 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, "W:\\4ed\\code\\custom\\4coder_project_commands.cpp", 46, 1331 }, { PROC_LINKS(show_filebar, 0), false, "show_filebar", 12, "Sets the current view to show it's filebar.", 43, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 697 }, { PROC_LINKS(show_scrollbar, 0), false, "show_scrollbar", 14, "Sets the current view to show it's scrollbar.", 45, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 683 }, { PROC_LINKS(show_the_log_graph, 0), true, "show_the_log_graph", 18, "Parses *log* and displays the 'log graph' UI", 44, "W:\\4ed\\code\\custom\\4coder_log_parser.cpp", 40, 993 }, @@ -503,7 +503,7 @@ static Command_Metadata fcoder_metacmd_table[250] = { { PROC_LINKS(toggle_mouse, 0), false, "toggle_mouse", 12, "Toggles the mouse suppression mode, see suppress_mouse and allow_mouse.", 71, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 491 }, { 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, "W:\\4ed\\code\\custom\\4coder_default_framework.cpp", 47, 521 }, { PROC_LINKS(toggle_show_whitespace, 0), false, "toggle_show_whitespace", 22, "Toggles the current buffer's whitespace visibility status.", 58, "W:\\4ed\\code\\custom\\4coder_base_commands.cpp", 43, 816 }, -{ PROC_LINKS(toggle_virtual_whitespace, 0), false, "toggle_virtual_whitespace", 25, "Toggles virtual whitespace for all files.", 41, "W:\\4ed\\code\\custom\\4coder_code_index.cpp", 40, 1234 }, +{ PROC_LINKS(toggle_virtual_whitespace, 0), false, "toggle_virtual_whitespace", 25, "Toggles virtual whitespace for all files.", 41, "W:\\4ed\\code\\custom\\4coder_code_index.cpp", 40, 1235 }, { PROC_LINKS(tutorial_maximize, 0), false, "tutorial_maximize", 17, "Expand the tutorial window", 26, "W:\\4ed\\code\\custom\\4coder_tutorial.cpp", 38, 20 }, { PROC_LINKS(tutorial_minimize, 0), false, "tutorial_minimize", 17, "Shrink the tutorial window", 26, "W:\\4ed\\code\\custom\\4coder_tutorial.cpp", 38, 34 }, { PROC_LINKS(uncomment_line, 0), false, "uncomment_line", 14, "If present, delete '//' at the beginning of the line after leading whitespace.", 78, "W:\\4ed\\code\\custom\\4coder_combined_write_commands.cpp", 53, 137 },