X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=ece84acc8e8d97bd914471cc2c88c0701fff99bf;hb=2098f1d8c20d51e63e670bcdc9da8996068975bf;hp=3e14a078982a228a60c957fe1187936fcb79b381;hpb=29c40527e56424d9c66ffb2e6c9709d8e4a30e1e;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 3e14a07898..ece84acc8e 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -32,10 +32,12 @@ #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 @@ -61,6 +63,7 @@ LexerKeyword lyxrcTags[] = { { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH }, { "\\autosave", LyXRC::RC_AUTOSAVE }, { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH }, + { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES }, { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND }, { "\\bind_file", LyXRC::RC_BINDFILE }, { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES }, @@ -78,28 +81,33 @@ LexerKeyword lyxrcTags[] = { { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE }, { "\\copier", LyXRC::RC_COPIER }, { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR }, - { "\\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 }, + { "\\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 }, { "\\font_encoding", LyXRC::RC_FONT_ENCODING }, { "\\format", LyXRC::RC_FORMAT }, { "\\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 }, + { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND }, + { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND }, { "\\kbmap", LyXRC::RC_KBMAP }, { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY }, { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY }, @@ -121,6 +129,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 }, @@ -161,9 +170,12 @@ LexerKeyword lyxrcTags[] = { { "\\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 }, + { "\\spellchecker", LyXRC::RC_SPELLCHECKER }, + { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND }, { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH }, { "\\template_path", LyXRC::RC_TEMPLATEPATH }, { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES }, @@ -187,6 +199,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} }; @@ -226,14 +239,14 @@ void LyXRC::setDefaults() document_path.erase(); view_dvi_paper_option.erase(); default_papersize = PAPER_DEFAULT; - custom_export_format = "ps"; + default_view_format = "pdf2"; chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38"; bibtex_command = "bibtex"; fontenc = "default"; 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: @@ -264,11 +277,14 @@ void LyXRC::setDefaults() backupdir_path.erase(); display_graphics = true; // Spellchecker settings: +#if 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; use_kbmap = false; rtl_support = true; @@ -292,13 +308,14 @@ void LyXRC::setDefaults() date_insert_format = "%x"; cursor_follows_scrollbar = false; scroll_below_document = false; + 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_tooltip = true; use_pixmap_cache = false; @@ -306,11 +323,13 @@ void LyXRC::setDefaults() user_name = to_utf8(support::user_name()); user_email = to_utf8(support::user_email()); open_buffers_in_tabs = true; + single_close_tab_button = false; // 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; @@ -448,10 +467,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"); @@ -462,10 +479,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"); @@ -555,14 +570,6 @@ int LyXRC::read(Lexer & lexrc) lexrc >> print_paper_flag; break; - case RC_CUSTOM_EXPORT_COMMAND: - lexrc >> custom_export_command; - break; - - case RC_CUSTOM_EXPORT_FORMAT: - lexrc >> custom_export_format; - break; - case RC_DEFAULT_PAPERSIZE: if (lexrc.next()) { string const size = ascii_lowercase(lexrc.getString()); @@ -598,18 +605,48 @@ int LyXRC::read(Lexer & lexrc) } break; + case RC_BIBTEX_ALTERNATIVES: + if (lexrc.next(true)) { + bibtex_alternatives.insert(lexrc.getString()); + } + break; + case RC_BIBTEX_COMMAND: if (lexrc.next(true)) { bibtex_command = lexrc.getString(); } break; + case RC_JBIBTEX_COMMAND: + if (lexrc.next(true)) { + jbibtex_command = lexrc.getString(); + } + break; + + case RC_INDEX_ALTERNATIVES: + if (lexrc.next(true)) { + index_alternatives.insert(lexrc.getString()); + } + break; + case RC_INDEX_COMMAND: if (lexrc.next(true)) { index_command = lexrc.getString(); } break; + case RC_JINDEX_COMMAND: + if (lexrc.next(true)) { + jindex_command = lexrc.getString(); + } + break; + + case RC_SPLITINDEX_COMMAND: + if (lexrc.next(true)) { + splitindex_command = lexrc.getString(); + } + break; + case RC_NOMENCL_COMMAND: if (lexrc.next(true)) { nomencl_command = lexrc.getString(); @@ -684,9 +721,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: @@ -829,6 +868,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; @@ -847,9 +890,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; @@ -857,31 +897,18 @@ 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; - break; case RC_USE_TOOLTIP: lexrc >> use_tooltip; break; 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; @@ -1017,6 +1044,26 @@ 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; + case RC_DEFAULT_LANGUAGE: lexrc >> default_language; break; @@ -1093,17 +1140,33 @@ 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; + // 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: @@ -1335,6 +1398,18 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + 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) { @@ -1342,6 +1417,25 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_JBIBTEX_COMMAND: + if (ignore_system_lyxrc || + jbibtex_command != system_lyxrc.jbibtex_command) { + os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n"; + } + if (tag != RC_LAST) + break; + 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) { @@ -1349,6 +1443,20 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_JINDEX_COMMAND: + if (ignore_system_lyxrc || + jindex_command != system_lyxrc.jindex_command) { + os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n"; + } + if (tag != RC_LAST) + break; + case RC_SPLITINDEX_COMMAND: + if (ignore_system_lyxrc || + splitindex_command != system_lyxrc.splitindex_command) { + os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n"; + } + if (tag != RC_LAST) + break; case RC_NOMENCL_COMMAND: if (ignore_system_lyxrc || nomencl_command != system_lyxrc.nomencl_command) { @@ -1538,6 +1646,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 @@ -1702,6 +1819,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) { @@ -1718,6 +1844,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << convert(open_buffers_in_tabs) << '\n'; } + 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; @@ -1892,30 +2025,6 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; - os << "\n#\n" - << "# EXPORT SECTION ####################################\n" - << "#\n\n"; - - case RC_CUSTOM_EXPORT_COMMAND: - if (ignore_system_lyxrc || - custom_export_command - != system_lyxrc.custom_export_command) { - os << "\\custom_export_command \"" - << custom_export_command - << "\"\n"; - } - if (tag != RC_LAST) - break; - case RC_CUSTOM_EXPORT_FORMAT: - if (ignore_system_lyxrc || - custom_export_format - != system_lyxrc.custom_export_format) { - os << "\\custom_export_format \"" << custom_export_format - << "\"\n"; - } - if (tag != RC_LAST) - break; - os << "\n#\n" << "# TEX SECTION #######################################\n" << "#\n\n"; @@ -2089,6 +2198,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; @@ -2141,11 +2258,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: @@ -2157,11 +2270,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: @@ -2172,12 +2280,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (tag != RC_LAST) break; case RC_USE_PERS_DICT: - if (ignore_system_lyxrc || - spellchecker_use_pers_dict != system_lyxrc.spellchecker_use_pers_dict) { - os << "\\use_personal_dictionary " - << convert(spellchecker_use_pers_dict) - << '\n'; - } + // obsoleted in 2.0 if (tag != RC_LAST) break; case RC_USE_TOOLTIP: @@ -2187,6 +2290,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) { @@ -2194,27 +2299,30 @@ 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_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 || @@ -2389,6 +2497,63 @@ 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) { + os << "\\default_view_format " << default_view_format << '\n'; + } + if (tag != RC_LAST) + break; case RC_VIEWER: // Ignore it if (tag != RC_LAST) @@ -2422,7 +2587,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << "\" \"" << cit->to << "\" \"\" \"\"\n"; if (tag != RC_LAST) break; - + case RC_COPIER: if (tag == RC_LAST) os << "\n#\n" @@ -2459,6 +2624,176 @@ 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_LABEL_INIT_LENGTH: + 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_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_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_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_LAST: + break; + } +} + + #if 0 string const LyXRC::getDescription(LyXRCTags tag) { @@ -2505,6 +2840,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus)."); break; + case RC_JBIBTEX_COMMAND: + str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX)."); + break; + case RC_BINDFILE: str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories."); break; @@ -2539,12 +2878,6 @@ string const LyXRC::getDescription(LyXRCTags tag) 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; - - case RC_CUSTOM_EXPORT_FORMAT: - break; - case RC_DATE_INSERT_FORMAT: //xgettext:no-c-format str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\"."); @@ -2554,6 +2887,10 @@ string const LyXRC::getDescription(LyXRCTags tag) 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_VIEW_FORMAT: + str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE]."); + break; + case RC_DEFAULT_LANGUAGE: str = _("New documents will be assigned this language."); break; @@ -2594,6 +2931,10 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Define the options of makeindex (cf. man makeindex) or select an alternative compiler. E.g., using xindy/make-rules, the command string would be \"makeindex.sh -m $$lang\"."); break; + case RC_JINDEX_COMMAND: + str = _("Define the options of the index program for PLaTeX (Japanese LaTeX)."); + break; + case RC_NOMENCL_COMMAND: str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options."); break; @@ -2715,11 +3056,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; @@ -2886,10 +3222,6 @@ 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."); - break; - case RC_USE_TOOLTIP: str = _("Enable the automatic appearance of tool tips in the work area."); break;