X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=252bbfb36d4c3c28c8a1a3feaa9f3355dfa2d296;hb=1712e4f35e3e8cb132f731dca773f7767a241bf6;hp=6cc8af0ca136958068b8e88d390428e066083c14;hpb=48f36f59e74cfdea1d33f9170671d33c45b8ba37;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 6cc8af0ca1..252bbfb36d 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -23,6 +23,7 @@ #include "FontEnums.h" #include "Format.h" #include "Lexer.h" +#include "LyX.h" #include "Mover.h" #include "Session.h" #include "version.h" @@ -32,14 +33,17 @@ #include "support/convert.h" #include "support/debug.h" #include "support/environment.h" +#include "support/FileName.h" #include "support/filetools.h" #include "support/gettext.h" #include "support/lstrings.h" #include "support/os.h" +#include "support/Package.h" #include "support/userinfo.h" #include #include +#include using namespace std; using namespace lyx::support; @@ -81,23 +85,30 @@ LexerKeyword lyxrcTags[] = { { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR }, { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT }, { "\\def_file", LyXRC::RC_DEFFILE }, + { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT }, { "\\default_language", LyXRC::RC_DEFAULT_LANGUAGE }, { "\\default_papersize", LyXRC::RC_DEFAULT_PAPERSIZE }, { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT }, { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN }, { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS }, { "\\document_path", LyXRC::RC_DOCUMENTPATH }, + { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES }, { "\\escape_chars", LyXRC::RC_ESC_CHARS }, { "\\example_path", LyXRC::RC_EXAMPLEPATH }, + { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE }, { "\\font_encoding", LyXRC::RC_FONT_ENCODING }, { "\\format", LyXRC::RC_FORMAT }, + { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI }, + { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF }, { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT }, + { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR }, { "\\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 }, { "\\gui_language", LyXRC::RC_GUI_LANGUAGE }, + { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH }, { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES }, { "\\index_command", LyXRC::RC_INDEX_COMMAND }, { "\\input", LyXRC::RC_INPUT }, @@ -106,7 +117,6 @@ LexerKeyword lyxrcTags[] = { { "\\kbmap", LyXRC::RC_KBMAP }, { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY }, { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY }, - { "\\label_init_length", LyXRC::RC_LABEL_INIT_LENGTH }, { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN }, { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END }, { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN }, @@ -124,6 +134,7 @@ LexerKeyword lyxrcTags[] = { { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND }, { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES }, { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS }, + { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS }, { "\\path_prefix", LyXRC::RC_PATH_PREFIX }, { "\\personal_dictionary", LyXRC::RC_PERS_DICT }, { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN }, @@ -150,6 +161,7 @@ LexerKeyword lyxrcTags[] = { { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER }, { "\\printer", LyXRC::RC_PRINTER }, { "\\rtl", LyXRC::RC_RTL_SUPPORT }, + { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED }, { "\\screen_dpi", LyXRC::RC_SCREEN_DPI }, { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN }, { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY }, @@ -161,12 +173,16 @@ LexerKeyword lyxrcTags[] = { { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY }, { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM }, { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT }, + { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM }, { "\\serverpipe", LyXRC::RC_SERVERPIPE }, { "\\set_color", LyXRC::RC_SET_COLOR }, { "\\show_banner", LyXRC::RC_SHOW_BANNER }, + { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON }, { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS }, { "\\spell_command", LyXRC::RC_SPELL_COMMAND }, { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY }, + { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES }, + { "\\spellchecker", LyXRC::RC_SPELLCHECKER }, { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND }, { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH }, { "\\template_path", LyXRC::RC_TEMPLATEPATH }, @@ -183,6 +199,7 @@ LexerKeyword lyxrcTags[] = { { "\\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_system_colors", LyXRC::RC_USE_SYSTEM_COLORS }, // compatibility with versions older than 1.4.0 only { "\\use_tempdir", LyXRC::RC_USETEMPDIR }, { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP }, @@ -191,6 +208,7 @@ LexerKeyword lyxrcTags[] = { { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION }, // compatibility with versions older than 1.4.0 only { "\\viewer", LyXRC::RC_VIEWER}, + { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES }, { "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR} }; @@ -237,7 +255,7 @@ void LyXRC::setDefaults() index_command = "makeindex -c -q"; nomencl_command = "makeindex -s nomencl.ist"; dpi = 75; - // Because a screen typically is wider than a piece of paper: + // Because a screen is typically wider than a piece of paper: zoom = 150; allow_geometry_session = true; // Default LaTeX font size: @@ -265,15 +283,23 @@ void LyXRC::setDefaults() use_lastfilepos = true; load_session = false; make_backup = true; + save_compressed = false; backupdir_path.erase(); display_graphics = true; // Spellchecker settings: +// FIXME: this check should test the target platform (darwin) +#if defined(USE_MACOSX_PACKAGING) + spellchecker = "native"; +#elif defined(USE_ASPELL) + spellchecker = "aspell"; +#elif defined(USE_HUNSPELL) + spellchecker = "hunspell"; +#else + spellchecker = "aspell"; +#endif spellchecker_accept_compound = false; - spellchecker_use_input_encoding = false; - spellchecker_use_alt_lang = false; - spellchecker_use_pers_dict = false; - spellchecker_use_esc_chars = false; spellcheck_continuously = false; + spellcheck_notes = true; use_kbmap = false; rtl_support = true; visual_cursor = false; @@ -296,25 +322,32 @@ void LyXRC::setDefaults() date_insert_format = "%x"; cursor_follows_scrollbar = false; scroll_below_document = false; + scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL; + paragraph_markers = false; mac_like_word_movement = 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"; + preview_scale_factor = 1.0; use_converter_cache = true; + use_system_colors = false; 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()); open_buffers_in_tabs = true; + single_close_tab_button = false; + forward_search_dvi = string(); + forward_search_pdf = string(); + export_overwrite = NO_FILES; // Fullscreen settings full_screen_limit = false; full_screen_toolbars = true; full_screen_tabbar = true; + full_screen_menubar = true; full_screen_scrollbar = true; full_screen_width = 700; @@ -328,6 +361,7 @@ void LyXRC::setDefaults() completion_inline_text = false; completion_inline_dots = -1; completion_inline_delay = 0.2; + default_decimal_point = "."; } @@ -409,7 +443,7 @@ int LyXRC::read(Lexer & lexrc) lexrc.getString()); if (read(tmp)) { lexrc.printError("Error reading " - "included file: " + tmp.absFilename()); + "included file: " + tmp.absFileName()); } } break; @@ -452,10 +486,8 @@ int LyXRC::read(Lexer & lexrc) case RC_KBMAP_PRIMARY: if (lexrc.next()) { string const kmap(os::internal_path(lexrc.getString())); - if (kmap.empty()) { - // nothing - } else if (!libFileSearch("kbd", kmap, - "kmap").empty()) { + if (!libFileSearch("kbd", kmap, "kmap").empty() + || kmap.empty()) { primary_kbmap = kmap; } else { lexrc.printError("LyX: Keymap `$$Token' not found"); @@ -466,10 +498,8 @@ int LyXRC::read(Lexer & lexrc) case RC_KBMAP_SECONDARY: if (lexrc.next()) { string const kmap(os::internal_path(lexrc.getString())); - if (kmap.empty()) { - // nothing - } else if (!libFileSearch("kbd", kmap, - "kmap").empty()) { + if (!libFileSearch("kbd", kmap, "kmap").empty() + || kmap.empty()) { secondary_kbmap = kmap; } else { lexrc.printError("LyX: Keymap `$$Token' not found"); @@ -596,7 +626,7 @@ int LyXRC::read(Lexer & lexrc) case RC_BIBTEX_ALTERNATIVES: if (lexrc.next(true)) { - bibtex_alternatives.push_back(lexrc.getString()); + bibtex_alternatives.insert(lexrc.getString()); } break; @@ -614,7 +644,7 @@ int LyXRC::read(Lexer & lexrc) case RC_INDEX_ALTERNATIVES: if (lexrc.next(true)) { - index_alternatives.push_back(lexrc.getString()); + index_alternatives.insert(lexrc.getString()); } break; @@ -710,9 +740,11 @@ int LyXRC::read(Lexer & lexrc) } break; - case RC_USETEMPDIR: - if (lexrc.next()) - LYXERR0("Ignoring obsolete use_tempdir flag."); + case RC_HUNSPELLDIR_PATH: + if (lexrc.next()) { + hunspelldir_path = os::internal_path(lexrc.getString()); + hunspelldir_path = expandPath(hunspelldir_path); + } break; case RC_USELASTFILEPOS: @@ -855,6 +887,10 @@ int LyXRC::read(Lexer & lexrc) lexrc >> scroll_below_document; break; + case RC_PARAGRAPH_MARKERS: + lexrc >> paragraph_markers; + break; + case RC_MAC_LIKE_WORD_MOVEMENT: lexrc >> mac_like_word_movement; break; @@ -873,9 +909,6 @@ int LyXRC::read(Lexer & lexrc) lexrc >> dialogs_iconify_with_main; break; - case RC_PLAINTEXT_ROFF_COMMAND: - (void) lexrc.getString(); // Obsoleted in 2.0 - break; case RC_PLAINTEXT_LINELEN: lexrc >> plaintext_linelen; break; @@ -883,14 +916,8 @@ int LyXRC::read(Lexer & lexrc) case RC_ACCEPT_COMPOUND: lexrc >> spellchecker_accept_compound; break; - case RC_USE_INP_ENC: - lexrc >> spellchecker_use_input_encoding; - break; - case RC_USE_ALT_LANG: - lexrc >> spellchecker_use_alt_lang; - break; - case RC_USE_PERS_DICT: - lexrc >> spellchecker_use_pers_dict; + case RC_USE_SYSTEM_COLORS: + lexrc >> use_system_colors; break; case RC_USE_TOOLTIP: lexrc >> use_tooltip; @@ -898,31 +925,36 @@ int LyXRC::read(Lexer & lexrc) case RC_USE_PIXMAP_CACHE: lexrc >> use_pixmap_cache; break; - case RC_USE_ESC_CHARS: - lexrc >> spellchecker_use_esc_chars; + case RC_SPELLCHECKER: + lexrc >> spellchecker; break; case RC_ALT_LANG: lexrc >> spellchecker_alt_lang; break; - case RC_PERS_DICT: - if (lexrc.next()) - spellchecker_pers_dict = os::internal_path(lexrc.getString()); - break; case RC_ESC_CHARS: lexrc >> spellchecker_esc_chars; break; case RC_SPELLCHECK_CONTINUOUSLY: lexrc >> spellcheck_continuously; break; + case RC_SPELLCHECK_NOTES: + lexrc >> spellcheck_notes; + break; case RC_MAKE_BACKUP: lexrc >> make_backup; break; + case RC_SAVE_COMPRESSED: + lexrc >> save_compressed; + break; case RC_BACKUPDIR_PATH: if (lexrc.next()) { backupdir_path = os::internal_path(lexrc.getString()); backupdir_path = expandPath(backupdir_path); } break; + case RC_DEFAULT_DECIMAL_POINT: + lexrc >> default_decimal_point; + break; case RC_DATE_INSERT_FORMAT: lexrc >> date_insert_format; break; @@ -1043,6 +1075,22 @@ int LyXRC::read(Lexer & lexrc) } break; } + case RC_VIEWER_ALTERNATIVES: { + string format, command; + if (lexrc.next()) + format = lexrc.getString(); + if (lexrc.eatLine()) + command = lexrc.getString(); + viewer_alternatives[format].insert(command); + break; + } + case RC_EDITOR_ALTERNATIVES: { + string format, command; + lexrc >> format >> command; + editor_alternatives[format].insert(command); + break; + } + case RC_DEFAULT_VIEW_FORMAT: lexrc >> default_view_format; break; @@ -1055,10 +1103,6 @@ int LyXRC::read(Lexer & lexrc) lexrc >> gui_language; break; - case RC_LABEL_INIT_LENGTH: - lexrc >> label_init_length; - break; - case RC_SHOW_BANNER: lexrc >> show_banner; break; @@ -1123,17 +1167,73 @@ int LyXRC::read(Lexer & lexrc) case RC_FULL_SCREEN_TABBAR: lexrc >> full_screen_tabbar; break; + case RC_FULL_SCREEN_MENUBAR: + lexrc >> full_screen_menubar; + break; case RC_FULL_SCREEN_WIDTH: lexrc >> full_screen_width; break; case RC_OPEN_BUFFERS_IN_TABS: lexrc >> open_buffers_in_tabs; break; + case RC_SINGLE_CLOSE_TAB_BUTTON: + lexrc >> single_close_tab_button; + break; + case RC_FORWARD_SEARCH_DVI: + if (lexrc.next(true)) + forward_search_dvi = lexrc.getString(); + break; + case RC_FORWARD_SEARCH_PDF: + if (lexrc.next(true)) + forward_search_pdf = lexrc.getString(); + break; + case RC_EXPORT_OVERWRITE: + if (lexrc.next()) { + string const tmp = lexrc.getString(); + if (tmp == "all" || tmp == "true") + export_overwrite = ALL_FILES; + else if (tmp == "main") + export_overwrite = MAIN_FILE; + else { + export_overwrite = NO_FILES; + if (tmp != "ask" && tmp != "false") + LYXERR0("Unrecognized export_overwrite status \"" + << tmp << '"'); + } + } + break; + case RC_SCROLL_WHEEL_ZOOM: + if (lexrc.next()) { + string const tmp = lexrc.getString(); + if (tmp == "ctrl") + scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL; + else if (tmp == "shift") + scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT; + else if (tmp == "alt") + scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT; + else { + scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF; + if (tmp != "off" && tmp != "false") + LYXERR0("Unrecognized scroll_wheel_zoom status \"" + << tmp << '"'); + } + } + break; + // Obsoteted in 1.4.0 + case RC_USETEMPDIR: // Obsoleted in 2.0 case RC_SPELL_COMMAND: + case RC_PERS_DICT: + case RC_PLAINTEXT_ROFF_COMMAND: + case RC_USE_ALT_LANG: + case RC_USE_ESC_CHARS: + case RC_USE_INP_ENC: + case RC_USE_PERS_DICT: case RC_USE_SPELL_LIB: - (void) lexrc.getString(); + LYXERR(Debug::LYXRC, "Skipping obsolete tag `" + << lexrc.getString() << "'."); + lexrc.next(true); break; case RC_LAST: @@ -1351,8 +1451,30 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case PAPER_B5: os << "b5"; break; case PAPER_CUSTOM: + case PAPER_A0: + case PAPER_A1: + case PAPER_A2: + case PAPER_A6: + case PAPER_B0: + case PAPER_B1: + case PAPER_B2: case PAPER_B3: - case PAPER_B4: break; + case PAPER_B4: + case PAPER_B6: + case PAPER_C0: + case PAPER_C1: + case PAPER_C2: + case PAPER_C3: + case PAPER_C4: + case PAPER_C5: + case PAPER_C6: + case PAPER_JISB0: + case PAPER_JISB1: + case PAPER_JISB2: + case PAPER_JISB3: + case PAPER_JISB4: + case PAPER_JISB5: + case PAPER_JISB6: break; } os << "\"\n"; } @@ -1365,15 +1487,18 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; - case RC_BIBTEX_ALTERNATIVES: - if (ignore_system_lyxrc || - bibtex_alternatives != system_lyxrc.bibtex_alternatives) { - for (vector::const_iterator it = bibtex_alternatives.begin(); - it != bibtex_alternatives.end(); ++it) - os << "\\bibtex_alternatives \"" << *it << "\"\n"; + case RC_BIBTEX_ALTERNATIVES: { + CommandSet::const_iterator it = bibtex_alternatives.begin(); + CommandSet::const_iterator end = bibtex_alternatives.end(); + for ( ; it != end; ++it) { + if (ignore_system_lyxrc + || !system_lyxrc.bibtex_alternatives.count(*it)) + os << "\\bibtex_alternatives \"" + << *it << "\"\n"; } if (tag != RC_LAST) break; + } case RC_BIBTEX_COMMAND: if (ignore_system_lyxrc || bibtex_command != system_lyxrc.bibtex_command) { @@ -1388,15 +1513,18 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; - case RC_INDEX_ALTERNATIVES: - if (ignore_system_lyxrc || - index_alternatives != system_lyxrc.index_alternatives) { - for (vector::const_iterator it = index_alternatives.begin(); - it != index_alternatives.end(); ++it) - os << "\\index_alternatives \"" << *it << "\"\n"; + case RC_INDEX_ALTERNATIVES: { + CommandSet::const_iterator it = index_alternatives.begin(); + CommandSet::const_iterator end = index_alternatives.end(); + for ( ; it != end; ++it) { + if (ignore_system_lyxrc + || !system_lyxrc.index_alternatives.count(*it)) + os << "\\index_alternatives \"" + << *it << "\"\n"; } if (tag != RC_LAST) break; + } case RC_INDEX_COMMAND: if (ignore_system_lyxrc || index_command != system_lyxrc.index_command) { @@ -1479,14 +1607,6 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } 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"; @@ -1607,6 +1727,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_PARAGRAPH_MARKERS: + if (ignore_system_lyxrc || + paragraph_markers + != system_lyxrc.paragraph_markers) { + os << "\\paragraph_markers " + << convert(paragraph_markers) << '\n'; + } + if (tag != RC_LAST) + break; case RC_MAC_LIKE_WORD_MOVEMENT: if (ignore_system_lyxrc || mac_like_word_movement @@ -1771,6 +1900,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_FULL_SCREEN_MENUBAR: + if (ignore_system_lyxrc || + full_screen_menubar != system_lyxrc.full_screen_menubar) { + os << "\\fullscreen_menubar " + << convert(full_screen_menubar) + << '\n'; + } + if (tag != RC_LAST) + break; case RC_FULL_SCREEN_WIDTH: if (ignore_system_lyxrc || full_screen_width != system_lyxrc.full_screen_width) { @@ -1789,6 +1927,29 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_SINGLE_CLOSE_TAB_BUTTON: + if (ignore_system_lyxrc || + single_close_tab_button != system_lyxrc.single_close_tab_button) { + os << "\\single_close_tab_button " + << convert(single_close_tab_button) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_FORWARD_SEARCH_DVI: + if (ignore_system_lyxrc || + forward_search_dvi != system_lyxrc.forward_search_dvi) { + os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n"; + } + if (tag != RC_LAST) + break; + case RC_FORWARD_SEARCH_PDF: + if (ignore_system_lyxrc || + forward_search_pdf != system_lyxrc.forward_search_pdf) { + os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n"; + } + if (tag != RC_LAST) + break; os << "\n#\n" << "# COLOR SECTION ###################################\n" @@ -2134,6 +2295,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_HUNSPELLDIR_PATH: + if (ignore_system_lyxrc || + hunspelldir_path != system_lyxrc.hunspelldir_path) { + string const path = os::external_path(hunspelldir_path); + os << "\\hunspelldir_path \"" << path << "\"\n"; + } + if (tag != RC_LAST) + break; case RC_USETEMPDIR: if (tag != RC_LAST) break; @@ -2155,6 +2324,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_SAVE_COMPRESSED: + if (ignore_system_lyxrc || + save_compressed != system_lyxrc.save_compressed) { + os << "\\save_compressed " << convert(save_compressed) << '\n'; + } + if (tag != RC_LAST) + break; case RC_BACKUPDIR_PATH: if (ignore_system_lyxrc || backupdir_path != system_lyxrc.backupdir_path) { @@ -2186,11 +2362,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; case RC_USE_ALT_LANG: - if (ignore_system_lyxrc || - spellchecker_use_alt_lang != system_lyxrc.spellchecker_use_alt_lang) { - os << "\\use_alt_language " << convert(spellchecker_use_alt_lang) - << '\n'; - } + // Obsoleted in 2.0 if (tag != RC_LAST) break; case RC_ALT_LANG: @@ -2202,11 +2374,6 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; case RC_USE_ESC_CHARS: - if (ignore_system_lyxrc || - spellchecker_use_esc_chars != system_lyxrc.spellchecker_use_esc_chars) { - os << "\\use_escape_chars " << convert(spellchecker_use_esc_chars) - << '\n'; - } if (tag != RC_LAST) break; case RC_ESC_CHARS: @@ -2217,10 +2384,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; case RC_USE_PERS_DICT: + // obsoleted in 2.0 + if (tag != RC_LAST) + break; + case RC_USE_SYSTEM_COLORS: if (ignore_system_lyxrc || - spellchecker_use_pers_dict != system_lyxrc.spellchecker_use_pers_dict) { - os << "\\use_personal_dictionary " - << convert(spellchecker_use_pers_dict) + use_system_colors != system_lyxrc.use_system_colors) { + os << "\\use_system_colors " + << convert(use_system_colors) << '\n'; } if (tag != RC_LAST) @@ -2232,6 +2403,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << convert(use_tooltip) << '\n'; } + if (tag != RC_LAST) + break; case RC_USE_PIXMAP_CACHE: if (ignore_system_lyxrc || use_pixmap_cache != system_lyxrc.use_pixmap_cache) { @@ -2239,27 +2412,38 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << convert(use_pixmap_cache) << '\n'; } + if (tag != RC_LAST) + break; case RC_PERS_DICT: - if (spellchecker_pers_dict != system_lyxrc.spellchecker_pers_dict) { - string const path = os::external_path(spellchecker_pers_dict); - os << "\\personal_dictionary \"" << path << "\"\n"; - } + // obsoleted in 2.0 if (tag != RC_LAST) break; case RC_USE_INP_ENC: - if (ignore_system_lyxrc || - spellchecker_use_input_encoding - != system_lyxrc.spellchecker_use_input_encoding) { - os << "\\use_input_encoding " - << convert(spellchecker_use_input_encoding) - << '\n'; - } + // obsoleted in 2.0 if (tag != RC_LAST) break; os << "\n#\n" << "# LANGUAGE SUPPORT SECTION ##########################\n" << "#\n\n"; + if (tag != RC_LAST) + break; + + case RC_DEFAULT_DECIMAL_POINT: + if (ignore_system_lyxrc || + default_decimal_point != system_lyxrc.default_decimal_point) { + os << "\\default_decimal_point " << default_decimal_point << '\n'; + } + if (tag != RC_LAST) + break; + + case RC_SPELLCHECKER: + if (ignore_system_lyxrc || + spellchecker != system_lyxrc.spellchecker) { + os << "\\spellchecker " << spellchecker << '\n'; + } + if (tag != RC_LAST) + break; case RC_SPELLCHECK_CONTINUOUSLY: if (ignore_system_lyxrc || @@ -2270,6 +2454,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; + case RC_SPELLCHECK_NOTES: + if (ignore_system_lyxrc || + spellcheck_notes != system_lyxrc.spellcheck_notes) { + os << "\\spellcheck_notes " << convert(spellcheck_notes) + << '\n'; + } + if (tag != RC_LAST) + break; + case RC_RTL_SUPPORT: if (ignore_system_lyxrc || rtl_support != system_lyxrc.rtl_support) { @@ -2391,6 +2584,48 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_EXPORT_OVERWRITE: + if (ignore_system_lyxrc || + export_overwrite != system_lyxrc.export_overwrite) { + string status; + switch (export_overwrite) { + case NO_FILES: + status = "ask"; + break; + case MAIN_FILE: + status = "main"; + break; + case ALL_FILES: + status = "all"; + break; + } + os << "\\export_overwrite " << status << '\n'; + } + if (tag != RC_LAST) + break; + + case RC_SCROLL_WHEEL_ZOOM: + if (ignore_system_lyxrc || + scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) { + string status; + switch (scroll_wheel_zoom) { + case SCROLL_WHEEL_ZOOM_OFF: + status = "off"; + break; + case SCROLL_WHEEL_ZOOM_CTRL: + status = "ctrl"; + break; + case SCROLL_WHEEL_ZOOM_SHIFT: + status = "shift"; + break; + case SCROLL_WHEEL_ZOOM_ALT: + status = "alt"; + break; + } + os << "\\scroll_wheel_zoom " << status << '\n'; + } + if (tag != RC_LAST) + break; os << "\n#\n" << "# FORMATS SECTION ##########################\n" @@ -2434,6 +2669,56 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n"; if (tag != RC_LAST) break; + case RC_VIEWER_ALTERNATIVES: { + Alternatives::const_iterator it = viewer_alternatives.begin(); + Alternatives::const_iterator const en = viewer_alternatives.end(); + Alternatives::const_iterator const sysend = + system_lyxrc.viewer_alternatives.end(); + for (; it != en; ++it) { + string const & fmt = it->first; + CommandSet const & cmd = it->second; + CommandSet::const_iterator sit = cmd.begin(); + CommandSet::const_iterator const sen = cmd.end(); + Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ? + system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case + system_lyxrc.viewer_alternatives.find(fmt); + for (; sit != sen; ++sit) { + string const & cmd = *sit; + if (ignore_system_lyxrc + || sysfmt == sysend // format not found + || sysfmt->second.count(cmd) == 0 // this command not found + ) + os << "\\viewer_alternatives " << fmt << " " << cmd << "\n"; + } + } + if (tag != RC_LAST) + break; + } + case RC_EDITOR_ALTERNATIVES: { + Alternatives::const_iterator it = editor_alternatives.begin(); + Alternatives::const_iterator const en = editor_alternatives.end(); + Alternatives::const_iterator const sysend = + system_lyxrc.editor_alternatives.end(); + for (; it != en; ++it) { + string const & fmt = it->first; + CommandSet const & cmd = it->second; + CommandSet::const_iterator sit = cmd.begin(); + CommandSet::const_iterator const sen = cmd.end(); + Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ? + system_lyxrc.editor_alternatives.begin() : // we won't use it in this case + system_lyxrc.editor_alternatives.find(fmt); + for (; sit != sen; ++sit) { + string const & cmd = *sit; + if (ignore_system_lyxrc + || sysfmt == sysend // format not found + || sysfmt->second.count(cmd) == 0 // this command not found + ) + os << "\\editor_alternatives " << fmt << " " << cmd << "\n"; + } + } + if (tag != RC_LAST) + break; + } case RC_DEFAULT_VIEW_FORMAT: if (ignore_system_lyxrc || default_view_format != system_lyxrc.default_view_format) { @@ -2511,6 +2796,183 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } +void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new) +{ + // 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. + LyXRC::LyXRCTags tag = LyXRC::RC_LAST; + switch (tag) { + case LyXRC::RC_ACCEPT_COMPOUND: + case LyXRC::RC_ALT_LANG: + case LyXRC::RC_PLAINTEXT_LINELEN: + case LyXRC::RC_PLAINTEXT_ROFF_COMMAND: + case LyXRC::RC_AUTOCORRECTION_MATH: + case LyXRC::RC_AUTOREGIONDELETE: + case LyXRC::RC_AUTORESET_OPTIONS: + case LyXRC::RC_AUTOSAVE: + case LyXRC::RC_AUTO_NUMBER: + case LyXRC::RC_BACKUPDIR_PATH: + case LyXRC::RC_BIBTEX_ALTERNATIVES: + case LyXRC::RC_BIBTEX_COMMAND: + case LyXRC::RC_BINDFILE: + case LyXRC::RC_CHECKLASTFILES: + case LyXRC::RC_COMPLETION_CURSOR_TEXT: + case LyXRC::RC_COMPLETION_INLINE_DELAY: + case LyXRC::RC_COMPLETION_INLINE_DOTS: + case LyXRC::RC_COMPLETION_INLINE_MATH: + case LyXRC::RC_COMPLETION_INLINE_TEXT: + case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE: + case LyXRC::RC_COMPLETION_POPUP_DELAY: + case LyXRC::RC_COMPLETION_POPUP_MATH: + case LyXRC::RC_COMPLETION_POPUP_TEXT: + case LyXRC::RC_USELASTFILEPOS: + case LyXRC::RC_LOADSESSION: + case LyXRC::RC_CHKTEX_COMMAND: + case LyXRC::RC_CONVERTER: + case LyXRC::RC_CONVERTER_CACHE_MAXAGE: + case LyXRC::RC_COPIER: + case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR: + case LyXRC::RC_SCROLL_BELOW_DOCUMENT: + case LyXRC::RC_DATE_INSERT_FORMAT: + case LyXRC::RC_DEFAULT_LANGUAGE: + case LyXRC::RC_GUI_LANGUAGE: + case LyXRC::RC_DEFAULT_PAPERSIZE: + case LyXRC::RC_DEFAULT_VIEW_FORMAT: + case LyXRC::RC_DEFFILE: + case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN: + case LyXRC::RC_DISPLAY_GRAPHICS: + case LyXRC::RC_DOCUMENTPATH: + if (lyxrc_orig.document_path != lyxrc_new.document_path) { + FileName path(lyxrc_new.document_path); + if (path.exists() && path.isDirectory()) + package().document_dir() = FileName(lyxrc.document_path); + } + case LyXRC::RC_EDITOR_ALTERNATIVES: + case LyXRC::RC_ESC_CHARS: + case LyXRC::RC_EXAMPLEPATH: + case LyXRC::RC_FONT_ENCODING: + case LyXRC::RC_FORMAT: + case LyXRC::RC_GROUP_LAYOUTS: + case LyXRC::RC_HUNSPELLDIR_PATH: + case LyXRC::RC_INDEX_ALTERNATIVES: + case LyXRC::RC_INDEX_COMMAND: + case LyXRC::RC_JBIBTEX_COMMAND: + case LyXRC::RC_JINDEX_COMMAND: + case LyXRC::RC_NOMENCL_COMMAND: + case LyXRC::RC_INPUT: + case LyXRC::RC_KBMAP: + case LyXRC::RC_KBMAP_PRIMARY: + case LyXRC::RC_KBMAP_SECONDARY: + case LyXRC::RC_LANGUAGE_AUTO_BEGIN: + case LyXRC::RC_LANGUAGE_AUTO_END: + case LyXRC::RC_LANGUAGE_COMMAND_BEGIN: + case LyXRC::RC_LANGUAGE_COMMAND_END: + case LyXRC::RC_LANGUAGE_COMMAND_LOCAL: + case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS: + case LyXRC::RC_LANGUAGE_PACKAGE: + case LyXRC::RC_LANGUAGE_USE_BABEL: + case LyXRC::RC_MAC_LIKE_WORD_MOVEMENT: + case LyXRC::RC_MACRO_EDIT_STYLE: + case LyXRC::RC_MAKE_BACKUP: + case LyXRC::RC_MARK_FOREIGN_LANGUAGE: + case LyXRC::RC_MOUSE_WHEEL_SPEED: + case LyXRC::RC_NUMLASTFILES: + case LyXRC::RC_PARAGRAPH_MARKERS: + case LyXRC::RC_PATH_PREFIX: + if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) { + prependEnvPath("PATH", lyxrc.path_prefix); + } + case LyXRC::RC_PERS_DICT: + case LyXRC::RC_PREVIEW: + case LyXRC::RC_PREVIEW_HASHED_LABELS: + case LyXRC::RC_PREVIEW_SCALE_FACTOR: + case LyXRC::RC_PRINTCOLLCOPIESFLAG: + case LyXRC::RC_PRINTCOPIESFLAG: + case LyXRC::RC_PRINTER: + case LyXRC::RC_PRINTEVENPAGEFLAG: + case LyXRC::RC_PRINTEXSTRAOPTIONS: + case LyXRC::RC_PRINTFILEEXTENSION: + case LyXRC::RC_PRINTLANDSCAPEFLAG: + case LyXRC::RC_PRINTODDPAGEFLAG: + case LyXRC::RC_PRINTPAGERANGEFLAG: + case LyXRC::RC_PRINTPAPERDIMENSIONFLAG: + case LyXRC::RC_PRINTPAPERFLAG: + case LyXRC::RC_PRINTREVERSEFLAG: + case LyXRC::RC_PRINTSPOOL_COMMAND: + case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX: + case LyXRC::RC_PRINTTOFILE: + case LyXRC::RC_PRINTTOPRINTER: + case LyXRC::RC_PRINT_ADAPTOUTPUT: + case LyXRC::RC_PRINT_COMMAND: + case LyXRC::RC_RTL_SUPPORT: + case LyXRC::RC_SAVE_COMPRESSED: + case LyXRC::RC_SCREEN_DPI: + case LyXRC::RC_SCREEN_FONT_ROMAN: + case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY: + case LyXRC::RC_SCREEN_FONT_SANS: + case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY: + case LyXRC::RC_SCREEN_FONT_SCALABLE: + case LyXRC::RC_SCREEN_FONT_SIZES: + case LyXRC::RC_SCREEN_FONT_TYPEWRITER: + case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY: + case LyXRC::RC_GEOMETRY_SESSION: + case LyXRC::RC_SCREEN_ZOOM: + case LyXRC::RC_SERVERPIPE: + case LyXRC::RC_SET_COLOR: + case LyXRC::RC_SHOW_BANNER: + case LyXRC::RC_OPEN_BUFFERS_IN_TABS: + case LyXRC::RC_SPELL_COMMAND: + case LyXRC::RC_SPELLCHECKER: + case LyXRC::RC_SPELLCHECK_CONTINUOUSLY: + case LyXRC::RC_SPELLCHECK_NOTES: + case LyXRC::RC_SPLITINDEX_COMMAND: + case LyXRC::RC_TEMPDIRPATH: + case LyXRC::RC_TEMPLATEPATH: + case LyXRC::RC_TEX_ALLOWS_SPACES: + case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS: + if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) { + os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths); + } + case LyXRC::RC_THESAURUSDIRPATH: + case LyXRC::RC_UIFILE: + case LyXRC::RC_USER_EMAIL: + case LyXRC::RC_USER_NAME: + case LyXRC::RC_USETEMPDIR: + case LyXRC::RC_USE_ALT_LANG: + case LyXRC::RC_USE_CONVERTER_CACHE: + case LyXRC::RC_USE_ESC_CHARS: + case LyXRC::RC_USE_INP_ENC: + case LyXRC::RC_USE_PERS_DICT: + case LyXRC::RC_USE_SYSTEM_COLORS: + case LyXRC::RC_USE_TOOLTIP: + case LyXRC::RC_USE_PIXMAP_CACHE: + case LyXRC::RC_USE_SPELL_LIB: + case LyXRC::RC_VIEWDVI_PAPEROPTION: + case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON: + case LyXRC::RC_SORT_LAYOUTS: + case LyXRC::RC_FULL_SCREEN_LIMIT: + case LyXRC::RC_FULL_SCREEN_SCROLLBAR: + case LyXRC::RC_FULL_SCREEN_MENUBAR: + case LyXRC::RC_FULL_SCREEN_TABBAR: + case LyXRC::RC_FULL_SCREEN_TOOLBARS: + case LyXRC::RC_FULL_SCREEN_WIDTH: + case LyXRC::RC_VISUAL_CURSOR: + case LyXRC::RC_VIEWER: + case LyXRC::RC_VIEWER_ALTERNATIVES: + case LyXRC::RC_FORWARD_SEARCH_DVI: + case LyXRC::RC_FORWARD_SEARCH_PDF: + case LyXRC::RC_EXPORT_OVERWRITE: + case LyXRC::RC_DEFAULT_DECIMAL_POINT: + case LyXRC::RC_SCROLL_WHEEL_ZOOM: + case LyXRC::RC_LAST: + break; + } +} + + #if 0 string const LyXRC::getDescription(LyXRCTags tag) { @@ -2665,10 +3127,6 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Use this to set the correct mapping file for your keyboard. You'll need this if you for instance want to type German documents on an American keyboard."); break; - case RC_LABEL_INIT_LENGTH: - str = _("Maximum number of words in the initialization string for a new label"); - break; - case RC_LANGUAGE_AUTO_BEGIN: str = _("Select if a language switching command is needed at the beginning of the document."); break; @@ -2773,11 +3231,6 @@ string const LyXRC::getDescription(LyXRCTags tag) "Use the OS native format."); break; - case RC_PERS_DICT: - case RC_USE_PERS_DICT: - str = _("Specify an alternate personal dictionary file. E.g. \".aspell_english\"."); - break; - case RC_PREVIEW: str = _("Shows a typeset preview of things such as math"); break; @@ -2944,8 +3397,8 @@ string const LyXRC::getDescription(LyXRCTags tag) case RC_USETEMPDIR: break; - case RC_USE_INP_ENC: - str = _("Specify whether to pass the -T input encoding option to aspell. Enable this if you cannot check the spelling of words containing accented letters. This may not work with all dictionaries."); + case RC_USE_USE_SYSTEM_COLORS: + str = _("Enable use the system colors for some things like main window background and selection."); break; case RC_USE_TOOLTIP: