X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=92c95b0d1e5736981178ae0947990edd840e507f;hb=027563eec2d2a1b81391b221f9ca40d823713235;hp=307fd3f7d8828c7b1c0f43ee0387fa41bf7ac26d;hpb=39e79d8602920eefe36e898c9f415afb979521b2;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 307fd3f7d8..92c95b0d1e 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -21,52 +21,38 @@ #include "LyXRC.h" -#include "debug.h" +#include "Color.h" #include "Converter.h" #include "Format.h" -#include "gettext.h" #include "Session.h" -#include "LColor.h" #include "Lexer.h" -#include "LyXFont.h" +#include "FontEnums.h" #include "Mover.h" #include "graphics/GraphicsTypes.h" #include "support/convert.h" +#include "support/debug.h" #include "support/environment.h" #include "support/filetools.h" +#include "support/gettext.h" #include "support/lstrings.h" #include "support/os.h" #include "support/userinfo.h" +using namespace std; +using namespace lyx::support; namespace lyx { namespace os = support::os; -using support::ascii_lowercase; -using support::bformat; -using support::expandPath; -using support::FileName; -using support::getEnv; -using support::libFileSearch; -using support::token; - -using std::cout; -using std::endl; - -using std::ios; -using std::ofstream; -using std::ostream; -using std::string; - - namespace { // when adding something to this array keep it sorted! keyword_item lyxrcTags[] = { { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND }, + { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION }, { "\\alternate_language", LyXRC::RC_ALT_LANG }, { "\\auto_number", LyXRC::RC_AUTO_NUMBER }, { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE }, @@ -77,6 +63,15 @@ keyword_item lyxrcTags[] = { { "\\bind_file", LyXRC::RC_BINDFILE }, { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES }, { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND }, + { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT }, + { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY }, + { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS }, + { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH }, + { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT }, + { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE }, + { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY }, + { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH }, + { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT }, { "\\converter", LyXRC::RC_CONVERTER }, { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE }, { "\\copier", LyXRC::RC_COPIER }, @@ -84,14 +79,22 @@ keyword_item lyxrcTags[] = { { "\\custom_export_command", LyXRC::RC_CUSTOM_EXPORT_COMMAND }, { "\\custom_export_format", LyXRC::RC_CUSTOM_EXPORT_FORMAT }, { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT }, + { "\\def_file", LyXRC::RC_DEFFILE }, { "\\default_language", LyXRC::RC_DEFAULT_LANGUAGE }, { "\\default_papersize", LyXRC::RC_DEFAULT_PAPERSIZE }, { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN }, { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS }, { "\\document_path", LyXRC::RC_DOCUMENTPATH }, { "\\escape_chars", LyXRC::RC_ESC_CHARS }, + { "\\example_path", LyXRC::RC_EXAMPLEPATH }, { "\\font_encoding", LyXRC::RC_FONT_ENCODING }, { "\\format", LyXRC::RC_FORMAT }, + { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT }, + { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR }, + { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR }, + { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS }, + { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH }, + { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS }, { "\\index_command", LyXRC::RC_INDEX_COMMAND }, { "\\input", LyXRC::RC_INPUT }, { "\\kbmap", LyXRC::RC_KBMAP }, @@ -107,9 +110,12 @@ keyword_item lyxrcTags[] = { { "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE }, { "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL }, { "\\load_session", LyXRC::RC_LOADSESSION }, + { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE }, { "\\make_backup", LyXRC::RC_MAKE_BACKUP }, { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE }, + { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED }, { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES }, + { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS }, { "\\path_prefix", LyXRC::RC_PATH_PREFIX }, { "\\personal_dictionary", LyXRC::RC_PERS_DICT }, { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN }, @@ -145,13 +151,11 @@ keyword_item lyxrcTags[] = { { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES }, { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER }, { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY }, - { "\\screen_geometry_height", LyXRC::RC_SCREEN_GEOMETRY_HEIGHT }, - { "\\screen_geometry_width", LyXRC::RC_SCREEN_GEOMETRY_WIDTH }, - { "\\screen_geometry_xysaved", LyXRC::RC_SCREEN_GEOMETRY_XYSAVED }, { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM }, { "\\serverpipe", LyXRC::RC_SERVERPIPE }, { "\\set_color", LyXRC::RC_SET_COLOR }, { "\\show_banner", LyXRC::RC_SHOW_BANNER }, + { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS }, { "\\spell_command", LyXRC::RC_SPELL_COMMAND }, { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH }, { "\\template_path", LyXRC::RC_TEMPLATEPATH }, @@ -159,21 +163,25 @@ keyword_item lyxrcTags[] = { { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS }, { "\\ui_file", LyXRC::RC_UIFILE }, { "\\use_alt_language", LyXRC::RC_USE_ALT_LANG }, + { "\\use_bundled_format", LyXRC::RC_USE_BUNDLED_FORMAT }, { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE }, { "\\use_escape_chars", LyXRC::RC_USE_ESC_CHARS }, { "\\use_input_encoding", LyXRC::RC_USE_INP_ENC }, { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS }, { "\\use_personal_dictionary", LyXRC::RC_USE_PERS_DICT }, + { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE }, // compatibility with versions older than 1.4.0 only { "\\use_pspell", LyXRC::RC_USE_SPELL_LIB }, { "\\use_spell_lib", LyXRC::RC_USE_SPELL_LIB }, // compatibility with versions older than 1.4.0 only { "\\use_tempdir", LyXRC::RC_USETEMPDIR }, + { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP }, { "\\user_email", LyXRC::RC_USER_EMAIL }, { "\\user_name", LyXRC::RC_USER_NAME }, { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION }, // compatibility with versions older than 1.4.0 only - { "\\viewer" ,LyXRC::RC_VIEWER} + { "\\viewer", LyXRC::RC_VIEWER}, + { "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR} }; const int lyxrcCount = sizeof(lyxrcTags) / sizeof(keyword_item); @@ -189,6 +197,7 @@ LyXRC::LyXRC() void LyXRC::setDefaults() { bind_file = "cua"; + def_file = "default"; ui_file = "default"; // Get printer from the environment. If fail, use default "", // assuming that everything is set up correctly. @@ -218,20 +227,18 @@ void LyXRC::setDefaults() { dpi = 75; // Because a screen typically is wider than a piece of paper: zoom = 150; - geometry_width = 0; - geometry_height = 0; - geometry_xysaved = true; + allow_geometry_session = true; // Default LaTeX font size: - font_sizes[LyXFont::SIZE_TINY] = "5.0"; - font_sizes[LyXFont::SIZE_SCRIPT] = "7.0"; - font_sizes[LyXFont::SIZE_FOOTNOTE] = "8.0"; - font_sizes[LyXFont::SIZE_SMALL] = "9.0"; - font_sizes[LyXFont::SIZE_NORMAL] = "10.0"; - font_sizes[LyXFont::SIZE_LARGE] = "12.0"; - font_sizes[LyXFont::SIZE_LARGER] = "14.4"; - font_sizes[LyXFont::SIZE_LARGEST] = "17.26"; - font_sizes[LyXFont::SIZE_HUGE] = "20.74"; - font_sizes[LyXFont::SIZE_HUGER] = "24.88"; + font_sizes[FONT_SIZE_TINY] = "5.0"; + font_sizes[FONT_SIZE_SCRIPT] = "7.0"; + font_sizes[FONT_SIZE_FOOTNOTE] = "8.0"; + font_sizes[FONT_SIZE_SMALL] = "9.0"; + font_sizes[FONT_SIZE_NORMAL] = "10.0"; + font_sizes[FONT_SIZE_LARGE] = "12.0"; + font_sizes[FONT_SIZE_LARGER] = "14.4"; + font_sizes[FONT_SIZE_LARGEST] = "17.26"; + font_sizes[FONT_SIZE_HUGE] = "20.74"; + font_sizes[FONT_SIZE_HUGER] = "24.88"; use_scalable_fonts = true; roman_font_name = ""; sans_font_name = ""; @@ -240,6 +247,7 @@ void LyXRC::setDefaults() { auto_region_delete = true; auto_reset_options = false; plaintext_linelen = 65; + mouse_wheel_speed = 1.0; num_lastfiles = maxlastfiles; check_lastfiles = true; use_lastfilepos = true; @@ -256,7 +264,8 @@ void LyXRC::setDefaults() { isp_use_pers_dict = false; isp_use_esc_chars = false; use_kbmap = false; - rtl_support = false; + rtl_support = true; + visual_cursor = false; auto_number = true; mark_foreign_language = true; language_auto_begin = true; @@ -266,23 +275,49 @@ void LyXRC::setDefaults() { language_package = "\\usepackage{babel}"; language_command_begin = "\\selectlanguage{$$lang}"; language_command_local = "\\foreignlanguage{$$lang}{"; + sort_layouts = false; + group_layouts = true; default_language = "english"; show_banner = true; windows_style_tex_paths = false; tex_allows_spaces = false; date_insert_format = "%x"; cursor_follows_scrollbar = false; + macro_edit_style = MACRO_EDIT_INLINE_BOX; dialogs_iconify_with_main = false; label_init_length = 3; preview = PREVIEW_OFF; preview_hashed_labels = false; preview_scale_factor = "0.9"; - use_converter_cache = false; + use_converter_cache = true; + use_tooltip = true; + use_pixmap_cache = false; converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months - user_name = to_utf8(support::user_name()); - user_email = to_utf8(support::user_email()); +#ifdef __APPLE_CC__ + open_buffers_in_tabs = false; +#else + open_buffers_in_tabs = true; +#endif + use_bundled_format = false; + + // Fullscreen settings + full_screen_limit = false; + full_screen_toolbars = true; + full_screen_tabbar = true; + full_screen_scrollbar = true; + full_screen_width = 700; + + completion_cursor_text = true; + completion_popup_math = true; + completion_popup_text = false; + completion_popup_delay = 2.0; + completion_popup_after_complete = true; + completion_inline_math = true; + completion_inline_text = false; + completion_inline_dots = -1; + completion_inline_delay = 0.2; } @@ -310,13 +345,13 @@ int LyXRC::read(FileName const & filename) lexrc.setFile(filename); if (!lexrc.isOK()) return -2; - LYXERR(Debug::LYXRC) << "Reading '" << filename << "'..." << endl; + LYXERR(Debug::LYXRC, "Reading '" << filename << "'..."); return read(lexrc); } -int LyXRC::read(std::istream & is) +int LyXRC::read(istream & is) { Lexer lexrc(lyxrcTags, lyxrcCount); if (lyxerr.debugging(Debug::PARSER)) @@ -325,7 +360,7 @@ int LyXRC::read(std::istream & is) lexrc.setStream(is); if (!lexrc.isOK()) return -2; - LYXERR(Debug::LYXRC) << "Reading istream..." << endl; + LYXERR(Debug::LYXRC, "Reading istream..."); return read(lexrc); } @@ -370,6 +405,12 @@ int LyXRC::read(Lexer & lexrc) } break; + case RC_DEFFILE: + if (lexrc.next()) { + def_file = os::internal_path(lexrc.getString()); + } + break; + case RC_UIFILE: if (lexrc.next()) { ui_file = os::internal_path(lexrc.getString()); @@ -629,63 +670,51 @@ int LyXRC::read(Lexer & lexrc) } break; - case RC_SCREEN_GEOMETRY_HEIGHT: + case RC_GEOMETRY_SESSION: if (lexrc.next()) { - geometry_height = lexrc.getInteger(); - } - break; - - case RC_SCREEN_GEOMETRY_WIDTH: - if (lexrc.next()) { - geometry_width = lexrc.getInteger(); - } - break; - - case RC_SCREEN_GEOMETRY_XYSAVED: - if (lexrc.next()) { - geometry_xysaved = lexrc.getBool(); + allow_geometry_session = lexrc.getBool(); } break; case RC_SCREEN_FONT_SIZES: if (lexrc.next()) { - font_sizes[LyXFont::SIZE_TINY] = + font_sizes[FONT_SIZE_TINY] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_SCRIPT] = + font_sizes[FONT_SIZE_SCRIPT] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_FOOTNOTE] = + font_sizes[FONT_SIZE_FOOTNOTE] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_SMALL] = + font_sizes[FONT_SIZE_SMALL] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_NORMAL] = + font_sizes[FONT_SIZE_NORMAL] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_LARGE] = + font_sizes[FONT_SIZE_LARGE] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_LARGER] = + font_sizes[FONT_SIZE_LARGER] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_LARGEST] = + font_sizes[FONT_SIZE_LARGEST] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_HUGE] = + font_sizes[FONT_SIZE_HUGE] = lexrc.getString(); } if (lexrc.next()) { - font_sizes[LyXFont::SIZE_HUGER] = + font_sizes[FONT_SIZE_HUGER] = lexrc.getString(); } break; @@ -709,6 +738,13 @@ int LyXRC::read(Lexer & lexrc) } break; + case RC_EXAMPLEPATH: + if (lexrc.next()) { + example_path = os::internal_path(lexrc.getString()); + example_path = expandPath(example_path); + } + break; + case RC_TEMPLATEPATH: if (lexrc.next()) { template_path = os::internal_path(lexrc.getString()); @@ -741,6 +777,66 @@ int LyXRC::read(Lexer & lexrc) } break; + case RC_MOUSE_WHEEL_SPEED: + if (lexrc.next()) { + mouse_wheel_speed = lexrc.getFloat(); + } + break; + + case RC_COMPLETION_INLINE_DELAY: + if (lexrc.next()) { + completion_inline_delay = lexrc.getFloat(); + } + break; + + case RC_COMPLETION_INLINE_MATH: + if (lexrc.next()) { + completion_inline_math = lexrc.getBool(); + } + break; + + case RC_COMPLETION_INLINE_TEXT: + if (lexrc.next()) { + completion_inline_text = lexrc.getBool(); + } + break; + + case RC_COMPLETION_INLINE_DOTS: + if (lexrc.next()) { + completion_inline_dots = lexrc.getInteger(); + } + break; + + case RC_COMPLETION_POPUP_DELAY: + if (lexrc.next()) { + completion_popup_delay = lexrc.getFloat(); + } + break; + + case RC_COMPLETION_POPUP_MATH: + if (lexrc.next()) { + completion_popup_math = lexrc.getBool(); + } + break; + + case RC_COMPLETION_POPUP_TEXT: + if (lexrc.next()) { + completion_popup_text = lexrc.getBool(); + } + break; + + case RC_COMPLETION_CURSOR_TEXT: + if (lexrc.next()) { + completion_cursor_text = lexrc.getBool(); + } + break; + + case RC_COMPLETION_POPUP_AFTER_COMPLETE: + if (lexrc.next()) { + completion_popup_after_complete = lexrc.getBool(); + } + break; + case RC_NUMLASTFILES: if (lexrc.next()) { num_lastfiles = lexrc.getInteger(); @@ -812,11 +908,11 @@ int LyXRC::read(Lexer & lexrc) break; } - LColor::color const col = + ColorCode const col = lcolor.getFromLyXName(lyx_name); - if (col == LColor::none || - col == LColor::inherit || - col == LColor::ignore) + if (col == Color_none || + col == Color_inherit || + col == Color_ignore) break; if (!lcolor.setColor(col, x11_name)) { @@ -846,6 +942,16 @@ int LyXRC::read(Lexer & lexrc) } break; + case RC_MACRO_EDIT_STYLE: + if (lexrc.next()) { + switch (lexrc.getInteger()) { + case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break; + case 1: macro_edit_style = MACRO_EDIT_INLINE; break; + case 2: macro_edit_style = MACRO_EDIT_LIST; break; + } + } + break; + case RC_DIALOGS_ICONIFY_WITH_MAIN: if (lexrc.next()) { dialogs_iconify_with_main = lexrc.getBool(); @@ -893,6 +999,16 @@ int LyXRC::read(Lexer & lexrc) isp_use_pers_dict = lexrc.getBool(); } break; + case RC_USE_TOOLTIP: + if (lexrc.next()) { + use_tooltip = lexrc.getBool(); + } + break; + case RC_USE_PIXMAP_CACHE: + if (lexrc.next()) { + use_pixmap_cache = lexrc.getBool(); + } + break; case RC_USE_ESC_CHARS: if (lexrc.next()) { isp_use_esc_chars = lexrc.getBool(); @@ -974,6 +1090,11 @@ int LyXRC::read(Lexer & lexrc) rtl_support = lexrc.getBool(); } break; + case RC_VISUAL_CURSOR: + if (lexrc.next()) { + visual_cursor = lexrc.getBool(); + } + break; case RC_AUTO_NUMBER: if (lexrc.next()) { auto_number = lexrc.getBool(); @@ -1067,7 +1188,7 @@ int LyXRC::read(Lexer & lexrc) int flgs = Format::none; while (!flags.empty()) { string flag; - flags = support::split(flags, flag, ','); + flags = split(flags, flag, ','); if (flag == "document") flgs |= Format::document; else if (flag == "vector") @@ -1086,7 +1207,7 @@ int LyXRC::read(Lexer & lexrc) } } else { formats.add(format, extension, prettyname, - shortcut, viewer, editor, flgs); + shortcut, viewer, editor, flgs); } break; } @@ -1163,6 +1284,43 @@ int LyXRC::read(Lexer & lexrc) convert(lexrc.getString()); break; + case RC_SORT_LAYOUTS: + if (lexrc.next()) + sort_layouts = lexrc.getBool(); + break; + case RC_GROUP_LAYOUTS: + if (lexrc.next()) + group_layouts = lexrc.getBool(); + break; + case RC_FULL_SCREEN_LIMIT: + if (lexrc.next()) + full_screen_limit = lexrc.getBool(); + break; + case RC_FULL_SCREEN_TOOLBARS: + if (lexrc.next()) + full_screen_toolbars = lexrc.getBool(); + break; + case RC_FULL_SCREEN_SCROLLBAR: + if (lexrc.next()) + full_screen_scrollbar = lexrc.getBool(); + break; + case RC_FULL_SCREEN_TABBAR: + if (lexrc.next()) + full_screen_tabbar = lexrc.getBool(); + break; + case RC_FULL_SCREEN_WIDTH: + if (lexrc.next()) + full_screen_width = lexrc.getInteger(); + break; + case RC_OPEN_BUFFERS_IN_TABS: + if (lexrc.next()) + open_buffers_in_tabs = lexrc.getBool(); + break; + case RC_USE_BUNDLED_FORMAT: + if (lexrc.next()) + use_bundled_format = lexrc.getBool(); + break; + case RC_LAST: break; // this is just a dummy } } @@ -1194,7 +1352,7 @@ void LyXRC::print() const class SameMover { public: - typedef std::pair Data; + typedef pair Data; SameMover(Data const & comparison) : comparison_(comparison) {} @@ -1210,27 +1368,35 @@ private: }; -void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const +void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const { - os << "### This file is part of\n" - << "### ========================================================\n" - << "### LyX, The Document Processor\n" - << "###\n" - << "### Copyright 1995 Matthias Ettrich\n" - << "### Copyright 1995-2001 The LyX Team.\n" - << "###\n" - << "### ========================================================\n" - << "\n" - << "# This file is written by LyX, if you want to make your own\n" - << "# modifications you should do them from inside LyX and save\n" - << "\n"; + LyXRCTags tag = RC_LAST; + + if (!name.empty()) { + for (int i = 0; i != lyxrcCount; ++i) + if ("\\" + name == lyxrcTags[i].tag) + tag = static_cast(lyxrcTags[i].code); + } + + if (tag == RC_LAST) + os << "### This file is part of\n" + << "### ========================================================\n" + << "### LyX, The Document Processor\n" + << "###\n" + << "### Copyright 1995 Matthias Ettrich\n" + << "### Copyright 1995-2007 The LyX Team.\n" + << "###\n" + << "### ========================================================\n" + << "\n" + << "# This file is written by LyX, if you want to make your own\n" + << "# modifications you should do them from inside LyX and save\n" + << "\n"; // Why the switch you might ask. It is a trick to ensure that all // the elements in the LyXRCTags enum is handled. As you can see // there are no breaks at all. So it is just a huge fall-through. // The nice thing is that we will get a warning from the compiler // if we forget an element. - LyXRCTags tag = RC_LAST; switch (tag) { case RC_LAST: case RC_INPUT: @@ -1241,13 +1407,24 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const string const path = os::external_path(bind_file); os << "\\bind_file \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; + + case RC_DEFFILE: + if (ignore_system_lyxrc || + def_file != system_lyxrc.def_file) { + string const path = os::external_path(def_file); + os << "\\def_file \"" << path << "\"\n"; + } + if (tag != RC_LAST) + break; + // // Misc Section // os << "\n#\n" << "# MISC SECTION ######################################\n" << "#\n\n"; - // bind files are not done here. case RC_PATH_PREFIX: @@ -1255,13 +1432,16 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const path_prefix != system_lyxrc.path_prefix) { os << "\\path_prefix \"" << path_prefix << "\"\n"; } - + if (tag != RC_LAST) + break; case RC_UIFILE: if (ignore_system_lyxrc || ui_file != system_lyxrc.ui_file) { string const path = os::external_path(ui_file); os << "\\ui_file \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_AUTOREGIONDELETE: if (ignore_system_lyxrc || auto_region_delete != system_lyxrc.auto_region_delete) { @@ -1270,6 +1450,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << "\\auto_region_delete " << convert(auto_region_delete) << '\n'; } + if (tag != RC_LAST) + break; case RC_AUTORESET_OPTIONS: if (ignore_system_lyxrc || auto_reset_options != system_lyxrc.auto_reset_options) { @@ -1279,22 +1461,44 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << convert(auto_reset_options) << '\n'; } + if (tag != RC_LAST) + break; case RC_AUTOSAVE: if (ignore_system_lyxrc || autosave != system_lyxrc.autosave) { os << "# The time interval between auto-saves in seconds.\n" << "\\autosave " << autosave << '\n'; } + if (tag != RC_LAST) + break; case RC_DISPLAY_GRAPHICS: if (ignore_system_lyxrc || display_graphics != system_lyxrc.display_graphics) { os << "# Display graphics within LyX\n" << "# monochrome|grayscale|color|none\n" << "\\display_graphics " - << graphics::displayTranslator().find(display_graphics) + << graphics::displayTranslator().find( + graphics::DisplayType(display_graphics)) << '\n'; } - + if (tag != RC_LAST) + break; + case RC_SORT_LAYOUTS: + if (ignore_system_lyxrc || + sort_layouts != system_lyxrc.sort_layouts) { + os << "# Sort layouts alphabetically.\n" + << "\\sort_layouts " << convert(sort_layouts) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_GROUP_LAYOUTS: + if (ignore_system_lyxrc || + group_layouts != system_lyxrc.group_layouts) { + os << "# Group layouts by their category.\n" + << "\\group_layouts " << convert(group_layouts) << '\n'; + } + if (tag != RC_LAST) + break; case RC_VIEWDVI_PAPEROPTION: if (ignore_system_lyxrc || view_dvi_paper_option @@ -1304,6 +1508,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << "\\view_dvi_paper_option \"" << view_dvi_paper_option << "\"\n"; } + if (tag != RC_LAST) + break; case RC_DEFAULT_PAPERSIZE: if (ignore_system_lyxrc || default_papersize != system_lyxrc.default_papersize) { @@ -1332,79 +1538,109 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const } os << "\"\n"; } + if (tag != RC_LAST) + break; case RC_CHKTEX_COMMAND: if (ignore_system_lyxrc || chktex_command != system_lyxrc.chktex_command) { os << "\\chktex_command \"" << chktex_command << "\"\n"; } + if (tag != RC_LAST) + break; case RC_BIBTEX_COMMAND: if (ignore_system_lyxrc || bibtex_command != system_lyxrc.bibtex_command) { os << "\\bibtex_command \"" << bibtex_command << "\"\n"; } + if (tag != RC_LAST) + break; case RC_INDEX_COMMAND: if (ignore_system_lyxrc || index_command != system_lyxrc.index_command) { os << "\\index_command \"" << index_command << "\"\n"; } + if (tag != RC_LAST) + break; case RC_TEX_EXPECTS_WINDOWS_PATHS: if (ignore_system_lyxrc || windows_style_tex_paths != system_lyxrc.windows_style_tex_paths) { os << "\\tex_expects_windows_paths " << convert(windows_style_tex_paths) << '\n'; } + if (tag != RC_LAST) + break; case RC_TEX_ALLOWS_SPACES: if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) { os << "\\tex_allows_spaces " << convert(tex_allows_spaces) << '\n'; } + if (tag != RC_LAST) + break; case RC_KBMAP: if (ignore_system_lyxrc || use_kbmap != system_lyxrc.use_kbmap) { os << "\\kbmap " << convert(use_kbmap) << '\n'; } + if (tag != RC_LAST) + break; case RC_KBMAP_PRIMARY: if (ignore_system_lyxrc || primary_kbmap != system_lyxrc.primary_kbmap) { string const path = os::external_path(primary_kbmap); os << "\\kbmap_primary \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_KBMAP_SECONDARY: if (ignore_system_lyxrc || secondary_kbmap != system_lyxrc.secondary_kbmap) { string const path = os::external_path(secondary_kbmap); os << "\\kbmap_secondary \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_SERVERPIPE: if (ignore_system_lyxrc || lyxpipes != system_lyxrc.lyxpipes) { string const path = os::external_path(lyxpipes); os << "\\serverpipe \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_DATE_INSERT_FORMAT: if (ignore_system_lyxrc || date_insert_format != system_lyxrc.date_insert_format) { os << "\\date_insert_format \"" << date_insert_format << "\"\n"; } + if (tag != RC_LAST) + break; case RC_LABEL_INIT_LENGTH: if (ignore_system_lyxrc || label_init_length != system_lyxrc.label_init_length) { os << "\\label_init_length " << label_init_length << '\n'; } + if (tag != RC_LAST) + break; case RC_USER_NAME: os << "\\user_name \"" << user_name << "\"\n"; + if (tag != RC_LAST) + break; case RC_USER_EMAIL: os << "\\user_email \"" << user_email << "\"\n"; + if (tag != RC_LAST) + break; case RC_SHOW_BANNER: if (ignore_system_lyxrc || show_banner != system_lyxrc.show_banner) { os << "\\show_banner " << convert(show_banner) << '\n'; } + if (tag != RC_LAST) + break; case RC_PREVIEW: if (ignore_system_lyxrc || @@ -1423,6 +1659,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const } os << "\\preview " << status << '\n'; } + if (tag != RC_LAST) + break; case RC_PREVIEW_HASHED_LABELS: if (ignore_system_lyxrc || @@ -1431,6 +1669,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\preview_hashed_labels " << convert(preview_hashed_labels) << '\n'; } + if (tag != RC_LAST) + break; case RC_PREVIEW_SCALE_FACTOR: if (ignore_system_lyxrc || @@ -1438,6 +1678,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\preview_scale_factor " << preview_scale_factor << '\n'; } + if (tag != RC_LAST) + break; case RC_USE_CONVERTER_CACHE: if (ignore_system_lyxrc || @@ -1445,6 +1687,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\use_converter_cache " << convert(use_converter_cache) << '\n'; } + if (tag != RC_LAST) + break; case RC_CONVERTER_CACHE_MAXAGE: if (ignore_system_lyxrc || @@ -1452,6 +1696,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\converter_cache_maxage " << converter_cache_maxage << '\n'; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# SCREEN & FONTS SECTION ############################\n" @@ -1462,29 +1708,23 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const dpi != system_lyxrc.dpi) { os << "\\screen_dpi " << dpi << '\n'; } + if (tag != RC_LAST) + break; case RC_SCREEN_ZOOM: if (ignore_system_lyxrc || zoom != system_lyxrc.zoom) { os << "\\screen_zoom " << zoom << '\n'; } - case RC_SCREEN_GEOMETRY_HEIGHT: - if (ignore_system_lyxrc || - geometry_height != system_lyxrc.geometry_height) { - os << "\\screen_geometry_height " << geometry_height - << '\n'; - } - case RC_SCREEN_GEOMETRY_WIDTH: - if (ignore_system_lyxrc || - geometry_width != system_lyxrc.geometry_width) { - os << "\\screen_geometry_width " << geometry_width - << '\n'; - } - case RC_SCREEN_GEOMETRY_XYSAVED: + if (tag != RC_LAST) + break; + case RC_GEOMETRY_SESSION: if (ignore_system_lyxrc || - geometry_xysaved != system_lyxrc.geometry_xysaved) { - os << "\\screen_geometry_xysaved " << convert(geometry_xysaved) + allow_geometry_session != system_lyxrc.allow_geometry_session) { + os << "\\allow_geometry_session " << convert(allow_geometry_session) << '\n'; } + if (tag != RC_LAST) + break; case RC_CURSOR_FOLLOWS_SCROLLBAR: if (ignore_system_lyxrc || cursor_follows_scrollbar @@ -1492,6 +1732,21 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\cursor_follows_scrollbar " << convert(cursor_follows_scrollbar) << '\n'; } + if (tag != RC_LAST) + break; + case RC_MACRO_EDIT_STYLE: + if (ignore_system_lyxrc || + macro_edit_style + != system_lyxrc.macro_edit_style) { + os << "\\macro_edit_style "; + switch (macro_edit_style) { + case MACRO_EDIT_INLINE_BOX: os << "0\n"; break; + case MACRO_EDIT_INLINE: os << "1\n"; break; + case MACRO_EDIT_LIST: os << "2\n"; break; + } + } + if (tag != RC_LAST) + break; case RC_DIALOGS_ICONIFY_WITH_MAIN: if (ignore_system_lyxrc || dialogs_iconify_with_main @@ -1499,42 +1754,56 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\dialogs_iconify_with_main " << convert(dialogs_iconify_with_main) << '\n'; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_ROMAN: if (ignore_system_lyxrc || roman_font_name != system_lyxrc.roman_font_name) { os << "\\screen_font_roman \"" << roman_font_name << "\"\n"; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_ROMAN_FOUNDRY: if (ignore_system_lyxrc || roman_font_foundry != system_lyxrc.roman_font_foundry) { os << "\\screen_font_roman_foundry \"" << roman_font_foundry << "\"\n"; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_SANS: if (ignore_system_lyxrc || sans_font_name != system_lyxrc.sans_font_name) { os << "\\screen_font_sans \"" << sans_font_name << "\"\n"; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_SANS_FOUNDRY: if (ignore_system_lyxrc || sans_font_foundry != system_lyxrc.sans_font_foundry) { os << "\\screen_font_sans_foundry \"" << sans_font_foundry << "\"\n"; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_TYPEWRITER: if (ignore_system_lyxrc || typewriter_font_name != system_lyxrc.typewriter_font_name) { os << "\\screen_font_typewriter \"" << typewriter_font_name << "\"\n"; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY: if (ignore_system_lyxrc || typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) { os << "\\screen_font_typewriter_foundry \"" << typewriter_font_foundry << "\"\n"; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_SCALABLE: if (ignore_system_lyxrc || @@ -1543,51 +1812,118 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << convert(use_scalable_fonts) << '\n'; } + if (tag != RC_LAST) + break; case RC_SCREEN_FONT_SIZES: if (ignore_system_lyxrc || - font_sizes[LyXFont::SIZE_TINY] - != system_lyxrc.font_sizes[LyXFont::SIZE_TINY] || - font_sizes[LyXFont::SIZE_SCRIPT] - != system_lyxrc.font_sizes[LyXFont::SIZE_SCRIPT] || - font_sizes[LyXFont::SIZE_FOOTNOTE] - != system_lyxrc.font_sizes[LyXFont::SIZE_FOOTNOTE] || - font_sizes[LyXFont::SIZE_SMALL] - != system_lyxrc.font_sizes[LyXFont::SIZE_SMALL] || - font_sizes[LyXFont::SIZE_NORMAL] - != system_lyxrc.font_sizes[LyXFont::SIZE_NORMAL] || - font_sizes[LyXFont::SIZE_LARGE] - != system_lyxrc.font_sizes[LyXFont::SIZE_LARGE] || - font_sizes[LyXFont::SIZE_LARGER] - != system_lyxrc.font_sizes[LyXFont::SIZE_LARGER] || - font_sizes[LyXFont::SIZE_LARGEST] - != system_lyxrc.font_sizes[LyXFont::SIZE_LARGEST] || - font_sizes[LyXFont::SIZE_HUGE] - != system_lyxrc.font_sizes[LyXFont::SIZE_HUGE] || - font_sizes[LyXFont::SIZE_HUGER] - != system_lyxrc.font_sizes[LyXFont::SIZE_HUGER]) { + font_sizes[FONT_SIZE_TINY] + != system_lyxrc.font_sizes[FONT_SIZE_TINY] || + font_sizes[FONT_SIZE_SCRIPT] + != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] || + font_sizes[FONT_SIZE_FOOTNOTE] + != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] || + font_sizes[FONT_SIZE_SMALL] + != system_lyxrc.font_sizes[FONT_SIZE_SMALL] || + font_sizes[FONT_SIZE_NORMAL] + != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] || + font_sizes[FONT_SIZE_LARGE] + != system_lyxrc.font_sizes[FONT_SIZE_LARGE] || + font_sizes[FONT_SIZE_LARGER] + != system_lyxrc.font_sizes[FONT_SIZE_LARGER] || + font_sizes[FONT_SIZE_LARGEST] + != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] || + font_sizes[FONT_SIZE_HUGE] + != system_lyxrc.font_sizes[FONT_SIZE_HUGE] || + font_sizes[FONT_SIZE_HUGER] + != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) { os.setf(ios::fixed); os.precision(2); os << "\\screen_font_sizes" - << ' ' << font_sizes[LyXFont::SIZE_TINY] - << ' ' << font_sizes[LyXFont::SIZE_SCRIPT] - << ' ' << font_sizes[LyXFont::SIZE_FOOTNOTE] - << ' ' << font_sizes[LyXFont::SIZE_SMALL] - << ' ' << font_sizes[LyXFont::SIZE_NORMAL] - << ' ' << font_sizes[LyXFont::SIZE_LARGE] - << ' ' << font_sizes[LyXFont::SIZE_LARGER] - << ' ' << font_sizes[LyXFont::SIZE_LARGEST] - << ' ' << font_sizes[LyXFont::SIZE_HUGE] - << ' ' << font_sizes[LyXFont::SIZE_HUGER] + << ' ' << font_sizes[FONT_SIZE_TINY] + << ' ' << font_sizes[FONT_SIZE_SCRIPT] + << ' ' << font_sizes[FONT_SIZE_FOOTNOTE] + << ' ' << font_sizes[FONT_SIZE_SMALL] + << ' ' << font_sizes[FONT_SIZE_NORMAL] + << ' ' << font_sizes[FONT_SIZE_LARGE] + << ' ' << font_sizes[FONT_SIZE_LARGER] + << ' ' << font_sizes[FONT_SIZE_LARGEST] + << ' ' << font_sizes[FONT_SIZE_HUGE] + << ' ' << font_sizes[FONT_SIZE_HUGER] << '\n'; } + if (tag != RC_LAST) + break; + case RC_FULL_SCREEN_LIMIT: + if (ignore_system_lyxrc || + full_screen_limit != system_lyxrc.full_screen_limit) { + os << "\\fullscreen_limit " + << convert(full_screen_limit) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_FULL_SCREEN_TOOLBARS: + if (ignore_system_lyxrc || + full_screen_toolbars != system_lyxrc.full_screen_toolbars) { + os << "\\fullscreen_toolbars " + << convert(full_screen_toolbars) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_FULL_SCREEN_SCROLLBAR: + if (ignore_system_lyxrc || + full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) { + os << "\\fullscreen_scrollbar " + << convert(full_screen_scrollbar) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_FULL_SCREEN_TABBAR: + if (ignore_system_lyxrc || + full_screen_tabbar != system_lyxrc.full_screen_tabbar) { + os << "\\fullscreen_tabbar " + << convert(full_screen_tabbar) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_FULL_SCREEN_WIDTH: + if (ignore_system_lyxrc || + full_screen_width != system_lyxrc.full_screen_width) { + os << "\\fullscreen_width " + << convert(full_screen_width) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_OPEN_BUFFERS_IN_TABS: + if (ignore_system_lyxrc || + open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) { + os << "\\open_buffers_in_tabs " + << convert(open_buffers_in_tabs) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_USE_BUNDLED_FORMAT: + if (ignore_system_lyxrc || + use_bundled_format != system_lyxrc.use_bundled_format) { + os << "\\use_bundled_format " + << convert(use_bundled_format) + << '\n'; + } + if (tag != RC_LAST) + break; os << "\n#\n" << "# COLOR SECTION ###################################\n" << "#\n\n"; case RC_SET_COLOR: - for (int i = 0; i < LColor::ignore; ++i) { - LColor::color lc = static_cast(i); + for (int i = 0; i < Color_ignore; ++i) { + ColorCode lc = static_cast(i); string const col(lcolor.getX11Name(lc)); if (ignore_system_lyxrc || @@ -1597,6 +1933,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << col << "\"\n"; } } + if (tag != RC_LAST) + break; os << "\n#\n" << "# PRINTER SECTION ###################################\n" @@ -1607,6 +1945,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const printer != system_lyxrc.printer) { os << "\\printer \"" << printer << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINT_ADAPTOUTPUT: if (ignore_system_lyxrc || print_adapt_output != system_lyxrc.print_adapt_output) { @@ -1614,23 +1954,31 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << convert(print_adapt_output) << '\n'; } + if (tag != RC_LAST) + break; case RC_PRINT_COMMAND: if (ignore_system_lyxrc || print_command != system_lyxrc.print_command) { os << "\\print_command \"" << print_command << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTEXSTRAOPTIONS: if (ignore_system_lyxrc || print_extra_options != system_lyxrc.print_extra_options) { os << "\\print_extra_options \"" << print_extra_options << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTSPOOL_COMMAND: if (ignore_system_lyxrc || print_spool_command != system_lyxrc.print_spool_command) { os << "\\print_spool_command \"" << print_spool_command << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTSPOOL_PRINTERPREFIX: if (ignore_system_lyxrc || print_spool_printerprefix @@ -1638,42 +1986,56 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\print_spool_printerprefix \"" << print_spool_printerprefix << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTEVENPAGEFLAG: if (ignore_system_lyxrc || print_evenpage_flag != system_lyxrc.print_evenpage_flag) { os << "\\print_evenpage_flag \"" << print_evenpage_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTODDPAGEFLAG: if (ignore_system_lyxrc || print_oddpage_flag != system_lyxrc.print_oddpage_flag) { os << "\\print_oddpage_flag \"" << print_oddpage_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTREVERSEFLAG: if (ignore_system_lyxrc || print_reverse_flag != system_lyxrc.print_reverse_flag) { os << "\\print_reverse_flag \"" << print_reverse_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTLANDSCAPEFLAG: if (ignore_system_lyxrc || print_landscape_flag != system_lyxrc.print_landscape_flag) { os << "\\print_landscape_flag \"" << print_landscape_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTPAGERANGEFLAG: if (ignore_system_lyxrc || print_pagerange_flag != system_lyxrc.print_pagerange_flag) { os << "\\print_pagerange_flag \"" << print_pagerange_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTCOPIESFLAG: if (ignore_system_lyxrc || print_copies_flag != system_lyxrc.print_copies_flag) { os << "\\print_copies_flag \"" << print_copies_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTCOLLCOPIESFLAG: if (ignore_system_lyxrc || print_collcopies_flag @@ -1682,12 +2044,16 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << print_collcopies_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTPAPERFLAG: if (ignore_system_lyxrc || print_paper_flag != system_lyxrc.print_paper_flag) { os << "\\print_paper_flag \"" << print_paper_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTPAPERDIMENSIONFLAG: if (ignore_system_lyxrc || print_paper_dimension_flag @@ -1695,18 +2061,24 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\print_paper_dimension_flag \"" << print_paper_dimension_flag << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTTOPRINTER: if (ignore_system_lyxrc || print_to_printer != system_lyxrc.print_to_printer) { os << "\\print_to_printer \"" << print_to_printer << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTTOFILE: if (ignore_system_lyxrc || print_to_file != system_lyxrc.print_to_file) { string const path = os::external_path(print_to_file); os << "\\print_to_file \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_PRINTFILEEXTENSION: if (ignore_system_lyxrc || print_file_extension != system_lyxrc.print_file_extension) { @@ -1714,6 +2086,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << print_file_extension << "\"\n"; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# EXPORT SECTION ####################################\n" @@ -1727,6 +2101,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << custom_export_command << "\"\n"; } + if (tag != RC_LAST) + break; case RC_CUSTOM_EXPORT_FORMAT: if (ignore_system_lyxrc || custom_export_format @@ -1734,6 +2110,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\custom_export_format \"" << custom_export_format << "\"\n"; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# TEX SECTION #######################################\n" @@ -1744,6 +2122,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const fontenc != system_lyxrc.fontenc) { os << "\\font_encoding \"" << fontenc << "\"\n"; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# FILE SECTION ######################################\n" @@ -1755,59 +2135,167 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const string const path = os::external_path(document_path); os << "\\document_path \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_USELASTFILEPOS: if (ignore_system_lyxrc || use_lastfilepos != system_lyxrc.use_lastfilepos) { os << "\\use_lastfilepos " << convert(use_lastfilepos) << '\n'; } + if (tag != RC_LAST) + break; case RC_LOADSESSION: if (ignore_system_lyxrc || load_session != system_lyxrc.load_session) { os << "\\load_session " << convert(load_session) << "\n"; } + if (tag != RC_LAST) + break; + case RC_MOUSE_WHEEL_SPEED: + if (ignore_system_lyxrc || + mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) { + os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_INLINE_DELAY: + if (ignore_system_lyxrc || + completion_inline_delay != system_lyxrc.completion_inline_delay) { + os << "\\completion_inline_delay " << completion_inline_delay << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_INLINE_MATH: + if (ignore_system_lyxrc || + completion_inline_math != system_lyxrc.completion_inline_math) { + os << "\\completion_inline_math " + << convert(completion_inline_math) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_INLINE_TEXT: + if (ignore_system_lyxrc || + completion_inline_text != system_lyxrc.completion_inline_text) { + os << "\\completion_inline_text " + << convert(completion_inline_text) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_INLINE_DOTS: + if (ignore_system_lyxrc || + completion_inline_dots != system_lyxrc.completion_inline_dots) { + os << "\\completion_inline_dots " + << convert(completion_inline_dots) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_DELAY: + if (ignore_system_lyxrc || + completion_popup_delay != system_lyxrc.completion_popup_delay) { + os << "\\completion_popup_delay " << completion_popup_delay << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_MATH: + if (ignore_system_lyxrc || + completion_popup_math != system_lyxrc.completion_popup_math) { + os << "\\completion_popup_math " + << convert(completion_popup_math) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_TEXT: + if (ignore_system_lyxrc || + completion_popup_text != system_lyxrc.completion_popup_text) { + os << "\\completion_popup_text " + << convert(completion_popup_text) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_CURSOR_TEXT: + if (ignore_system_lyxrc || + completion_cursor_text != system_lyxrc.completion_cursor_text) { + os << "\\completion_cursor_text " + << convert(completion_cursor_text) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_AFTER_COMPLETE: + if (ignore_system_lyxrc || + completion_popup_after_complete + != system_lyxrc.completion_popup_after_complete) { + os << "\\completion_popup_after_complete " + << convert(completion_popup_after_complete) << '\n'; + } + if (tag != RC_LAST) + break; case RC_NUMLASTFILES: if (ignore_system_lyxrc || num_lastfiles != system_lyxrc.num_lastfiles) { os << "\\num_lastfiles " << num_lastfiles << '\n'; } + if (tag != RC_LAST) + break; case RC_CHECKLASTFILES: if (ignore_system_lyxrc || check_lastfiles != system_lyxrc.check_lastfiles) { os << "\\check_lastfiles " << convert(check_lastfiles) << '\n'; } + if (tag != RC_LAST) + break; + case RC_EXAMPLEPATH: + if (ignore_system_lyxrc || + example_path != system_lyxrc.example_path) { + string const path = os::external_path(example_path); + os << "\\example_path \"" << path << "\"\n"; + } + if (tag != RC_LAST) + break; case RC_TEMPLATEPATH: if (ignore_system_lyxrc || template_path != system_lyxrc.template_path) { string const path = os::external_path(template_path); os << "\\template_path \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_TEMPDIRPATH: if (ignore_system_lyxrc || tempdir_path != system_lyxrc.tempdir_path) { string const path = os::external_path(tempdir_path); os << "\\tempdir_path \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_USETEMPDIR: + if (tag != RC_LAST) + break; // Ignore it case RC_PLAINTEXT_LINELEN: if (ignore_system_lyxrc || plaintext_linelen != system_lyxrc.plaintext_linelen) { os << "\\plaintext_linelen " << plaintext_linelen << '\n'; } + if (tag != RC_LAST) + break; case RC_MAKE_BACKUP: if (ignore_system_lyxrc || make_backup != system_lyxrc.make_backup) { os << "\\make_backup " << convert(make_backup) << '\n'; } + if (tag != RC_LAST) + break; case RC_BACKUPDIR_PATH: if (ignore_system_lyxrc || backupdir_path != system_lyxrc.backupdir_path) { string const path = os::external_path(backupdir_path); os << "\\backupdir_path \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# PLAIN TEXT EXPORT SECTION ##############################\n" @@ -1819,6 +2307,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\plaintext_roff_command \"" << plaintext_roff_command << "\"\n"; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# SPELLCHECKER SECTION ##############################\n" @@ -1828,40 +2318,54 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const use_spell_lib != system_lyxrc.use_spell_lib) { os << "\\use_spell_lib " << convert(use_spell_lib) << '\n'; } + if (tag != RC_LAST) + break; case RC_SPELL_COMMAND: if (ignore_system_lyxrc || isp_command != system_lyxrc.isp_command) { os << "\\spell_command \"" << isp_command << "\"\n"; } + if (tag != RC_LAST) + break; case RC_ACCEPT_COMPOUND: if (ignore_system_lyxrc || isp_accept_compound != system_lyxrc.isp_accept_compound) { os << "\\accept_compound " << convert(isp_accept_compound) << '\n'; } + if (tag != RC_LAST) + break; case RC_USE_ALT_LANG: if (ignore_system_lyxrc || isp_use_alt_lang != system_lyxrc.isp_use_alt_lang) { os << "\\use_alt_language " << convert(isp_use_alt_lang) << '\n'; } + if (tag != RC_LAST) + break; case RC_ALT_LANG: if (ignore_system_lyxrc || isp_alt_lang != system_lyxrc.isp_alt_lang) { os << "\\alternate_language \"" << isp_alt_lang << "\"\n"; } + if (tag != RC_LAST) + break; case RC_USE_ESC_CHARS: if (ignore_system_lyxrc || isp_use_esc_chars != system_lyxrc.isp_use_esc_chars) { os << "\\use_escape_chars " << convert(isp_use_esc_chars) << '\n'; } + if (tag != RC_LAST) + break; case RC_ESC_CHARS: if (ignore_system_lyxrc || isp_esc_chars != system_lyxrc.isp_esc_chars) { os << "\\escape_chars \"" << isp_esc_chars << "\"\n"; } + if (tag != RC_LAST) + break; case RC_USE_PERS_DICT: if (ignore_system_lyxrc || isp_use_pers_dict != system_lyxrc.isp_use_pers_dict) { @@ -1869,11 +2373,29 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << convert(isp_use_pers_dict) << '\n'; } + if (tag != RC_LAST) + break; + case RC_USE_TOOLTIP: + if (ignore_system_lyxrc || + use_tooltip != system_lyxrc.use_tooltip) { + os << "\\use_tooltip " + << convert(use_tooltip) + << '\n'; + } + case RC_USE_PIXMAP_CACHE: + if (ignore_system_lyxrc || + use_pixmap_cache != system_lyxrc.use_pixmap_cache) { + os << "\\use_pixmap_cache " + << convert(use_pixmap_cache) + << '\n'; + } case RC_PERS_DICT: if (isp_pers_dict != system_lyxrc.isp_pers_dict) { string const path = os::external_path(isp_pers_dict); os << "\\personal_dictionary \"" << path << "\"\n"; } + if (tag != RC_LAST) + break; case RC_USE_INP_ENC: if (ignore_system_lyxrc || isp_use_input_encoding @@ -1882,6 +2404,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << convert(isp_use_input_encoding) << '\n'; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# LANGUAGE SUPPORT SECTION ##########################\n" @@ -1892,12 +2416,23 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const rtl_support != system_lyxrc.rtl_support) { os << "\\rtl " << convert(rtl_support) << '\n'; } + if (tag != RC_LAST) + break; + case RC_VISUAL_CURSOR: + if (ignore_system_lyxrc || + visual_cursor != system_lyxrc.visual_cursor) { + os << "\\visual_cursor " << convert(visual_cursor) << '\n'; + } + if (tag != RC_LAST) + break; case RC_LANGUAGE_PACKAGE: if (ignore_system_lyxrc || language_package != system_lyxrc.language_package) { os << "\\language_package \"" << language_package << "\"\n"; } + if (tag != RC_LAST) + break; case RC_LANGUAGE_GLOBAL_OPTIONS: if (ignore_system_lyxrc || language_global_options @@ -1906,6 +2441,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << convert(language_global_options) << "\"\n"; } + if (tag != RC_LAST) + break; case RC_LANGUAGE_USE_BABEL: if (ignore_system_lyxrc || language_use_babel != system_lyxrc.language_use_babel) { @@ -1913,6 +2450,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << convert(language_use_babel) << "\"\n"; } + if (tag != RC_LAST) + break; case RC_LANGUAGE_COMMAND_BEGIN: if (ignore_system_lyxrc || language_command_begin @@ -1921,6 +2460,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << language_command_begin << "\"\n"; } + if (tag != RC_LAST) + break; case RC_LANGUAGE_COMMAND_END: if (ignore_system_lyxrc || language_command_end @@ -1928,6 +2469,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\language_command_end \"" << language_command_end << "\"\n"; } + if (tag != RC_LAST) + break; case RC_LANGUAGE_COMMAND_LOCAL: if (ignore_system_lyxrc || language_command_local @@ -1936,18 +2479,24 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << language_command_local << "\"\n"; } + if (tag != RC_LAST) + break; case RC_LANGUAGE_AUTO_BEGIN: if (ignore_system_lyxrc || language_auto_begin != system_lyxrc.language_auto_begin) { os << "\\language_auto_begin " << convert(language_auto_begin) << '\n'; } + if (tag != RC_LAST) + break; case RC_LANGUAGE_AUTO_END: if (ignore_system_lyxrc || language_auto_end != system_lyxrc.language_auto_end) { os << "\\language_auto_end " << convert(language_auto_end) << '\n'; } + if (tag != RC_LAST) + break; case RC_MARK_FOREIGN_LANGUAGE: if (ignore_system_lyxrc || mark_foreign_language @@ -1955,6 +2504,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const os << "\\mark_foreign_language " << convert(mark_foreign_language) << '\n'; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# 2nd MISC SUPPORT SECTION ##########################\n" @@ -1965,11 +2516,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const auto_number != system_lyxrc.auto_number) { os << "\\auto_number " << convert(auto_number) << '\n'; } + if (tag != RC_LAST) + break; case RC_DEFAULT_LANGUAGE: if (ignore_system_lyxrc || default_language != system_lyxrc.default_language) { os << "\\default_language " << default_language << '\n'; } + if (tag != RC_LAST) + break; os << "\n#\n" << "# FORMATS SECTION ##########################\n" @@ -1995,12 +2550,12 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << cit->shortcut() << "\" \"" << cit->viewer() << "\" \"" << cit->editor() << "\" \""; - std::vector flags; + vector flags; if (cit->documentFormat()) flags.push_back("document"); if (cit->vectorFormat()) flags.push_back("vector"); - os << support::getStringFromVector(flags); + os << getStringFromVector(flags); os << "\"\n"; } } @@ -2011,8 +2566,12 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const if (!formats.getFormat(cit->name())) os << "\\format \"" << cit->name() << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n"; + if (tag != RC_LAST) + break; case RC_VIEWER: // Ignore it + if (tag != RC_LAST) + break; os << "\n#\n" << "# CONVERTERS SECTION ##########################\n" @@ -2040,11 +2599,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const if (!theConverters().getConverter(cit->from, cit->to)) os << "\\converter \"" << cit->from << "\" \"" << cit->to << "\" \"\" \"\"\n"; + if (tag != RC_LAST) + break; case RC_COPIER: - os << "\n#\n" - << "# COPIERS SECTION ##########################\n" - << "#\n\n"; + if (tag == RC_LAST) + os << "\n#\n" + << "# COPIERS SECTION ##########################\n" + << "#\n\n"; // Look for new movers Movers::const_iterator const sysbegin = theSystemMovers().begin(); @@ -2054,16 +2616,18 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const for (; it != end; ++it) { Movers::const_iterator const sysit = - std::find_if(sysbegin, sysend, SameMover(*it)); + find_if(sysbegin, sysend, SameMover(*it)); if (sysit == sysend) { - std::string const & fmt = it->first; - std::string const & command = + string const & fmt = it->first; + string const & command = it->second.command(); os << "\\copier " << fmt << " \"" << command << "\"\n"; } } + if (tag != RC_LAST) + break; // We don't actually delete SpecialisedMover(s) from the // map, just clear their 'command', so there's no need @@ -2142,6 +2706,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("LyX normally doesn't update the cursor position if you move the scrollbar. Set to true if you'd prefer to always have the cursor on screen."); break; + case RC_SHOW_MACRO_LABEL: + str = _("Show a small box around a Math Macro with the macro name when the cursor is inside."); + break; + case RC_CUSTOM_EXPORT_COMMAND: break; @@ -2153,6 +2721,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\"."); break; + case RC_DEFFILE: + str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories."); + break; + case RC_DEFAULT_LANGUAGE: str = _("New documents will be assigned this language."); break; @@ -2178,6 +2750,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Specify additional chars that can be part of a word."); break; + case RC_EXAMPLEPATH: + str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from."); + break; + case RC_FONT_ENCODING: str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages."); break; @@ -2239,7 +2815,7 @@ string const LyXRC::getDescription(LyXRCTags tag) break; case RC_LOADSESSION: - str = _("De-select to prevent loading files opened from the last lyx session."); + str = _("De-select to prevent loading files opened from the last LyX session."); break; case RC_MAKE_BACKUP: @@ -2250,6 +2826,47 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Select to control the highlighting of words with a language foreign to that of the document."); break; + case RC_MOUSE_WHEEL_SPEED: + str = bformat(_("The scrolling speed of the mouse wheel."), + maxlastfiles); + break; + + case RC_COMPLETION_POPUP_DELAY: + str = _("The completion popup delay."); + break; + + case RC_COMPLETION_POPUP_MATH: + str = _("Select to display the completion popup in math mode."); + break; + + case RC_COMPLETION_POPUP_TEXT: + str = _("Select to display the completion popup in text mode."); + break; + + case RC_COMPLETION_POPUP_AFTER_COMPLETE: + str = _("Show the completion popup without delay after non-unique completion attempt."); + break; + + case RC_COMPLETION_POPUP_TEXT: + str = _("Show a small triangle on the cursor to indicate that a completion is available."); + break; + + case RC_COMPLETION_POPUP_DELAY: + str = _("The inline completion delay."); + break; + + case RC_COMPLETION_INLINE_MATH: + str = _("Select to display the inline completion in math mode."); + break; + + case RC_COMPLETION_INLINE_TEXT: + str = _("Select to display the inline completion in text mode."); + break; + + case RC_COMPLETION_INLINE_DOTS: + str = _("Use \"...\" to shorten long completions."); + break; + case RC_NUMLASTFILES: str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."), maxlastfiles); @@ -2354,6 +2971,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic)."); break; + case RC_VISUAL_CURSOR: + str = _("Select to have visual bidi cursor movement, unselect for logical movement."); + break; + case RC_SCREEN_DPI: str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here."); break; @@ -2382,13 +3003,8 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper."); break; - case RC_SCREEN_GEOMETRY_HEIGHT: - case RC_SCREEN_GEOMETRY_WIDTH: - str = _("Specify geometry of the main view in width x height (values from last session will not be used if non-zero values are specified)."); - break; - - case RC_SCREEN_GEOMETRY_XYSAVED: - str = _("Allow session manager to save and restore windows position."); + case RC_GEOMETRY_SESSION: + str = _("Allow session manager to save and restore windows geometry."); break; case RC_SERVERPIPE: @@ -2437,6 +3053,14 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Specify whether to pass the -T input encoding option to ispell. Enable this if you cannot check the spelling of words containing accented letters. This may not work with all dictionaries."); break; + case RC_USE_TOOLTIP: + str = _("Enable the automatic appearance of tool tips in the work area."); + break; + + case RC_USE_PIXMAP_CACHE: + str = _("Enable the pixmap cache that might improve performance on Mac and Windows."); + break; + case RC_USE_SPELL_LIB: break;