diff --git a/src/config.cc b/src/config.cc index e97df05..469a2f2 100644 --- a/src/config.cc +++ b/src/config.cc @@ -49,7 +49,7 @@ void Config::load() { catch(const std::exception &e) { ::Terminal::get().print("Error: could not parse "+config_json+": "+e.what()+"\n", true); std::stringstream ss; - ss << configjson; + ss << default_config_file; boost::property_tree::read_json(ss, cfg); retrieve_config(); } @@ -63,7 +63,7 @@ void Config::find_or_create_config_files() { boost::filesystem::create_directories(config_dir); // io exp captured by calling method if (!boost::filesystem::exists(config_json)) - filesystem::write(config_json, configjson); + filesystem::write(config_json, default_config_file); auto juci_style_path = home/"styles"; boost::filesystem::create_directories(juci_style_path); // io exp captured by calling method @@ -160,7 +160,7 @@ void Config::update_config_file() { try { if(cfg.get("version")!=JUCI_VERSION) { std::stringstream ss; - ss << configjson; + ss << default_config_file; boost::property_tree::read_json(ss, default_cfg); cfg_ok=false; if(cfg.count("version")>0) @@ -196,6 +196,7 @@ void Config::get_source() { source.default_tab_char = source_json.get("default_tab_char"); source.default_tab_size = source_json.get("default_tab_size"); source.auto_tab_char_and_size = source_json.get("auto_tab_char_and_size"); + source.tab_indents_line = source_json.get("tab_indents_line"); source.wrap_lines = source_json.get("wrap_lines"); diff --git a/src/config.h b/src/config.h index 7212836..60d318e 100644 --- a/src/config.h +++ b/src/config.h @@ -64,6 +64,7 @@ public: bool auto_tab_char_and_size; char default_tab_char; unsigned default_tab_size; + bool tab_indents_line; bool wrap_lines; bool highlight_current_line; bool show_line_numbers; diff --git a/src/files.h b/src/files.h index 906c44c..028e2e5 100644 --- a/src/files.h +++ b/src/files.h @@ -2,331 +2,342 @@ #define JUCI_FILES_H_ #include -#define JUCI_VERSION "1.1.3-3" - -const std::string configjson = -"{\n" -" \"version\": \""+std::string(JUCI_VERSION)+"\",\n" -" \"default_window_size\": {\n" -" \"width\": 800,\n" -" \"height\": 600\n" -" },\n" -" \"gtk_theme\": {\n" -" \"name_comment\": \"Use \\\"\\\" for default theme, At least these two exist on all systems: Adwaita, Raleigh\",\n" -" \"name\": \"\",\n" -" \"variant_comment\": \"Use \\\"\\\" for default variant, and \\\"dark\\\" for dark theme variant. Note that not all themes support dark variant, but for instance Adwaita does\",\n" -" \"variant\": \"\"\n" -" },\n" -" \"terminal\": {\n" -" \"history_size\": 1000,\n" -" \"font_comment\": \"Use \\\"\\\" to use source.font with slightly smaller size\",\n" -" \"font\": \"\"\n" -" },\n" -" \"source\": {\n" -" \"style_comment\": \"Use \\\"\\\" for default style, and for instance juci-dark or juci-dark-blue together with dark gtk_theme variant. Styles from normal gtksourceview install: classic, cobalt, kate, oblivion, solarized-dark, solarized-light, tango\",\n" -" \"style\": \"juci-light\",\n" -" \"font_comment\": \"Use \\\"\\\" for default font, and for instance \\\"Monospace 12\\\" to also set size\",\n" +#define JUCI_VERSION "1.1.3-4" + +const std::string default_config_file = R"RAW({ + "version": ")RAW"+std::string(JUCI_VERSION)+R"RAW(", + "default_window_size": { + "width": 800, + "height": 600 + }, + "gtk_theme": { + "name_comment": "Use \"\" for default theme, At least these two exist on all systems: Adwaita, Raleigh", + "name": "", + "variant_comment": "Use \"\" for default variant, and \"dark\" for dark theme variant. Note that not all themes support dark variant, but for instance Adwaita does", + "variant": "" + }, + "terminal": { + "history_size": 1000, + "font_comment": "Use \"\" to use source.font with slightly smaller size", + "font": "" + }, + "source": { + "style_comment": "Use \"\" for default style, and for instance juci-dark or juci-dark-blue together with dark gtk_theme variant. Styles from normal gtksourceview install: classic, cobalt, kate, oblivion, solarized-dark, solarized-light, tango", + "style": "juci-light", + "font_comment": "Use \"\" for default font, and for instance \"Monospace 12\" to also set size",)RAW" #ifdef __APPLE__ -" \"font\": \"Menlo 11\",\n" +R"RAW( + "font": "Menlo 11",)RAW" #else #ifdef _WIN32 -" \"font\": \"Consolas\",\n" +R"RAW( + "font": "Consolas",)RAW" #else -" \"font\": \"Monospace\",\n" +R"RAW( + "font": "Monospace",)RAW" #endif #endif -" \"cleanup_whitespace_characters_comment\": \"Remove trailing whitespace characters on save, and add trailing newline if missing\",\n" -" \"cleanup_whitespace_characters\": false,\n" -" \"show_whitespace_characters_comment\": \"Determines what kind of whitespaces should be drawn. Use comma-separated list of: space, tab, newline, nbsp, leading, text, trailing or all\",\n" -" \"show_whitespace_characters\": \"\",\n" -" \"show_map\": true,\n" -" \"map_font_size\": \"1\",\n" -" \"spellcheck_language_comment\": \"Use \\\"\\\" to set language from your locale settings\",\n" -" \"spellcheck_language\": \"en_US\",\n" -" \"auto_tab_char_and_size_comment\": \"Use false to always use default tab char and size\",\n" -" \"auto_tab_char_and_size\": true,\n" -" \"default_tab_char_comment\": \"Use \\\"\\t\\\" for regular tab\",\n" -" \"default_tab_char\": \" \",\n" -" \"default_tab_size\": 2,\n" -" \"wrap_lines\": false,\n" -" \"highlight_current_line\": true,\n" -" \"show_line_numbers\": true,\n" -" \"clang_types\": {\n" -" \"8\": \"def:function\",\n" -" \"21\": \"def:function\",\n" -" \"22\": \"def:identifier\",\n" -" \"24\": \"def:function\",\n" -" \"25\": \"def:function\",\n" -" \"43\": \"def:type\",\n" -" \"44\": \"def:type\",\n" -" \"45\": \"def:type\",\n" -" \"46\": \"def:identifier\",\n" -" \"109\": \"def:string\",\n" -" \"702\": \"def:statement\",\n" -" \"705\": \"def:comment\"\n" -" },\n" -" \"clang_format_style_comment\": \"IndentWidth, AccessModifierOffset and UseTab are set automatically. See http://clang.llvm.org/docs/ClangFormatStyleOptions.html\",\n" -" \"clang_format_style\": \"ColumnLimit: 0, MaxEmptyLinesToKeep: 2\"\n" -" },\n" -" \"keybindings\": {\n" -" \"preferences\": \"comma\",\n" -" \"quit\": \"q\",\n" -" \"new_file\": \"n\",\n" -" \"new_folder\": \"n\",\n" -" \"open_file\": \"o\",\n" -" \"open_folder\": \"o\",\n" -" \"save\": \"s\",\n" -" \"save_as\": \"s\",\n" -" \"print\": \"p\",\n" -" \"edit_undo\": \"z\",\n" -" \"edit_redo\": \"z\",\n" -" \"edit_cut\": \"x\",\n" -" \"edit_copy\": \"c\",\n" -" \"edit_paste\": \"v\",\n" -" \"edit_find\": \"f\",\n" -" \"edit_set_tab\": \"\",\n" -" \"source_spellcheck\": \"\",\n" -" \"source_spellcheck_clear\": \"\",\n" -" \"source_spellcheck_next_error\": \"e\",\n" -" \"source_indentation_set_buffer_tab\": \"\",\n" -" \"source_indentation_auto_indent_buffer\": \"i\",\n" -" \"source_goto_line\": \"g\",\n" -" \"source_center_cursor\": \"l\",\n" -" \"source_find_documentation\": \"d\",\n" -" \"source_goto_declaration\": \"d\",\n" -" \"source_goto_implementation\": \"i\",\n" -" \"source_goto_usage\": \"u\",\n" -" \"source_goto_method\": \"m\",\n" -" \"source_rename\": \"r\",\n" -" \"source_goto_next_diagnostic\": \"e\",\n" -" \"source_apply_fix_its\": \"space\",\n" -" \"project_set_run_arguments\": \"\",\n" -" \"compile_and_run\": \"Return\",\n" -" \"compile\": \"Return\",\n" -" \"run_command\": \"Return\",\n" -" \"kill_last_running\": \"Escape\",\n" -" \"force_kill_last_running\": \"Escape\",\n" -" \"debug_set_run_arguments\": \"\",\n" -" \"debug_start_continue\": \"y\",\n" -" \"debug_stop\": \"y\",\n" -" \"debug_kill\": \"k\",\n" -" \"debug_step_over\": \"j\",\n" -" \"debug_step_into\": \"t\",\n" -" \"debug_step_out\": \"t\",\n" -" \"debug_backtrace\": \"j\",\n" -" \"debug_show_variables\": \"b\",\n" -" \"debug_run_command\": \"Return\",\n" -" \"debug_toggle_breakpoint\": \"b\",\n" -" \"debug_goto_stop\": \"l\",\n" +R"RAW( + "cleanup_whitespace_characters_comment": "Remove trailing whitespace characters on save, and add trailing newline if missing", + "cleanup_whitespace_characters": false, + "show_whitespace_characters_comment": "Determines what kind of whitespaces should be drawn. Use comma-separated list of: space, tab, newline, nbsp, leading, text, trailing or all", + "show_whitespace_characters": "", + "show_map": true, + "map_font_size": "1", + "spellcheck_language_comment": "Use \"\" to set language from your locale settings", + "spellcheck_language": "en_US", + "auto_tab_char_and_size_comment": "Use false to always use default tab char and size", + "auto_tab_char_and_size": true, + "default_tab_char_comment": "Use \"\t\" for regular tab", + "default_tab_char": " ", + "default_tab_size": 2, + "tab_indents_line": true, + "wrap_lines": false, + "highlight_current_line": true, + "show_line_numbers": true, + "clang_types": { + "8": "def:function", + "21": "def:function", + "22": "def:identifier", + "24": "def:function", + "25": "def:function", + "43": "def:type", + "44": "def:type", + "45": "def:type", + "46": "def:identifier", + "109": "def:string", + "702": "def:statement", + "705": "def:comment" + }, + "clang_format_style_comment": "IndentWidth, AccessModifierOffset and UseTab are set automatically. See http://clang.llvm.org/docs/ClangFormatStyleOptions.html", + "clang_format_style": "ColumnLimit: 0, MaxEmptyLinesToKeep: 2" + }, + "keybindings": { + "preferences": "comma", + "quit": "q", + "new_file": "n", + "new_folder": "n", + "open_file": "o", + "open_folder": "o", + "save": "s", + "save_as": "s", + "print": "p", + "edit_undo": "z", + "edit_redo": "z", + "edit_cut": "x", + "edit_copy": "c", + "edit_paste": "v", + "edit_find": "f", + "edit_set_tab": "", + "source_spellcheck": "", + "source_spellcheck_clear": "", + "source_spellcheck_next_error": "e", + "source_indentation_set_buffer_tab": "", + "source_indentation_auto_indent_buffer": "i", + "source_goto_line": "g", + "source_center_cursor": "l", + "source_find_documentation": "d", + "source_goto_declaration": "d", + "source_goto_implementation": "i", + "source_goto_usage": "u", + "source_goto_method": "m", + "source_rename": "r", + "source_goto_next_diagnostic": "e", + "source_apply_fix_its": "space", + "project_set_run_arguments": "", + "compile_and_run": "Return", + "compile": "Return", + "run_command": "Return", + "kill_last_running": "Escape", + "force_kill_last_running": "Escape", + "debug_set_run_arguments": "", + "debug_start_continue": "y", + "debug_stop": "y", + "debug_kill": "k", + "debug_step_over": "j", + "debug_step_into": "t", + "debug_step_out": "t", + "debug_backtrace": "j", + "debug_show_variables": "b", + "debug_run_command": "Return", + "debug_toggle_breakpoint": "b", + "debug_goto_stop": "l",)RAW" #ifdef __linux -" \"next_tab\": \"Tab\",\n" -" \"previous_tab\": \"Tab\",\n" +R"RAW( + "next_tab": "Tab", + "previous_tab": "Tab",)RAW" #else -" \"next_tab\": \"Right\",\n" -" \"previous_tab\": \"Left\",\n" +R"RAW( + "next_tab": "Right", + "previous_tab": "Left",)RAW" #endif -" \"close_tab\": \"w\"\n" -" },\n" -" \"project\": {\n" -" \"default_build_path_comment\": \"Use to insert the project top level directory name\",\n" -" \"default_build_path\": \"./build\",\n" -" \"debug_build_path_comment\": \"Use to insert the project top level directory name, and to insert your default_build_path setting.\",\n" -" \"debug_build_path\": \"/debug\",\n" +R"RAW( + "close_tab": "w" + }, + "project": { + "default_build_path_comment": "Use to insert the project top level directory name", + "default_build_path": "./build", + "debug_build_path_comment": "Use to insert the project top level directory name, and to insert your default_build_path setting.", + "debug_build_path": "/debug",)RAW" #ifdef _WIN32 -" \"cmake_command\": \"cmake -G\\\"MSYS Makefiles\\\"\",\n" +R"RAW( + "cmake_command": "cmake -G\"MSYS Makefiles\"",)RAW" #else -" \"cmake_command\": \"cmake\",\n" +R"RAW( + "cmake_command": "cmake",)RAW" #endif -" \"make_command\": \"cmake --build .\",\n" -" \"save_on_compile_or_run\": true,\n" -" \"clear_terminal_on_compile\": true\n" -" },\n" -" \"documentation_searches\": {\n" -" \"clang\": {\n" -" \"separator\": \"::\",\n" -" \"queries\": {\n" -" \"@empty\": \"https://www.google.com/search?btnI&q=c%2B%2B+\",\n" -" \"std\": \"https://www.google.com/search?btnI&q=site:http://www.cplusplus.com/reference/+\",\n" -" \"boost\": \"https://www.google.com/search?btnI&q=site:http://www.boost.org/doc/libs/1_59_0/+\",\n" -" \"Gtk\": \"https://www.google.com/search?btnI&q=site:https://developer.gnome.org/gtkmm/stable/+\",\n" -" \"@any\": \"https://www.google.com/search?btnI&q=\"\n" -" }\n" -" }\n" -" }\n" -"}\n"; - -const std::string juci_light_style = -"\n" -"\n" -"\n" -" juCi++ team\n" -" <_description>Default juCi++ style\n" -"\n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -" \n" -"\n" -"