]> git.lyx.org Git - lyx.git/blobdiff - src/LyXRC.cpp
Protect label in moving argument
[lyx.git] / src / LyXRC.cpp
index 471873d0b7e99afa384d21c2e16383d671f23d9a..d7e83c25a18f747174b9d03a9cbf7dddd1a8fd7f 100644 (file)
@@ -23,6 +23,8 @@
 #include "Converter.h"
 #include "FontEnums.h"
 #include "Format.h"
+#include "FuncCode.h"
+#include "FuncRequest.h"
 #include "Lexer.h"
 #include "LyX.h"
 #include "Mover.h"
@@ -59,8 +61,7 @@ namespace {
 
 // The format should also be updated in configure.py, and conversion code
 // should be added to prefs2prefs_prefs.py.
-static unsigned int const LYXRC_FILEFORMAT = 25; // lasgouttes: remove qimage
-
+static unsigned int const LYXRC_FILEFORMAT = 29; // spitz: remove \\date_insert_format
 // when adding something to this array keep it sorted!
 LexerKeyword lyxrcTags[] = {
        { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
@@ -93,7 +94,6 @@ LexerKeyword lyxrcTags[] = {
        { "\\copier", LyXRC::RC_COPIER },
        { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
        { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
-       { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
        { "\\def_file", LyXRC::RC_DEFFILE },
        { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
        { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT },
@@ -107,7 +107,6 @@ LexerKeyword lyxrcTags[] = {
        { "\\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_FILEFORMAT },
        { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI },
        { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF },
@@ -196,7 +195,6 @@ LexerKeyword lyxrcTags[] = {
        { "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN },
        { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
        { "\\use_native_filedialog", LyXRC::RC_USE_NATIVE_FILEDIALOG },
-       { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
        // compatibility with versions older than 1.4.0 only
        { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
        { "\\use_system_theme_icons", LyXRC::RC_USE_SYSTEM_THEME_ICONS },
@@ -241,7 +239,6 @@ void LyXRC::setDefaults()
        default_platex_view_format = "pdf3";
        chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
        bibtex_command = "automatic";
-       fontenc = "default";
        index_command = "makeindex -c -q";
        nomencl_command = "makeindex -s nomencl.ist";
        pygmentize_command = string();
@@ -284,6 +281,8 @@ void LyXRC::setDefaults()
 // FIXME: this check should test the target platform (darwin)
 #if defined(USE_MACOSX_PACKAGING)
        spellchecker = "native";
+#elif defined(USE_ENCHANT)
+       spellchecker = "enchant";
 #elif defined(USE_ASPELL)
        spellchecker = "aspell";
 #elif defined(USE_HUNSPELL)
@@ -312,7 +311,6 @@ void LyXRC::setDefaults()
        show_banner = true;
        windows_style_tex_paths = false;
        tex_allows_spaces = false;
-       date_insert_format = "%x";
        cursor_follows_scrollbar = false;
        scroll_below_document = false;
        scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
@@ -329,7 +327,6 @@ void LyXRC::setDefaults()
        use_converter_needauth = 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());
@@ -407,6 +404,8 @@ bool LyXRC::read(FileName const & filename, bool check_format)
                lexrc2.setFile(tempfile);
                LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
                retval = read(lexrc2, check_format);
+               if (retval == FormatMismatch)
+                       LYXERR0("Conversion failed for " << filename.absFileName());
        }
        return retval == ReadOK;
 }
@@ -532,10 +531,6 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        }
                        break;
 
-               case RC_FONT_ENCODING:
-                       lexrc >> fontenc;
-                       break;
-
                case RC_PRINTLANDSCAPEFLAG:
                        lexrc >> print_landscape_flag;
                        break;
@@ -882,9 +877,6 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                case RC_USE_TOOLTIP:
                        lexrc >> use_tooltip;
                        break;
-               case RC_USE_PIXMAP_CACHE:
-                       lexrc >> use_pixmap_cache;
-                       break;
                case RC_SPELLCHECKER:
                        lexrc >> spellchecker;
                        break;
@@ -920,9 +912,6 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        if (lexrc.next())
                                default_length_unit = (Length::UNIT) lexrc.getInteger();
                        break;
-               case RC_DATE_INSERT_FORMAT:
-                       lexrc >> date_insert_format;
-                       break;
                case RC_LANGUAGE_CUSTOM_PACKAGE:
                        lexrc >> language_custom_package;
                        break;
@@ -1595,15 +1584,6 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                if (tag != RC_LAST)
                        break;
                // fall through
-       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;
-               // fall through
        case RC_USER_NAME:
                os << "\\user_name \"" << user_name << "\"\n";
                if (tag != RC_LAST)
@@ -2117,18 +2097,9 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                if (tag != RC_LAST)
                        break;
                // fall through
-       case RC_FONT_ENCODING:
-               if (ignore_system_lyxrc ||
-                   fontenc != system_lyxrc.fontenc) {
-                       os << "\\font_encoding \"" << fontenc << "\"\n";
-               }
-               if (tag != RC_LAST)
-                       break;
-
                os << "\n#\n"
                   << "# FILE SECTION ######################################\n"
                   << "#\n\n";
-
        // fall through
        case RC_DOCUMENTPATH:
                if (ignore_system_lyxrc ||
@@ -2440,16 +2411,6 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                if (tag != RC_LAST)
                        break;
                // fall through
-       case RC_USE_PIXMAP_CACHE:
-               if (ignore_system_lyxrc ||
-                   use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
-                       os << "\\use_pixmap_cache "
-                          << convert<string>(use_pixmap_cache)
-                          << '\n';
-               }
-               if (tag != RC_LAST)
-                       break;
-               // fall through
 
                os << "\n#\n"
                   << "# LANGUAGE SUPPORT SECTION ##########################\n"
@@ -2925,7 +2886,6 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        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_GUI_LANGUAGE:
        case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
        case LyXRC::RC_DEFAULT_PLATEX_VIEW_FORMAT:
@@ -2943,7 +2903,6 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_EDITOR_ALTERNATIVES:
        case LyXRC::RC_ESC_CHARS:
        case LyXRC::RC_EXAMPLEPATH:
-       case LyXRC::RC_FONT_ENCODING:
        case LyXRC::RC_FILEFORMAT:
        case LyXRC::RC_GROUP_LAYOUTS:
        case LyXRC::RC_HUNSPELLDIR_PATH:
@@ -2979,12 +2938,20 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_PARAGRAPH_MARKERS:
        case LyXRC::RC_PATH_PREFIX:
                if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
-                       prependEnvPath("PATH", lyxrc_new.path_prefix);
+                       prependEnvPath("PATH", replaceEnvironmentPath(lyxrc_new.path_prefix));
                        // Resets python path
                        support::os::python(true);
                }
                // fall through
        case LyXRC::RC_PREVIEW:
+               if (lyxrc_orig.preview != lyxrc_new.preview) {
+                       // Update all previews of all documents.
+                       /* FIXME: this can be very expensive. It would be cheaper
+                        * to kill all existing previews and update visible
+                        * previews.*/
+                       theBufferList().updatePreviews();
+               }
+               // fall through
        case LyXRC::RC_PREVIEW_HASHED_LABELS:
        case LyXRC::RC_PREVIEW_SCALE_FACTOR:
        case LyXRC::RC_PRINTLANDSCAPEFLAG:
@@ -2993,6 +2960,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_SAVE_COMPRESSED:
        case LyXRC::RC_SAVE_ORIGIN:
        case LyXRC::RC_SCREEN_DPI:
+
        case LyXRC::RC_SCREEN_FONT_ROMAN:
        case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
        case LyXRC::RC_SCREEN_FONT_SANS:
@@ -3001,8 +2969,20 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        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:
+               if (lyxrc_orig.roman_font_name != lyxrc_new.roman_font_name
+               || lyxrc_orig.sans_font_name != lyxrc_new.sans_font_name
+               || lyxrc_orig.typewriter_font_name != lyxrc_new.typewriter_font_name
+               || lyxrc_orig.roman_font_foundry != lyxrc_new.roman_font_foundry
+               || lyxrc_orig.sans_font_foundry != lyxrc_new.sans_font_foundry
+               || lyxrc_orig.use_scalable_fonts != lyxrc_new.use_scalable_fonts
+               || lyxrc_orig.font_sizes != lyxrc_new.font_sizes
+               || lyxrc_orig.typewriter_font_foundry != lyxrc_new.typewriter_font_foundry
+               || lyxrc_orig.defaultZoom != lyxrc_new.defaultZoom) {
+                       dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
+               }
+               // fall through
+       case LyXRC::RC_GEOMETRY_SESSION:
        case LyXRC::RC_SERVERPIPE:
        case LyXRC::RC_SET_COLOR:
        case LyXRC::RC_SHOW_BANNER:
@@ -3033,7 +3013,6 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_USE_NATIVE_FILEDIALOG:
        case LyXRC::RC_USE_SYSTEM_COLORS:
        case LyXRC::RC_USE_TOOLTIP:
-       case LyXRC::RC_USE_PIXMAP_CACHE:
        case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
        case LyXRC::RC_VIEWDVI_PAPEROPTION:
        case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
@@ -3062,6 +3041,15 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
 }
 
 
+set<string> LyXRC::getRCs()
+{
+       set<string> res;
+       for (int i = 0; i != lyxrcCount; ++i)
+               res.insert(ltrim(lyxrcTags[i].tag, "\\"));
+       return res;
+}
+
+
 #if 0
 string const LyXRC::getDescription(LyXRCTags tag)
 {
@@ -3157,11 +3145,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_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\".");
-               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;
@@ -3194,10 +3177,6 @@ string const LyXRC::getDescription(LyXRCTags tag)
                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;
-
        case RC_FILEFORMAT:
                break;
 
@@ -3447,10 +3426,6 @@ string const LyXRC::getDescription(LyXRCTags tag)
                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_VIEWDVI_PAPEROPTION:
                _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
                break;