Take out explicit config writer

This commit is contained in:
Allen Webster 2020-11-24 19:13:42 -08:00
parent a541d4b4c9
commit a0bca352ce
4 changed files with 79 additions and 66 deletions

View File

@ -1663,18 +1663,17 @@ load_config_and_apply(Application_Links *app, Arena *out_arena, Config_Data *con
Config *parsed = config_parse__file_name(app, out_arena, "config.4coder", config);
if (parsed != 0){
// Top
print_message(app, string_u8_litexpr("Loaded config file:\n"));
// Errors
String_Const_u8 error_text = config_stringize_errors(app, scratch, parsed);
if (error_text.str != 0){
print_message(app, string_u8_litexpr("trying to load config file:\n"));
print_message(app, error_text);
}
// NOTE(allen): Save As Variables
if (error_text.str == 0){
def_var_from_config(app, vars_get_root(), string_litinit("config"), parsed);
Variable_Handle config_var = def_var_from_config(app, vars_get_root(), string_litinit("config"), parsed);
vars_print(app, config_var);
}
}
else{
@ -1694,66 +1693,6 @@ load_config_and_apply(Application_Links *app, Arena *out_arena, Config_Data *con
#undef M
}
{
// Values
Temp_Memory temp2 = begin_temp(scratch);
List_String_Const_u8 list = {};
config_feedback_string(scratch, &list, "user_name", config->user_name);
config_feedback_extension_list(scratch, &list, "treat_as_code", &config->code_exts);
config_feedback_string(scratch, &list, "mapping", config->mapping);
config_feedback_string(scratch, &list, "mode", config->mode);
config_feedback_bool(scratch, &list, "bind_by_physical_key", config->bind_by_physical_key);
config_feedback_bool(scratch, &list, "use_scroll_bars", config->use_scroll_bars);
config_feedback_bool(scratch, &list, "use_file_bars", config->use_file_bars);
config_feedback_bool(scratch, &list, "hide_file_bar_in_ui", config->hide_file_bar_in_ui);
config_feedback_bool(scratch, &list, "use_error_highlight", config->use_error_highlight);
config_feedback_bool(scratch, &list, "use_jump_highlight", config->use_jump_highlight);
config_feedback_bool(scratch, &list, "use_scope_highlight", config->use_scope_highlight);
config_feedback_bool(scratch, &list, "use_paren_helper", config->use_paren_helper);
config_feedback_bool(scratch, &list, "use_comment_keyword", config->use_comment_keyword);
config_feedback_bool(scratch, &list, "lister_whole_word_backspace_when_modified", config->lister_whole_word_backspace_when_modified);
config_feedback_bool(scratch, &list, "show_line_number_margins", config->show_line_number_margins);
config_feedback_bool(scratch, &list, "enable_output_wrapping", config->enable_output_wrapping);
config_feedback_bool(scratch, &list, "enable_undo_fade_out", config->enable_undo_fade_out);
config_feedback_int(scratch, &list, "cursor_roundness", (i32)(config->cursor_roundness*100.f));
config_feedback_int(scratch, &list, "mark_thickness", (i32)(config->mark_thickness));
config_feedback_int(scratch, &list, "lister_roundness", (i32)(config->lister_roundness*100.f));
config_feedback_bool(scratch, &list, "enable_virtual_whitespace", config->enable_virtual_whitespace);
config_feedback_int(scratch, &list, "virtual_whitespace_regular_indent", config->virtual_whitespace_regular_indent);
config_feedback_bool(scratch, &list, "enable_code_wrapping", config->enable_code_wrapping);
config_feedback_bool(scratch, &list, "automatically_indent_text_on_save", config->automatically_indent_text_on_save);
config_feedback_bool(scratch, &list, "automatically_save_changes_on_build", config->automatically_save_changes_on_build);
config_feedback_bool(scratch, &list, "automatically_load_project", config->automatically_load_project);
config_feedback_bool(scratch, &list, "indent_with_tabs", config->indent_with_tabs);
config_feedback_int(scratch, &list, "indent_width", config->indent_width);
config_feedback_int(scratch, &list, "default_tab_width", config->default_tab_width);
config_feedback_string(scratch, &list, "default_theme_name", config->default_theme_name);
config_feedback_bool(scratch, &list, "highlight_line_at_cursor", config->highlight_line_at_cursor);
config_feedback_string(scratch, &list, "default_font_name", config->default_font_name);
config_feedback_int(scratch, &list, "default_font_size", config->default_font_size);
config_feedback_bool(scratch, &list, "default_font_hinting", config->default_font_hinting);
config_feedback_string(scratch, &list, "default_compiler_bat", config->default_compiler_bat);
config_feedback_string(scratch, &list, "default_flags_bat", config->default_flags_bat);
config_feedback_string(scratch, &list, "default_compiler_sh", config->default_compiler_sh);
config_feedback_string(scratch, &list, "default_flags_sh", config->default_flags_sh);
config_feedback_bool(scratch, &list, "lalt_lctrl_is_altgr", config->lalt_lctrl_is_altgr);
string_list_push_u8_lit(scratch, &list, "\n");
String_Const_u8 message = string_list_flatten(scratch, list);
print_message(app, message);
end_temp(temp2);
}
// Apply config
//setup_built_in_mapping(app, config->mapping, &framework_mapping, mapid_global, mapid_file, mapid_code);
change_mode(app, config->mode);

View File

@ -82,7 +82,7 @@ vars_get_nil(void){
function b32
vars_is_nil(Variable_Handle var){
return(var.ptr == &vars_nil);
return(var.ptr == 0 || var.ptr == &vars_nil);
}
function b32
@ -90,6 +90,41 @@ vars_match(Variable_Handle a, Variable_Handle b){
return(a.ptr == b.ptr);
}
function Variable_Handle
vars_first_child(Variable_Handle var){
Variable_Handle result = {};
if (var.ptr != 0){
result.ptr = var.ptr->first;
}
else{
result.ptr = &vars_nil;
}
return(result);
}
function Variable_Handle
vars_next_sibling(Variable_Handle var){
Variable_Handle result = {};
if (var.ptr != 0){
result.ptr = var.ptr->next;
}
else{
result.ptr = &vars_nil;
}
return(result);
}
function String_ID
vars_key_id_from_var(Variable_Handle var){
return(var.ptr->key);
}
function String_Const_u8
vars_key_from_var(Arena *arena, Variable_Handle var){
String_ID id = vars_key_id_from_var(var);
String_Const_u8 result = vars_read_string(arena, id);
return(result);
}
function String_ID
vars_string_id_from_var(Variable_Handle var){
@ -233,5 +268,36 @@ vars_clear_keys(Variable_Handle var){
}
}
function void
vars_print_indented(Application_Links *app, Variable_Handle var, i32 indent){
Scratch_Block scratch(app);
local_persist char spaces[] =
" "
" "
" "
" ";
String_Const_u8 var_key = vars_key_from_var(scratch, var);
String_Const_u8 var_val = vars_string_from_var(scratch, var);
String_Const_u8 line = push_stringf(scratch, "%.*s%.*s: \"%.*s\"\n",
clamp_top(indent, sizeof(spaces)), spaces,
string_expand(var_key),
string_expand(var_val));
print_message(app, line);
i32 sub_indent = indent + 1;
for (Variable_Handle sub = vars_first_child(var);
!vars_is_nil(sub);
sub = vars_next_sibling(sub)){
vars_print_indented(app, sub, sub_indent);
}
}
function void
vars_print(Application_Links *app, Variable_Handle var){
vars_print_indented(app, var, 0);
}
// BOTTOM

View File

@ -36,7 +36,12 @@ function Variable_Handle vars_get_nil(void);
function b32 vars_is_nil(Variable_Handle var);
function b32 vars_match(Variable_Handle a, Variable_Handle b);
function Variable_Handle vars_first_child(Variable_Handle var);
function Variable_Handle vars_next_sibling(Variable_Handle var);
function Variable_Handle vars_read_key(Variable_Handle var, String_ID key);
function String_ID vars_key_id_from_var(Variable_Handle var);
function String_Const_u8 vars_key_from_var(Arena *arena, Variable_Handle var);
function String_ID vars_string_id_from_var(Variable_Handle var);
function String_Const_u8 vars_string_from_var(Arena *arena, Variable_Handle var);
@ -46,6 +51,9 @@ function Variable_Handle vars_new_variable(Variable_Handle var, String_ID key);
function Variable_Handle vars_new_variable(Variable_Handle var, String_ID key, String_ID string);
function void vars_clear_keys(Variable_Handle var);
function void vars_print_indented(Application_Links *app, Variable_Handle var, i32 indent);
function void vars_print(Application_Links *app, Variable_Handle var);
#endif //4CODER_VARIABLES_H
// BOTTOM

View File

@ -372,7 +372,7 @@ static Command_Metadata fcoder_metacmd_table[250] = {
{ 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, 867 },
{ 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, 1805 },
{ 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, 1744 },
{ 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 },