]> git.lyx.org Git - lyx.git/blobdiff - src/LyXRC.cpp
Fix PDF output of clipped graphics with recent graphics package
[lyx.git] / src / LyXRC.cpp
index 0221cba3969ea669a56a94ccb9e4671ce3137429..e98eae5cf08cd3110e510e2e4d4c3df965a9d030 100644 (file)
@@ -18,6 +18,7 @@
 
 #include "LyXRC.h"
 
+#include "BufferList.h"
 #include "ColorSet.h"
 #include "Converter.h"
 #include "FontEnums.h"
@@ -58,7 +59,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 = 19; // rgh: remove print support
+static unsigned int const LYXRC_FILEFORMAT = 23; // spitz: default_platex_view_format
 
 // when adding something to this array keep it sorted!
 LexerKeyword lyxrcTags[] = {
@@ -97,6 +98,7 @@ LexerKeyword lyxrcTags[] = {
        { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
        { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT },
        { "\\default_otf_view_format", LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT },
+       { "\\default_platex_view_format", LyXRC::RC_DEFAULT_PLATEX_VIEW_FORMAT },
        { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
        { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
        { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
@@ -123,6 +125,7 @@ LexerKeyword lyxrcTags[] = {
        { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
        { "\\index_command", LyXRC::RC_INDEX_COMMAND },
        { "\\input", LyXRC::RC_INPUT },
+       { "\\jbibtex_alternatives", LyXRC::RC_JBIBTEX_ALTERNATIVES },
        { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
        { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
        { "\\kbmap", LyXRC::RC_KBMAP },
@@ -156,6 +159,7 @@ LexerKeyword lyxrcTags[] = {
        { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
        { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
        { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
+       { "\\pygmentize_command", LyXRC::RC_PYGMENTIZE_COMMAND },
        { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
        { "\\save_origin", LyXRC::RC_SAVE_ORIGIN },
        { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
@@ -188,6 +192,8 @@ LexerKeyword lyxrcTags[] = {
        { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
        { "\\ui_file", LyXRC::RC_UIFILE },
        { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
+       { "\\use_converter_needauth", LyXRC::RC_USE_CONVERTER_NEEDAUTH },
+       { "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN },
        { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
        { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
        { "\\use_qimage", LyXRC::RC_USE_QIMAGE },
@@ -207,7 +213,7 @@ LexerKeyword lyxrcTags[] = {
 
 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
 
-} // namespace anon
+} // namespace
 
 
 LyXRC::LyXRC()
@@ -232,14 +238,17 @@ void LyXRC::setDefaults()
        view_dvi_paper_option.erase();
        default_view_format = "pdf2";
        default_otf_view_format = "pdf4";
+       default_platex_view_format = "pdf3";
        chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
-       bibtex_command = "bibtex";
+       bibtex_command = "automatic";
        fontenc = "default";
        index_command = "makeindex -c -q";
        nomencl_command = "makeindex -s nomencl.ist";
+       pygmentize_command = string();
        dpi = 75;
        // Because a screen is typically wider than a piece of paper:
-       zoom = 150;
+       defaultZoom = 150;
+       currentZoom = defaultZoom;
        allow_geometry_session = true;
        // Default LaTeX font size:
        font_sizes[FONT_SIZE_TINY] = "5.0";
@@ -261,7 +270,7 @@ void LyXRC::setDefaults()
        auto_reset_options = false;
        plaintext_linelen = 65;
        mouse_wheel_speed = 1.0;
-       num_lastfiles = maxlastfiles;
+       num_lastfiles = 20;
        check_lastfiles = true;
        use_lastfilepos = true;
        load_session = false;
@@ -315,6 +324,8 @@ void LyXRC::setDefaults()
        preview_hashed_labels  = false;
        preview_scale_factor = 1.0;
        use_converter_cache = true;
+       use_converter_needauth_forbidden = true;
+       use_converter_needauth = true;
        use_system_colors = false;
        use_tooltip = true;
        use_pixmap_cache = false;
@@ -334,6 +345,7 @@ void LyXRC::setDefaults()
        full_screen_toolbars = true;
        full_screen_tabbar = true;
        full_screen_menubar = true;
+       full_screen_statusbar = true;
        full_screen_scrollbar = true;
        full_screen_width = 700;
 
@@ -367,7 +379,7 @@ void oldFontFormat(string & family, string & foundry)
                foundry.erase();
 }
 
-} // namespace anon
+} // namespace
 
 
 bool LyXRC::read(FileName const & filename, bool check_format)
@@ -450,7 +462,7 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                                FileName const tmp =
                                        libFileSearch(string(),
                                                      lexrc.getString());
-                               if (read(tmp, check_format)) {
+                               if (!read(tmp, check_format)) {
                                        lexrc.printError(
                                            "Error reading included file: " + tmp.absFileName());
                                }
@@ -536,6 +548,12 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        lexrc >> print_paper_flag;
                        break;
 
+               case RC_PYGMENTIZE_COMMAND:
+                       if (lexrc.next(true)) {
+                               pygmentize_command = lexrc.getString();
+                       }
+                       break;
+
                case RC_VIEWDVI_PAPEROPTION:
                        if (lexrc.next())
                                view_dvi_paper_option = lexrc.getString();
@@ -567,6 +585,12 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        }
                        break;
 
+               case RC_JBIBTEX_ALTERNATIVES:
+                       if (lexrc.next(true)) {
+                               jbibtex_alternatives.insert(lexrc.getString());
+                       }
+                       break;
+
                case RC_INDEX_ALTERNATIVES:
                        if (lexrc.next(true)) {
                                index_alternatives.insert(lexrc.getString());
@@ -602,7 +626,9 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        break;
 
                case RC_SCREEN_ZOOM:
-                       lexrc >> zoom;
+                       lexrc >> defaultZoom;
+                       if (defaultZoom < 10)
+                               defaultZoom = 10;
                        break;
 
                case RC_GEOMETRY_SESSION:
@@ -631,45 +657,33 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        break;
 
                case RC_DOCUMENTPATH:
-                       if (lexrc.next()) {
+                       if (lexrc.next())
                                document_path = os::internal_path(lexrc.getString());
-                               document_path = expandPath(document_path);
-                       }
                        break;
 
                case RC_EXAMPLEPATH:
-                       if (lexrc.next()) {
+                       if (lexrc.next())
                                example_path = os::internal_path(lexrc.getString());
-                               example_path = expandPath(example_path);
-                       }
                        break;
 
                case RC_TEMPLATEPATH:
-                       if (lexrc.next()) {
+                       if (lexrc.next())
                                template_path = os::internal_path(lexrc.getString());
-                               template_path = expandPath(template_path);
-                       }
                        break;
 
                case RC_TEMPDIRPATH:
-                       if (lexrc.next()) {
+                       if (lexrc.next())
                                tempdir_path = os::internal_path(lexrc.getString());
-                               tempdir_path = expandPath(tempdir_path);
-                       }
                        break;
 
                case RC_THESAURUSDIRPATH:
-                       if (lexrc.next()) {
+                       if (lexrc.next())
                                thesaurusdir_path = os::internal_path(lexrc.getString());
-                               thesaurusdir_path = expandPath(thesaurusdir_path);
-                       }
                        break;
 
                case RC_HUNSPELLDIR_PATH:
-                       if (lexrc.next()) {
+                       if (lexrc.next())
                                hunspelldir_path = os::internal_path(lexrc.getString());
-                               hunspelldir_path = expandPath(hunspelldir_path);
-                       }
                        break;
 
                case RC_USELASTFILEPOS:
@@ -810,10 +824,8 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        break;
 
                case RC_SERVERPIPE:
-                       if (lexrc.next()) {
+                       if (lexrc.next())
                                lyxpipes = os::internal_path(lexrc.getString());
-                               lyxpipes = expandPath(lyxpipes);
-                       }
                        break;
 
                case RC_CURSOR_FOLLOWS_SCROLLBAR:
@@ -898,10 +910,8 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        lexrc >> save_origin;
                        break;
                case RC_BACKUPDIR_PATH:
-                       if (lexrc.next()) {
+                       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;
@@ -995,16 +1005,17 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                case RC_VIEWER: {
                        string format, command;
                        lexrc >> format >> command;
-                       formats.setViewer(format, command);
+                       theFormats().setViewer(format, command);
                        break;
                }
                case RC_FILEFORMAT: {
                        bool ok = true;
-                       string format, extensions, prettyname, shortcut;
+                       string format, extensions, shortcut;
+                       docstring prettyname;
                        if (!(lexrc >> format >> extensions))
                                ok = false;
                        if (ok && lexrc.next(true))
-                               prettyname  = lexrc.getString();
+                               prettyname = lexrc.getDocString();
                        else
                                ok = false;
                        if (ok)
@@ -1045,25 +1056,27 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                                if (theConverters().formatIsUsed(format))
                                        LYXERR0("Can't delete format " << format);
                                else
-                                       formats.erase(format);
+                                       theFormats().erase(format);
                        } else {
-                               formats.add(format, extensions, prettyname,
+                               theFormats().add(format, extensions, prettyname,
                                            shortcut, viewer, editor, mime, flgs);
                        }
                        break;
                }
                case RC_VIEWER_ALTERNATIVES:  {
                        string format, command;
-                       lexrc >> format;
-                       lexrc >> command;
-                       viewer_alternatives[format].insert(command);
+                       if ((lexrc >> format) && lexrc.next(true)) {
+                               command  = lexrc.getString();
+                               viewer_alternatives[format].insert(command);
+                       }
                        break;
                }
                case RC_EDITOR_ALTERNATIVES:  {
                        string format, command;
-                       lexrc >> format;
-                       lexrc >> command;
-                       editor_alternatives[format].insert(command);
+                       if ((lexrc >> format) && lexrc.next(true)) {
+                               command  = lexrc.getString();
+                               editor_alternatives[format].insert(command);
+                       }
                        break;
                }
 
@@ -1071,6 +1084,10 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                        lexrc >> default_otf_view_format;
                        break;
 
+               case RC_DEFAULT_PLATEX_VIEW_FORMAT:
+                       lexrc >> default_platex_view_format;
+                       break;
+
                case RC_DEFAULT_VIEW_FORMAT:
                        lexrc >> default_view_format;
                        break;
@@ -1121,6 +1138,12 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
                case RC_USE_CONVERTER_CACHE:
                        lexrc >> use_converter_cache;
                        break;
+               case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
+                       lexrc >> use_converter_needauth_forbidden;
+                       break;
+               case RC_USE_CONVERTER_NEEDAUTH:
+                       lexrc >> use_converter_needauth;
+                       break;
                case RC_CONVERTER_CACHE_MAXAGE:
                        lexrc >> converter_cache_maxage;
                        break;
@@ -1219,8 +1242,9 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
        }
 
        /// Update converters data-structures
-       theConverters().update(formats);
+       theConverters().update(theFormats());
        theConverters().buildGraph();
+       theBufferList().invalidateConverterCache();
 
        return ReadOK;
 }
@@ -1269,7 +1293,7 @@ namespace {
                             "\"", "\\\"");
        }
 
-}
+} // namespace
 
 
 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
@@ -1306,7 +1330,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_DEFFILE:
                if (ignore_system_lyxrc ||
                    def_file != system_lyxrc.def_file) {
@@ -1323,7 +1347,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# MISC SECTION ######################################\n"
                   << "#\n\n";
                // bind files are not done here.
-
+               // fall through
        case RC_PATH_PREFIX:
                if (ignore_system_lyxrc ||
                    path_prefix != system_lyxrc.path_prefix) {
@@ -1331,6 +1355,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_UIFILE:
                if (ignore_system_lyxrc ||
                    ui_file != system_lyxrc.ui_file) {
@@ -1339,6 +1364,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_AUTOREGIONDELETE:
                if (ignore_system_lyxrc ||
                    auto_region_delete != system_lyxrc.auto_region_delete) {
@@ -1349,6 +1375,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_AUTORESET_OPTIONS:
                if (ignore_system_lyxrc ||
                    auto_reset_options != system_lyxrc.auto_reset_options) {
@@ -1360,6 +1387,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_AUTOSAVE:
                if (ignore_system_lyxrc ||
                    autosave != system_lyxrc.autosave) {
@@ -1368,6 +1396,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_DISPLAY_GRAPHICS:
                if (ignore_system_lyxrc ||
                    display_graphics != system_lyxrc.display_graphics) {
@@ -1379,6 +1408,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SORT_LAYOUTS:
                if (ignore_system_lyxrc ||
                    sort_layouts != system_lyxrc.sort_layouts) {
@@ -1387,6 +1417,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_GROUP_LAYOUTS:
                if (ignore_system_lyxrc ||
                    group_layouts != system_lyxrc.group_layouts) {
@@ -1395,6 +1426,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_VIEWDVI_PAPEROPTION:
                if (ignore_system_lyxrc ||
                    view_dvi_paper_option
@@ -1406,6 +1438,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_CHKTEX_COMMAND:
                if (ignore_system_lyxrc ||
                    chktex_command != system_lyxrc.chktex_command) {
@@ -1413,6 +1446,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_BIBTEX_ALTERNATIVES: {
                CommandSet::const_iterator it = bibtex_alternatives.begin();
                CommandSet::const_iterator end = bibtex_alternatives.end();
@@ -1425,6 +1459,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                if (tag != RC_LAST)
                        break;
        }
+       // fall through
        case RC_BIBTEX_COMMAND:
                if (ignore_system_lyxrc ||
                    bibtex_command != system_lyxrc.bibtex_command) {
@@ -1432,6 +1467,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_JBIBTEX_COMMAND:
                if (ignore_system_lyxrc ||
                    jbibtex_command != system_lyxrc.jbibtex_command) {
@@ -1439,6 +1475,20 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
+       case RC_JBIBTEX_ALTERNATIVES: {
+               CommandSet::const_iterator it = jbibtex_alternatives.begin();
+               CommandSet::const_iterator end = jbibtex_alternatives.end();
+               for ( ; it != end; ++it) {
+                       if (ignore_system_lyxrc
+                           || !system_lyxrc.jbibtex_alternatives.count(*it))
+                               os << "\\jbibtex_alternatives \""
+                                  << *it << "\"\n";
+               }
+               if (tag != RC_LAST)
+                       break;
+       }
+       // fall through
        case RC_INDEX_ALTERNATIVES: {
                CommandSet::const_iterator it = index_alternatives.begin();
                CommandSet::const_iterator end = index_alternatives.end();
@@ -1451,6 +1501,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                if (tag != RC_LAST)
                        break;
        }
+       // fall through
        case RC_INDEX_COMMAND:
                if (ignore_system_lyxrc ||
                    index_command != system_lyxrc.index_command) {
@@ -1458,6 +1509,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_JINDEX_COMMAND:
                if (ignore_system_lyxrc ||
                    jindex_command != system_lyxrc.jindex_command) {
@@ -1465,6 +1517,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SPLITINDEX_COMMAND:
                if (ignore_system_lyxrc ||
                    splitindex_command != system_lyxrc.splitindex_command) {
@@ -1472,6 +1525,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_NOMENCL_COMMAND:
                if (ignore_system_lyxrc ||
                    nomencl_command != system_lyxrc.nomencl_command) {
@@ -1479,6 +1533,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
+       case RC_PYGMENTIZE_COMMAND:
+               if (ignore_system_lyxrc ||
+                   pygmentize_command != system_lyxrc.pygmentize_command) {
+                       os << "\\pygmentize_command \"" << escapeCommand(pygmentize_command) << "\"\n";
+               }
+               if (tag != RC_LAST)
+                       break;
+               // fall through
        case RC_TEX_EXPECTS_WINDOWS_PATHS:
                // Don't write this setting to the preferences file,
                // but allow temporary changes (bug 7557).
@@ -1488,6 +1551,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_TEX_ALLOWS_SPACES:
                if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
                        os << "\\tex_allows_spaces "
@@ -1495,6 +1559,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_KBMAP:
                if (ignore_system_lyxrc ||
                    use_kbmap != system_lyxrc.use_kbmap) {
@@ -1502,6 +1567,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_KBMAP_PRIMARY:
                if (ignore_system_lyxrc ||
                    primary_kbmap != system_lyxrc.primary_kbmap) {
@@ -1510,6 +1576,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_KBMAP_SECONDARY:
                if (ignore_system_lyxrc ||
                    secondary_kbmap != system_lyxrc.secondary_kbmap) {
@@ -1518,6 +1585,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SERVERPIPE:
                if (ignore_system_lyxrc ||
                    lyxpipes != system_lyxrc.lyxpipes) {
@@ -1526,6 +1594,7 @@ 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) {
@@ -1534,17 +1603,17 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_USER_NAME:
                os << "\\user_name \"" << user_name << "\"\n";
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_USER_EMAIL:
                os << "\\user_email \"" << user_email << "\"\n";
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_SHOW_BANNER:
                if (ignore_system_lyxrc ||
                    show_banner != system_lyxrc.show_banner) {
@@ -1552,7 +1621,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_PREVIEW:
                if (ignore_system_lyxrc ||
                    preview != system_lyxrc.preview) {
@@ -1572,7 +1641,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_PREVIEW_HASHED_LABELS:
                if (ignore_system_lyxrc ||
                    preview_hashed_labels !=
@@ -1582,7 +1651,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_PREVIEW_SCALE_FACTOR:
                if (ignore_system_lyxrc ||
                    preview_scale_factor != system_lyxrc.preview_scale_factor) {
@@ -1591,7 +1660,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_USE_CONVERTER_CACHE:
                if (ignore_system_lyxrc ||
                    use_converter_cache != system_lyxrc.use_converter_cache) {
@@ -1600,7 +1669,25 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
+       case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
+               if (ignore_system_lyxrc ||
+                   use_converter_needauth_forbidden != system_lyxrc.use_converter_needauth_forbidden) {
+                       os << "\\use_converter_needauth_forbidden "
+                          << convert<string>(use_converter_needauth_forbidden) << '\n';
+               }
+               if (tag != RC_LAST)
+                       break;
+               // fall through
+       case RC_USE_CONVERTER_NEEDAUTH:
+               if (ignore_system_lyxrc ||
+                   use_converter_needauth != system_lyxrc.use_converter_needauth) {
+                       os << "\\use_converter_needauth "
+                          << convert<string>(use_converter_needauth) << '\n';
+               }
+               if (tag != RC_LAST)
+                       break;
+               // fall through
        case RC_CONVERTER_CACHE_MAXAGE:
                if (ignore_system_lyxrc ||
                    converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
@@ -1613,7 +1700,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                os << "\n#\n"
                   << "# SCREEN & FONTS SECTION ############################\n"
                   << "#\n\n";
-
+               // fall through
        case RC_ICON_SET:
                if (ignore_system_lyxrc ||
                    icon_set != system_lyxrc.icon_set) {
@@ -1622,7 +1709,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_USE_SYSTEM_THEME_ICONS:
                if (ignore_system_lyxrc ||
                          use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
@@ -1632,7 +1719,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_SCREEN_DPI:
                if (ignore_system_lyxrc ||
                    dpi != system_lyxrc.dpi) {
@@ -1640,13 +1727,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_ZOOM:
                if (ignore_system_lyxrc ||
-                   zoom != system_lyxrc.zoom) {
-                       os << "\\screen_zoom " << zoom << '\n';
+                   defaultZoom != system_lyxrc.defaultZoom) {
+                       os << "\\screen_zoom " << defaultZoom << '\n';
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_GEOMETRY_SESSION:
                if (ignore_system_lyxrc ||
                    allow_geometry_session != system_lyxrc.allow_geometry_session) {
@@ -1655,6 +1744,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_CURSOR_FOLLOWS_SCROLLBAR:
                if (ignore_system_lyxrc ||
                    cursor_follows_scrollbar
@@ -1664,6 +1754,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_CURSOR_WIDTH:
                if (ignore_system_lyxrc ||
                        cursor_width
@@ -1673,6 +1764,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCROLL_BELOW_DOCUMENT:
                if (ignore_system_lyxrc ||
                    scroll_below_document
@@ -1682,6 +1774,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_PARAGRAPH_MARKERS:
                if (ignore_system_lyxrc ||
                        paragraph_markers
@@ -1691,6 +1784,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_MAC_DONTSWAP_CTRL_META:
                if (ignore_system_lyxrc ||
                    mac_dontswap_ctrl_meta
@@ -1700,6 +1794,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_MAC_LIKE_CURSOR_MOVEMENT:
                if (ignore_system_lyxrc ||
                    mac_like_cursor_movement
@@ -1709,6 +1804,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_MACRO_EDIT_STYLE:
                if (ignore_system_lyxrc ||
                    macro_edit_style
@@ -1722,6 +1818,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_DIALOGS_ICONIFY_WITH_MAIN:
                if (ignore_system_lyxrc ||
                    dialogs_iconify_with_main
@@ -1731,6 +1828,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_FONT_ROMAN:
                if (ignore_system_lyxrc ||
                    roman_font_name != system_lyxrc.roman_font_name) {
@@ -1739,6 +1837,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_FONT_ROMAN_FOUNDRY:
                if (ignore_system_lyxrc ||
                    roman_font_foundry != system_lyxrc.roman_font_foundry) {
@@ -1747,6 +1846,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_FONT_SANS:
                if (ignore_system_lyxrc ||
                    sans_font_name != system_lyxrc.sans_font_name) {
@@ -1755,6 +1855,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_FONT_SANS_FOUNDRY:
                if (ignore_system_lyxrc ||
                    sans_font_foundry != system_lyxrc.sans_font_foundry) {
@@ -1763,6 +1864,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_FONT_TYPEWRITER:
                if (ignore_system_lyxrc ||
                    typewriter_font_name != system_lyxrc.typewriter_font_name) {
@@ -1771,6 +1873,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
                if (ignore_system_lyxrc ||
                    typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
@@ -1779,7 +1882,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_SCREEN_FONT_SCALABLE:
                if (ignore_system_lyxrc ||
                    use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
@@ -1789,6 +1892,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SCREEN_FONT_SIZES:
                if (ignore_system_lyxrc ||
                    font_sizes[FONT_SIZE_TINY]
@@ -1831,6 +1935,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FULL_SCREEN_LIMIT:
                if (ignore_system_lyxrc ||
                    full_screen_limit != system_lyxrc.full_screen_limit) {
@@ -1840,6 +1945,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FULL_SCREEN_TOOLBARS:
                if (ignore_system_lyxrc ||
                    full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
@@ -1849,6 +1955,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FULL_SCREEN_SCROLLBAR:
                if (ignore_system_lyxrc ||
                    full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
@@ -1858,6 +1965,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FULL_SCREEN_STATUSBAR:
                if (ignore_system_lyxrc ||
                    full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
@@ -1867,6 +1975,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FULL_SCREEN_TABBAR:
                if (ignore_system_lyxrc ||
                    full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
@@ -1876,6 +1985,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FULL_SCREEN_MENUBAR:
                if (ignore_system_lyxrc ||
                    full_screen_menubar != system_lyxrc.full_screen_menubar) {
@@ -1885,6 +1995,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FULL_SCREEN_WIDTH:
                if (ignore_system_lyxrc ||
                    full_screen_width != system_lyxrc.full_screen_width) {
@@ -1894,6 +2005,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_OPEN_BUFFERS_IN_TABS:
                if (ignore_system_lyxrc ||
                    open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
@@ -1903,6 +2015,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SINGLE_CLOSE_TAB_BUTTON:
                if (ignore_system_lyxrc ||
                    single_close_tab_button != system_lyxrc.single_close_tab_button) {
@@ -1912,6 +2025,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SINGLE_INSTANCE:
                if (ignore_system_lyxrc ||
                    single_instance != system_lyxrc.single_instance) {
@@ -1921,6 +2035,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FORWARD_SEARCH_DVI:
                if (ignore_system_lyxrc ||
                    forward_search_dvi != system_lyxrc.forward_search_dvi) {
@@ -1928,6 +2043,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_FORWARD_SEARCH_PDF:
                if (ignore_system_lyxrc ||
                    forward_search_pdf != system_lyxrc.forward_search_pdf) {
@@ -1940,6 +2056,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                        << "# COLOR SECTION ###################################\n"
                        << "#\n\n";
 
+       // fall through
        case RC_SET_COLOR:
                for (int i = 0; i < Color_ignore; ++i) {
                        ColorCode lc = static_cast<ColorCode>(i);
@@ -1958,6 +2075,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                 << "# PRINTER SECTION ###################################\n"
                 << "#\n\n";
 
+       // fall through
        case RC_PRINTLANDSCAPEFLAG:
                if (ignore_system_lyxrc ||
                    print_landscape_flag != system_lyxrc.print_landscape_flag) {
@@ -1966,7 +2084,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_PRINTPAPERFLAG:
                if (ignore_system_lyxrc ||
                    print_paper_flag != system_lyxrc.print_paper_flag) {
@@ -1975,7 +2093,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_PRINTPAPERDIMENSIONFLAG:
                if (ignore_system_lyxrc ||
                    print_paper_dimension_flag
@@ -1990,6 +2108,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                 << "# TEX SECTION #######################################\n"
                 << "#\n\n";
 
+       // fall through
        case RC_TEXINPUTS_PREFIX:
                if (ignore_system_lyxrc ||
                    texinputs_prefix != system_lyxrc.texinputs_prefix) {
@@ -1997,7 +2116,7 @@ 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) {
@@ -2010,6 +2129,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# FILE SECTION ######################################\n"
                   << "#\n\n";
 
+       // fall through
        case RC_DOCUMENTPATH:
                if (ignore_system_lyxrc ||
                    document_path != system_lyxrc.document_path) {
@@ -2018,6 +2138,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_USELASTFILEPOS:
                if (ignore_system_lyxrc ||
                    use_lastfilepos != system_lyxrc.use_lastfilepos) {
@@ -2026,6 +2147,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LOADSESSION:
                if (ignore_system_lyxrc ||
                    load_session != system_lyxrc.load_session) {
@@ -2034,6 +2156,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_MOUSE_WHEEL_SPEED:
                if (ignore_system_lyxrc ||
                    mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
@@ -2041,6 +2164,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_MOUSE_MIDDLEBUTTON_PASTE:
                if (ignore_system_lyxrc ||
                    mouse_middlebutton_paste != system_lyxrc.mouse_middlebutton_paste) {
@@ -2049,6 +2173,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_INLINE_DELAY:
                if (ignore_system_lyxrc ||
                    completion_inline_delay != system_lyxrc.completion_inline_delay) {
@@ -2056,6 +2181,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_INLINE_MATH:
                if (ignore_system_lyxrc ||
                    completion_inline_math != system_lyxrc.completion_inline_math) {
@@ -2064,6 +2190,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_INLINE_TEXT:
                if (ignore_system_lyxrc ||
                    completion_inline_text != system_lyxrc.completion_inline_text) {
@@ -2072,6 +2199,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_INLINE_DOTS:
                if (ignore_system_lyxrc ||
                    completion_inline_dots != system_lyxrc.completion_inline_dots) {
@@ -2080,6 +2208,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_AUTOCORRECTION_MATH:
                if (ignore_system_lyxrc ||
                    autocorrection_math != system_lyxrc.autocorrection_math) {
@@ -2088,6 +2217,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_POPUP_DELAY:
                if (ignore_system_lyxrc ||
                    completion_popup_delay != system_lyxrc.completion_popup_delay) {
@@ -2095,6 +2225,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_POPUP_MATH:
                if (ignore_system_lyxrc ||
                    completion_popup_math != system_lyxrc.completion_popup_math) {
@@ -2103,6 +2234,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_POPUP_TEXT:
                if (ignore_system_lyxrc ||
                    completion_popup_text != system_lyxrc.completion_popup_text) {
@@ -2111,6 +2243,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_CURSOR_TEXT:
                if (ignore_system_lyxrc ||
                    completion_cursor_text != system_lyxrc.completion_cursor_text) {
@@ -2119,6 +2252,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_POPUP_AFTER_COMPLETE:
                if (ignore_system_lyxrc ||
                    completion_popup_after_complete
@@ -2128,6 +2262,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_COMPLETION_MINLENGTH:
                if (ignore_system_lyxrc ||
                        completion_minlength != system_lyxrc.completion_minlength) {
@@ -2136,14 +2271,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
-               case RC_NUMLASTFILES:
+               // fall through
+       case RC_NUMLASTFILES:
                if (ignore_system_lyxrc ||
                    num_lastfiles != system_lyxrc.num_lastfiles) {
                        os << "\\num_lastfiles " << num_lastfiles << '\n';
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_CHECKLASTFILES:
                if (ignore_system_lyxrc ||
                    check_lastfiles != system_lyxrc.check_lastfiles) {
@@ -2152,6 +2288,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_EXAMPLEPATH:
                if (ignore_system_lyxrc ||
                    example_path != system_lyxrc.example_path) {
@@ -2160,6 +2297,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_TEMPLATEPATH:
                if (ignore_system_lyxrc ||
                    template_path != system_lyxrc.template_path) {
@@ -2168,6 +2306,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_TEMPDIRPATH:
                if (ignore_system_lyxrc ||
                    tempdir_path != system_lyxrc.tempdir_path) {
@@ -2176,6 +2315,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_THESAURUSDIRPATH:
                if (ignore_system_lyxrc ||
                    thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
@@ -2184,6 +2324,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_HUNSPELLDIR_PATH:
                if (ignore_system_lyxrc ||
                    hunspelldir_path != system_lyxrc.hunspelldir_path) {
@@ -2192,6 +2333,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_PLAINTEXT_LINELEN:
                if (ignore_system_lyxrc ||
                    plaintext_linelen != system_lyxrc.plaintext_linelen) {
@@ -2199,6 +2341,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_MAKE_BACKUP:
                if (ignore_system_lyxrc ||
                    make_backup != system_lyxrc.make_backup) {
@@ -2206,6 +2349,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SAVE_COMPRESSED:
                if (ignore_system_lyxrc ||
                    save_compressed != system_lyxrc.save_compressed) {
@@ -2213,6 +2357,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_SAVE_ORIGIN:
                if (ignore_system_lyxrc ||
                    save_origin != system_lyxrc.save_origin) {
@@ -2220,6 +2365,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_BACKUPDIR_PATH:
                if (ignore_system_lyxrc ||
                    backupdir_path != system_lyxrc.backupdir_path) {
@@ -2237,6 +2383,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# SPELLCHECKER SECTION ##############################\n"
                   << "#\n\n";
 
+       // fall through
        case RC_ACCEPT_COMPOUND:
                if (ignore_system_lyxrc ||
                    spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
@@ -2245,6 +2392,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_ALT_LANG:
                if (ignore_system_lyxrc ||
                    spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
@@ -2253,6 +2401,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_ESC_CHARS:
                if (ignore_system_lyxrc ||
                    spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
@@ -2260,6 +2409,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_USE_SYSTEM_COLORS:
                if (ignore_system_lyxrc ||
                    use_system_colors != system_lyxrc.use_system_colors) {
@@ -2269,6 +2419,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_USE_TOOLTIP:
                if (ignore_system_lyxrc ||
                    use_tooltip != system_lyxrc.use_tooltip) {
@@ -2278,6 +2429,7 @@ 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) {
@@ -2287,6 +2439,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_USE_QIMAGE:
                if (ignore_system_lyxrc ||
                    use_qimage != system_lyxrc.use_qimage) {
@@ -2301,6 +2454,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# LANGUAGE SUPPORT SECTION ##########################\n"
                   << "#\n\n";
 
+       // fall through
        case RC_DEFAULT_DECIMAL_POINT:
                if (ignore_system_lyxrc ||
                    default_decimal_point != system_lyxrc.default_decimal_point) {
@@ -2308,7 +2462,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_DEFAULT_LENGTH_UNIT:
                if (ignore_system_lyxrc ||
                    default_length_unit != system_lyxrc.default_length_unit) {
@@ -2316,7 +2470,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_SPELLCHECKER:
                if (ignore_system_lyxrc ||
                    spellchecker != system_lyxrc.spellchecker) {
@@ -2324,7 +2478,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_SPELLCHECK_CONTINUOUSLY:
                if (ignore_system_lyxrc ||
                    spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
@@ -2333,7 +2487,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_SPELLCHECK_NOTES:
                if (ignore_system_lyxrc ||
                    spellcheck_notes != system_lyxrc.spellcheck_notes) {
@@ -2342,7 +2496,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_VISUAL_CURSOR:
                if (ignore_system_lyxrc ||
                        visual_cursor != system_lyxrc.visual_cursor) {
@@ -2350,6 +2504,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
                if (ignore_system_lyxrc ||
                        close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
@@ -2358,6 +2513,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_CUSTOM_PACKAGE:
                if (ignore_system_lyxrc ||
                    language_custom_package != system_lyxrc.language_custom_package) {
@@ -2366,6 +2522,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_GLOBAL_OPTIONS:
                if (ignore_system_lyxrc ||
                    language_global_options
@@ -2376,6 +2533,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_PACKAGE_SELECTION:
                if (ignore_system_lyxrc ||
                    language_package_selection != system_lyxrc.language_package_selection) {
@@ -2397,6 +2555,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_COMMAND_BEGIN:
                if (ignore_system_lyxrc ||
                    language_command_begin
@@ -2407,6 +2566,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_COMMAND_END:
                if (ignore_system_lyxrc ||
                    language_command_end
@@ -2416,6 +2576,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_COMMAND_LOCAL:
                if (ignore_system_lyxrc ||
                    language_command_local
@@ -2426,6 +2587,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_AUTO_BEGIN:
                if (ignore_system_lyxrc ||
                    language_auto_begin != system_lyxrc.language_auto_begin) {
@@ -2434,6 +2596,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_LANGUAGE_AUTO_END:
                if (ignore_system_lyxrc ||
                    language_auto_end != system_lyxrc.language_auto_end) {
@@ -2442,6 +2605,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_MARK_FOREIGN_LANGUAGE:
                if (ignore_system_lyxrc ||
                    mark_foreign_language
@@ -2456,6 +2620,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# 2nd MISC SUPPORT SECTION ##########################\n"
                   << "#\n\n";
 
+       // fall through
        case RC_AUTO_NUMBER:
                if (ignore_system_lyxrc ||
                    auto_number != system_lyxrc.auto_number) {
@@ -2463,6 +2628,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_GUI_LANGUAGE:
                if (ignore_system_lyxrc ||
                    gui_language != system_lyxrc.gui_language) {
@@ -2470,6 +2636,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_EXPORT_OVERWRITE:
                if (ignore_system_lyxrc ||
                    export_overwrite != system_lyxrc.export_overwrite) {
@@ -2489,7 +2656,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_SCROLL_WHEEL_ZOOM:
                if (ignore_system_lyxrc ||
                        scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
@@ -2517,12 +2684,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# FORMATS SECTION ##########################\n"
                   << "#\n\n";
 
+       // fall through
        case RC_FILEFORMAT:
                // New/modified formats
-               for (Formats::const_iterator cit = formats.begin();
-                    cit != formats.end(); ++cit) {
+               for (Formats::const_iterator cit = theFormats().begin();
+                    cit != theFormats().end(); ++cit) {
                        Format const * format =
-                               system_formats.getFormat(cit->name());
+                               theSystemFormats().getFormat(cit->name());
                        if (!format ||
                            format->extensions() != cit->extensions() ||
                            format->prettyname() != cit->prettyname() ||
@@ -2535,7 +2703,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                            format->mime() != cit->mime()) {
                                os << "\\format \"" << cit->name() << "\" \""
                                   << cit->extensions() << "\" \""
-                                  << cit->prettyname() << "\" \""
+                                  << to_utf8(cit->prettyname()) << "\" \""
                                   << cit->shortcut() << "\" \""
                                   << escapeCommand(cit->viewer()) << "\" \""
                                   << escapeCommand(cit->editor()) << "\" \"";
@@ -2555,13 +2723,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
 
                // Look for deleted formats
-               for (Formats::const_iterator cit = system_formats.begin();
-                    cit != system_formats.end(); ++cit)
-                       if (!formats.getFormat(cit->name()))
+               for (Formats::const_iterator cit = theSystemFormats().begin();
+                    cit != theSystemFormats().end(); ++cit)
+                       if (!theFormats().getFormat(cit->name()))
                                os << "\\format \"" << cit->name()
                                   << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_VIEWER_ALTERNATIVES: {
                Alternatives::const_iterator it = viewer_alternatives.begin();
                Alternatives::const_iterator const en = viewer_alternatives.end();
@@ -2587,6 +2756,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                if (tag != RC_LAST)
                        break;
        }
+       // fall through
        case RC_EDITOR_ALTERNATIVES: {
                Alternatives::const_iterator it = editor_alternatives.begin();
                Alternatives::const_iterator const en = editor_alternatives.end();
@@ -2612,6 +2782,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                if (tag != RC_LAST)
                        break;
        }
+       // fall through
        case RC_DEFAULT_OTF_VIEW_FORMAT:
                if ((ignore_system_lyxrc ||
                     default_otf_view_format != system_lyxrc.default_otf_view_format)
@@ -2620,6 +2791,16 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
+       case RC_DEFAULT_PLATEX_VIEW_FORMAT:
+               if ((ignore_system_lyxrc ||
+                    default_platex_view_format != system_lyxrc.default_platex_view_format)
+                   && !default_platex_view_format.empty()) {
+                       os << "\\default_platex_view_format " << default_platex_view_format << '\n';
+               }
+               if (tag != RC_LAST)
+                       break;
+               // fall through
        case RC_DEFAULT_VIEW_FORMAT:
                if (ignore_system_lyxrc ||
                    default_view_format != system_lyxrc.default_view_format) {
@@ -2627,6 +2808,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                }
                if (tag != RC_LAST)
                        break;
+               // fall through
        case RC_VIEWER:
                // Ignore it
                if (tag != RC_LAST)
@@ -2636,6 +2818,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                   << "# CONVERTERS SECTION ##########################\n"
                   << "#\n\n";
 
+       // fall through
        case RC_CONVERTER:
                // Look for new converters
                for (Converters::const_iterator cit = theConverters().begin();
@@ -2660,7 +2843,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c
                                   << "\" \"" << cit->to() << "\" \"\" \"\"\n";
                if (tag != RC_LAST)
                        break;
-
+               // fall through
        case RC_COPIER:
                if (tag == RC_LAST)
                        os << "\n#\n"
@@ -2744,6 +2927,7 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        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:
        case LyXRC::RC_DEFAULT_VIEW_FORMAT:
        case LyXRC::RC_DEFFILE:
        case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
@@ -2766,8 +2950,10 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_INDEX_ALTERNATIVES:
        case LyXRC::RC_INDEX_COMMAND:
        case LyXRC::RC_JBIBTEX_COMMAND:
+       case LyXRC::RC_JBIBTEX_ALTERNATIVES:
        case LyXRC::RC_JINDEX_COMMAND:
        case LyXRC::RC_NOMENCL_COMMAND:
+       case LyXRC::RC_PYGMENTIZE_COMMAND:
        case LyXRC::RC_INPUT:
        case LyXRC::RC_KBMAP:
        case LyXRC::RC_KBMAP_PRIMARY:
@@ -2841,6 +3027,8 @@ void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
        case LyXRC::RC_USER_EMAIL:
        case LyXRC::RC_USER_NAME:
        case LyXRC::RC_USE_CONVERTER_CACHE:
+       case LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
+       case LyXRC::RC_USE_CONVERTER_NEEDAUTH:
        case LyXRC::RC_USE_SYSTEM_COLORS:
        case LyXRC::RC_USE_TOOLTIP:
        case LyXRC::RC_USE_PIXMAP_CACHE:
@@ -2933,6 +3121,14 @@ string const LyXRC::getDescription(LyXRCTags tag)
        case RC_CONVERTER:
                break;
 
+       case RC_CONVERTER_NEEDAUTH_FORBIDDEN:
+               str = _("Forbid use of external converters with 'needauth' option to prevent undesired effects.");
+               break;
+
+       case RC_CONVERTER_NEEDAUTH:
+               str = _("Ask user before calling external converters with 'needauth' option to prevent undesired effects.");
+               break;
+
        case RC_COPIER:
                break;
 
@@ -3016,6 +3212,10 @@ string const LyXRC::getDescription(LyXRCTags tag)
                str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
                break;
 
+       case RC_PYGMENTIZE_COMMAND:
+               str = _("The command to run the python pygments syntax highlighter.");
+               break;
+
        case RC_INPUT:
                break;
 
@@ -3074,8 +3274,7 @@ string const LyXRC::getDescription(LyXRCTags tag)
                break;
 
        case RC_MOUSE_WHEEL_SPEED:
-               str = bformat(_("The scrolling speed of the mouse wheel."),
-                     maxlastfiles);
+               str = _("The scrolling speed of the mouse wheel.");
                break;
 
        case RC_COMPLETION_POPUP_DELAY: