]> git.lyx.org Git - lyx.git/blobdiff - src/LyXRC.cpp
At least for now, this has to be done differently.
[lyx.git] / src / LyXRC.cpp
index 5750607a1f8193abe354f5a13edbff4c2fd83433..b79d4be6e7c1a1b584fa45b8e1c22d9183eac539 100644 (file)
 
 #include <config.h>
 
-#include <fstream>
-#include <iostream>
-
 #include "LyXRC.h"
 
-#include "Color.h"
+#include "ColorSet.h"
 #include "Converter.h"
 #include "FontEnums.h"
 #include "Format.h"
@@ -41,6 +38,9 @@
 #include "support/os.h"
 #include "support/userinfo.h"
 
+#include <fstream>
+#include <iostream>
+
 using namespace std;
 using namespace lyx::support;
 
@@ -58,8 +58,10 @@ LexerKeyword lyxrcTags[] = {
        { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
        { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
        { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
+       { "\\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 },
@@ -77,12 +79,11 @@ 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 },
@@ -91,14 +92,18 @@ LexerKeyword lyxrcTags[] = {
        { "\\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 },
+       { "\\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 },
@@ -156,11 +161,14 @@ LexerKeyword lyxrcTags[] = {
        { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
        { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
        { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
+       { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
        { "\\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 },
+       { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
+       { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
        { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
        { "\\template_path", LyXRC::RC_TEMPLATEPATH },
        { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
@@ -223,7 +231,7 @@ 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";
@@ -266,6 +274,7 @@ void LyXRC::setDefaults()
        spellchecker_use_alt_lang = false;
        spellchecker_use_pers_dict = false;
        spellchecker_use_esc_chars = false;
+       spellcheck_continuously = false;
        use_kbmap = false;
        rtl_support = true;
        visual_cursor = false;
@@ -287,6 +296,7 @@ void LyXRC::setDefaults()
        tex_allows_spaces = false;
        date_insert_format = "%x";
        cursor_follows_scrollbar = false;
+       scroll_below_document = false;
        mac_like_word_movement = false;
        macro_edit_style = MACRO_EDIT_INLINE_BOX;
        dialogs_iconify_with_main = false;
@@ -306,6 +316,7 @@ void LyXRC::setDefaults()
        full_screen_limit = false;
        full_screen_toolbars = true;
        full_screen_tabbar = true;
+       full_screen_menubar = true;
        full_screen_scrollbar = true;
        full_screen_width = 700;
 
@@ -314,6 +325,7 @@ void LyXRC::setDefaults()
        completion_popup_text = false;
        completion_popup_delay = 2.0;
        completion_popup_after_complete = true;
+       autocorrection_math = false;
        completion_inline_math = true;
        completion_inline_text = false;
        completion_inline_dots = -1;
@@ -549,14 +561,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());
@@ -592,18 +596,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();
@@ -711,6 +745,10 @@ int LyXRC::read(Lexer & lexrc)
                        lexrc >> completion_inline_dots;
                        break;
 
+               case RC_AUTOCORRECTION_MATH:
+                       lexrc >> autocorrection_math;
+                       break;
+
                case RC_COMPLETION_POPUP_DELAY:
                        lexrc >> completion_popup_delay;
                        break;
@@ -815,6 +853,10 @@ int LyXRC::read(Lexer & lexrc)
                        lexrc >> cursor_follows_scrollbar;
                        break;
 
+               case RC_SCROLL_BELOW_DOCUMENT:
+                       lexrc >> scroll_below_document;
+                       break;
+
                case RC_MAC_LIKE_WORD_MOVEMENT:
                        lexrc >> mac_like_word_movement;
                        break;
@@ -871,6 +913,9 @@ int LyXRC::read(Lexer & lexrc)
                case RC_ESC_CHARS:
                        lexrc >> spellchecker_esc_chars;
                        break;
+               case RC_SPELLCHECK_CONTINUOUSLY:
+                       lexrc >> spellcheck_continuously;
+                       break;
                case RC_MAKE_BACKUP:
                        lexrc >> make_backup;
                        break;
@@ -1000,6 +1045,10 @@ int LyXRC::read(Lexer & lexrc)
                        }
                        break;
                }
+               case RC_DEFAULT_VIEW_FORMAT:
+                       lexrc >> default_view_format;
+                       break;
+                       
                case RC_DEFAULT_LANGUAGE:
                        lexrc >> default_language;
                        break;
@@ -1076,6 +1125,9 @@ 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;
@@ -1318,6 +1370,18 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+       case RC_BIBTEX_ALTERNATIVES: {
+               set<string>::const_iterator it = bibtex_alternatives.begin();
+               set<string>::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) {
@@ -1325,6 +1389,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: {
+               set<string>::const_iterator it = index_alternatives.begin();
+               set<string>::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) {
@@ -1332,6 +1415,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) {
@@ -1512,6 +1609,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+       case RC_SCROLL_BELOW_DOCUMENT:
+               if (ignore_system_lyxrc ||
+                   scroll_below_document
+                   != system_lyxrc.scroll_below_document) {
+                       os << "\\scroll_below_document "
+                          << convert<string>(scroll_below_document) << '\n';
+               }
+               if (tag != RC_LAST)
+                       break;
        case RC_MAC_LIKE_WORD_MOVEMENT:
                if (ignore_system_lyxrc ||
                    mac_like_word_movement
@@ -1676,6 +1782,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<string>(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) {
@@ -1866,30 +1981,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";
@@ -1968,6 +2059,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+       case RC_AUTOCORRECTION_MATH:
+               if (ignore_system_lyxrc ||
+                   autocorrection_math != system_lyxrc.autocorrection_math) {
+                       os << "\\autocorrection_math "
+                               << convert<string>(autocorrection_math) << '\n';
+               }
+               if (tag != RC_LAST)
+                       break;
        case RC_COMPLETION_POPUP_DELAY:
                if (ignore_system_lyxrc ||
                    completion_popup_delay != system_lyxrc.completion_popup_delay) {
@@ -2092,6 +2191,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                os << "\n#\n"
                   << "# SPELLCHECKER SECTION ##############################\n"
                   << "#\n\n";
+
        case RC_SPELL_COMMAND:
        case RC_USE_SPELL_LIB:
                // Obsoleted in 2.0
@@ -2181,6 +2281,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# LANGUAGE SUPPORT SECTION ##########################\n"
                   << "#\n\n";
 
+       case RC_SPELLCHECK_CONTINUOUSLY:
+               if (ignore_system_lyxrc ||
+                   spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
+                       os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
+                          << '\n';
+               }
+               if (tag != RC_LAST)
+                       break;
+
        case RC_RTL_SUPPORT:
                if (ignore_system_lyxrc ||
                    rtl_support != system_lyxrc.rtl_support) {
@@ -2345,6 +2454,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                                   << "\" \"\" \"\" \"\" \"\" \"\" \"\"\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)
@@ -2378,7 +2494,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"
@@ -2461,6 +2577,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;
@@ -2483,6 +2603,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_SCROLL_BELOW_DOCUMENT:
+               str = _("LyX normally doesn't allow the user to scroll further than the bottom of the document. Set to true if you prefer to scroll the bottom of the document to the top of the screen");
+               break;
+
        case RC_MAC_LIKE_WORD_MOVEMENT:
                str = _("Use the Mac OS X conventions for the word-level cursor movement");
                break;
@@ -2491,12 +2615,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\".");
@@ -2506,6 +2624,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;
@@ -2546,6 +2668,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;
@@ -2652,6 +2778,10 @@ string const LyXRC::getDescription(LyXRCTags tag)
                str = _("Use \"...\" to shorten long completions.");
                break;
 
+       case RC_AUTOCORRECTION_MATH:
+               str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
+               break;
+
        case RC_NUMLASTFILES:
                str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
                        maxlastfiles);