X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=3f9366cb044a73234ca9c23ec226cdd0a97526e4;hb=39f3ad8cbc3027b0065a83744b798759fe2a1ee4;hp=412a07849411e80a6d8308e34722f1ab04fe718d;hpb=37e0c52f1d40b6178b05e65a481a09a0f913e553;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 412a078494..3f9366cb04 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -95,6 +95,7 @@ LexerKeyword lyxrcTags[] = { { "\\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_command", LyXRC::RC_INDEX_COMMAND }, { "\\input", LyXRC::RC_INPUT }, { "\\kbmap", LyXRC::RC_KBMAP }, @@ -110,6 +111,7 @@ LexerKeyword lyxrcTags[] = { { "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE }, { "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL }, { "\\load_session", LyXRC::RC_LOADSESSION }, + { "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT }, { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE }, { "\\make_backup", LyXRC::RC_MAKE_BACKUP }, { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE }, @@ -163,7 +165,6 @@ LexerKeyword lyxrcTags[] = { { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS }, { "\\ui_file", LyXRC::RC_UIFILE }, { "\\use_alt_language", LyXRC::RC_USE_ALT_LANG }, - { "\\use_bundled_format", LyXRC::RC_USE_BUNDLED_FORMAT }, { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE }, { "\\use_escape_chars", LyXRC::RC_USE_ESC_CHARS }, { "\\use_input_encoding", LyXRC::RC_USE_INP_ENC }, @@ -255,7 +256,7 @@ void LyXRC::setDefaults() load_session = false; make_backup = true; backupdir_path.erase(); - display_graphics = graphics::ColorDisplay; + display_graphics = true; // Spellchecker settings: use_spell_lib = true; isp_command = "ispell"; @@ -279,11 +280,13 @@ void LyXRC::setDefaults() sort_layouts = false; group_layouts = true; default_language = "english"; + gui_language = "auto"; show_banner = true; windows_style_tex_paths = false; tex_allows_spaces = false; date_insert_format = "%x"; cursor_follows_scrollbar = false; + mac_like_word_movement = false; macro_edit_style = MACRO_EDIT_INLINE_BOX; dialogs_iconify_with_main = false; label_init_length = 3; @@ -297,7 +300,6 @@ void LyXRC::setDefaults() user_name = to_utf8(support::user_name()); user_email = to_utf8(support::user_email()); open_buffers_in_tabs = true; - use_bundled_format = false; // Fullscreen settings full_screen_limit = false; @@ -422,7 +424,7 @@ int LyXRC::read(Lexer & lexrc) case RC_DISPLAY_GRAPHICS: if (lexrc.next()) - display_graphics = graphics::displayTranslator().find(lexrc.getString()); + display_graphics = lexrc.getString() == "true"; break; case RC_TEX_EXPECTS_WINDOWS_PATHS: @@ -474,7 +476,9 @@ int LyXRC::read(Lexer & lexrc) break; case RC_PRINT_COMMAND: - lexrc >> print_command; + if (lexrc.next(true)) { + print_command = lexrc.getString(); + } break; case RC_PRINTEVENPAGEFLAG: @@ -514,7 +518,9 @@ int LyXRC::read(Lexer & lexrc) break; case RC_PRINTTOFILE: - print_to_file = os::internal_path(lexrc.getString()); + if (lexrc.next()) { + print_to_file = os::internal_path(lexrc.getString()); + } break; case RC_PRINTFILEEXTENSION: @@ -526,7 +532,9 @@ int LyXRC::read(Lexer & lexrc) break; case RC_PRINTSPOOL_COMMAND: - lexrc >> print_spool_command; + if (lexrc.next(true)) { + print_spool_command = lexrc.getString(); + } break; case RC_PRINTSPOOL_PRINTERPREFIX: @@ -579,15 +587,21 @@ int LyXRC::read(Lexer & lexrc) break; case RC_CHKTEX_COMMAND: - lexrc >> chktex_command; + if (lexrc.next(true)) { + chktex_command = lexrc.getString(); + } break; case RC_BIBTEX_COMMAND: - lexrc >> bibtex_command; + if (lexrc.next(true)) { + bibtex_command = lexrc.getString(); + } break; case RC_INDEX_COMMAND: - lexrc >> index_command; + if (lexrc.next(true)) { + index_command = lexrc.getString(); + } break; case RC_SCREEN_DPI: @@ -653,7 +667,7 @@ int LyXRC::read(Lexer & lexrc) case RC_USETEMPDIR: if (lexrc.next()) - lyxerr << "Ignoring obsolete use_tempdir flag." << endl; + LYXERR0("Ignoring obsolete use_tempdir flag."); break; case RC_USELASTFILEPOS: @@ -747,23 +761,18 @@ int LyXRC::read(Lexer & lexrc) lexrc >> typewriter_font_foundry; break; - case RC_SET_COLOR: - { - string lyx_name, x11_name; - - if (lexrc.next()) { - lyx_name = lexrc.getString(); - } else { + case RC_SET_COLOR: { + if (!lexrc.next()) { lexrc.printError("Missing color tag."); break; } + string lyx_name = lexrc.getString(); - if (lexrc.next()) { - x11_name = lexrc.getString(); - } else { + if (!lexrc.next()) { lexrc.printError("Missing color name for color: `$$Token'"); break; } + string x11_name = lexrc.getString(); ColorCode const col = lcolor.getFromLyXName(lyx_name); @@ -772,13 +781,11 @@ int LyXRC::read(Lexer & lexrc) col == Color_ignore) break; - if (!lcolor.setColor(col, x11_name)) { - lyxerr << "Bad lyxrc set_color for " - << lyx_name << endl; - - } + if (!lcolor.setColor(col, x11_name)) + LYXERR0("Bad lyxrc set_color for " << lyx_name); break; } + case RC_AUTOREGIONDELETE: // Auto region delete defaults to true lexrc >> auto_region_delete; @@ -795,6 +802,10 @@ int LyXRC::read(Lexer & lexrc) lexrc >> cursor_follows_scrollbar; break; + case RC_MAC_LIKE_WORD_MOVEMENT: + lexrc >> mac_like_word_movement; + break; + case RC_MACRO_EDIT_STYLE: if (lexrc.next()) { switch (lexrc.getInteger()) { @@ -810,7 +821,9 @@ int LyXRC::read(Lexer & lexrc) break; case RC_PLAINTEXT_ROFF_COMMAND: - lexrc >> plaintext_roff_command; + if (lexrc.next(true)) { + plaintext_roff_command = lexrc.getString(); + } break; case RC_PLAINTEXT_LINELEN: lexrc >> plaintext_linelen; @@ -820,7 +833,8 @@ int LyXRC::read(Lexer & lexrc) lexrc >> use_spell_lib; break; case RC_SPELL_COMMAND: - lexrc >> isp_command; + if (lexrc.next(true)) + isp_command = lexrc.getString(); break; case RC_ACCEPT_COMPOUND: lexrc >> isp_accept_compound; @@ -904,14 +918,24 @@ int LyXRC::read(Lexer & lexrc) case RC_COPIER: { string fmt, command; - lexrc >> fmt >> command; + if (lexrc.next()) + fmt = lexrc.getString(); + if (lexrc.next(true)) + command = lexrc.getString(); setMover(fmt, command); break; } case RC_CONVERTER: { string from, to, command, flags; - lexrc >> from >> to >> command >> flags; + if (lexrc.next()) + from = lexrc.getString(); + if (lexrc.next()) + to = lexrc.getString(); + if (lexrc.next(true)) + command = lexrc.getString(); + if (lexrc.next()) + flags = lexrc.getString(); if (command.empty()) theConverters().erase(from, to); else @@ -929,7 +953,10 @@ int LyXRC::read(Lexer & lexrc) string format, extension, prettyname, shortcut; lexrc >> format >> extension >> prettyname >> shortcut; string viewer, editor; - lexrc >> viewer >> editor; + if (lexrc.next(true)) + viewer = lexrc.getString(); + if (lexrc.next(true)) + editor = lexrc.getString(); string flags; // Hack to ensure compatibility with versions older // than 1.5.0 @@ -954,13 +981,13 @@ int LyXRC::read(Lexer & lexrc) else if (flag == "vector") flgs |= Format::vector; else - lyxerr << "Ignoring unknown flag `" + LYXERR0("Ignoring unknown flag `" << flag << "' for format `" - << format << "'." << endl; + << format << "'."); } if (prettyname.empty()) { if (theConverters().formatIsUsed(format)) - LYXERR0( "Can't delete format " << format); + LYXERR0("Can't delete format " << format); else formats.erase(format); } else { @@ -973,6 +1000,10 @@ int LyXRC::read(Lexer & lexrc) lexrc >> default_language; break; + case RC_GUI_LANGUAGE: + lexrc >> gui_language; + break; + case RC_LABEL_INIT_LENGTH: lexrc >> label_init_length; break; @@ -991,9 +1022,8 @@ int LyXRC::read(Lexer & lexrc) else { preview = PREVIEW_OFF; if (tmp != "false" && tmp != "off") - lyxerr << "Unrecognized " - "preview status \"" - << tmp << '\n' << endl; + LYXERR0("Unrecognized preview status \"" + << tmp << '\n'); } } break; @@ -1048,9 +1078,6 @@ int LyXRC::read(Lexer & lexrc) case RC_OPEN_BUFFERS_IN_TABS: lexrc >> open_buffers_in_tabs; break; - case RC_USE_BUNDLED_FORMAT: - lexrc >> use_bundled_format; - break; case RC_LAST: break; // this is just a dummy @@ -1100,6 +1127,17 @@ private: }; +namespace { + + // Escape \ and " so that LyXLex can read the string later + string escapeCommand(string const & str) { + return subst(subst(str , "\\", "\\\\"), + "\"", "\\\""); + } + +} + + void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const { LyXRCTags tag = RC_LAST; @@ -1111,21 +1149,12 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag == RC_LAST) - os << "### This file is part of\n" - << "### ========================================================\n" - << "### LyX, The Document Processor\n" - << "###\n" - << "### Copyright 1995 Matthias Ettrich\n" - << "### Copyright 1995-2007 The LyX Team.\n" - << "###\n" - << "### ========================================================\n" - << "\n" - << "# This file is written by LyX, if you want to make your own\n" + os << "# This file is written by LyX, if you want to make your own\n" << "# modifications you should do them from inside LyX and save\n" << "\n"; // Why the switch you might ask. It is a trick to ensure that all - // the elements in the LyXRCTags enum is handled. As you can see + // the elements in the LyXRCTags enum are handled. As you can see // there are no breaks at all. So it is just a huge fall-through. // The nice thing is that we will get a warning from the compiler // if we forget an element. @@ -1207,10 +1236,9 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (ignore_system_lyxrc || display_graphics != system_lyxrc.display_graphics) { os << "# Display graphics within LyX\n" - << "# monochrome|grayscale|color|none\n" + << "# true|false\n" << "\\display_graphics " - << graphics::displayTranslator().find( - graphics::DisplayType(display_graphics)) + << (display_graphics ? "true" : "false") << '\n'; } if (tag != RC_LAST) @@ -1275,21 +1303,21 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_CHKTEX_COMMAND: if (ignore_system_lyxrc || chktex_command != system_lyxrc.chktex_command) { - os << "\\chktex_command \"" << chktex_command << "\"\n"; + os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n"; } if (tag != RC_LAST) break; case RC_BIBTEX_COMMAND: if (ignore_system_lyxrc || bibtex_command != system_lyxrc.bibtex_command) { - os << "\\bibtex_command \"" << bibtex_command << "\"\n"; + os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n"; } if (tag != RC_LAST) break; case RC_INDEX_COMMAND: if (ignore_system_lyxrc || index_command != system_lyxrc.index_command) { - os << "\\index_command \"" << index_command << "\"\n"; + os << "\\index_command \"" << escapeCommand(index_command) << "\"\n"; } if (tag != RC_LAST) break; @@ -1466,6 +1494,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_MAC_LIKE_WORD_MOVEMENT: + if (ignore_system_lyxrc || + mac_like_word_movement + != system_lyxrc.mac_like_word_movement) { + os << "\\mac_like_word_movement " + << convert(mac_like_word_movement) << '\n'; + } + if (tag != RC_LAST) + break; case RC_MACRO_EDIT_STYLE: if (ignore_system_lyxrc || macro_edit_style @@ -1639,27 +1676,17 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; - case RC_USE_BUNDLED_FORMAT: - if (ignore_system_lyxrc || - use_bundled_format != system_lyxrc.use_bundled_format) { - os << "\\use_bundled_format " - << convert(use_bundled_format) - << '\n'; - } - if (tag != RC_LAST) - break; - os << "\n#\n" - << "# COLOR SECTION ###################################\n" - << "#\n\n"; + os << "\n#\n" + << "# COLOR SECTION ###################################\n" + << "#\n\n"; case RC_SET_COLOR: for (int i = 0; i < Color_ignore; ++i) { ColorCode lc = static_cast(i); - - string const col(lcolor.getX11Name(lc)); - if (ignore_system_lyxrc || - col != system_lcolor.getX11Name(lc)) { + string const col = lcolor.getX11Name(lc); + if (ignore_system_lyxrc + || col != system_lcolor.getX11Name(lc)) { os << "\\set_color \"" << lcolor.getLyXName(lc) << "\" \"" << col << "\"\n"; @@ -1691,7 +1718,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_PRINT_COMMAND: if (ignore_system_lyxrc || print_command != system_lyxrc.print_command) { - os << "\\print_command \"" << print_command << "\"\n"; + os << "\\print_command \"" << escapeCommand(print_command) << "\"\n"; } if (tag != RC_LAST) break; @@ -1706,7 +1733,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_PRINTSPOOL_COMMAND: if (ignore_system_lyxrc || print_spool_command != system_lyxrc.print_spool_command) { - os << "\\print_spool_command \"" << print_spool_command + os << "\\print_spool_command \"" << escapeCommand(print_spool_command) << "\"\n"; } if (tag != RC_LAST) @@ -2036,7 +2063,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_PLAINTEXT_ROFF_COMMAND: if (ignore_system_lyxrc || plaintext_roff_command != system_lyxrc.plaintext_roff_command) { - os << "\\plaintext_roff_command \"" << plaintext_roff_command + os << "\\plaintext_roff_command \"" << escapeCommand(plaintext_roff_command) << "\"\n"; } if (tag != RC_LAST) @@ -2055,7 +2082,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_SPELL_COMMAND: if (ignore_system_lyxrc || isp_command != system_lyxrc.isp_command) { - os << "\\spell_command \"" << isp_command << "\"\n"; + os << "\\spell_command \"" << escapeCommand(isp_command) << "\"\n"; } if (tag != RC_LAST) break; @@ -2257,6 +2284,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_GUI_LANGUAGE: + if (ignore_system_lyxrc || + gui_language != system_lyxrc.gui_language) { + os << "\\gui_language " << gui_language << '\n'; + } + if (tag != RC_LAST) + break; os << "\n#\n" << "# FORMATS SECTION ##########################\n" @@ -2280,8 +2314,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << cit->extension() << "\" \"" << cit->prettyname() << "\" \"" << cit->shortcut() << "\" \"" - << cit->viewer() << "\" \"" - << cit->editor() << "\" \""; + << escapeCommand(cit->viewer()) << "\" \"" + << escapeCommand(cit->editor()) << "\" \""; vector flags; if (cit->documentFormat()) flags.push_back("document"); @@ -2321,7 +2355,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c converter->flags != cit->flags) os << "\\converter \"" << cit->from << "\" \"" << cit->to << "\" \"" - << cit->command << "\" \"" + << escapeCommand(cit->command) << "\" \"" << cit->flags << "\"\n"; } @@ -2355,7 +2389,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c it->second.command(); os << "\\copier " << fmt - << " \"" << command << "\"\n"; + << " \"" << escapeCommand(command) << "\"\n"; } } if (tag != RC_LAST) @@ -2438,6 +2472,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_MAC_LIKE_WORD_MOVEMENT: + str = _("Use the Mac OS X conventions for the word-level cursor movement"); + break; + case RC_SHOW_MACRO_LABEL: str = _("Show a small box around a Math Macro with the macro name when the cursor is inside."); break;