X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxrc.C;h=8208bb2103d240b3632203685e0692ac3c14e77b;hb=d4f8fe124906af839a02d1ad3b7894e14fb69a37;hp=70f3d0ab857ef95d6a1fceef8f0b916af6c94f61;hpb=0d4d71dfe6576db51091abc043d81aad0e19eca0;p=lyx.git diff --git a/src/lyxrc.C b/src/lyxrc.C index 70f3d0ab85..8208bb2103 100644 --- a/src/lyxrc.C +++ b/src/lyxrc.C @@ -3,46 +3,64 @@ * This file is part of LyX, the document processor. * Licence details can be found in the file COPYING. * - * Full author contact details are available in file CREDITS + * \author Lars Gullik Bjønnes + * \author Jean-Marc Lasgouttes + * \author Angus Leeming + * \author John Levon + * \author André Pönitz + * \author Allan Rae + * \author Dekel Tsur + * + * Full author contact details are available in file CREDITS. */ #include #include -#include #include -#include #include "lyxrc.h" #include "debug.h" -#include "kbmap.h" -#include "LyXAction.h" -#include "intl.h" #include "converter.h" #include "format.h" #include "gettext.h" +#include "session.h" +#include "LColor.h" #include "lyxlex.h" +#include "lyxfont.h" +#include "mover.h" + +#include "graphics/GraphicsTypes.h" -#include "support/path.h" -#include "support/tostr.h" +#include "support/convert.h" +#include "support/environment.h" #include "support/filetools.h" -#include "support/LAssert.h" #include "support/lstrings.h" +#include "support/os.h" #include "support/userinfo.h" -using namespace lyx::support; -using std::ostream; -using std::ofstream; +namespace lyx { + +namespace os = support::os; + +using support::ascii_lowercase; +using support::bformat; +using support::expandPath; +using support::FileName; +using support::getEnv; +using support::libFileSearch; +using support::token; + using std::cout; -using std::ios; using std::endl; -using std::vector; -class kb_keymap; +using std::ios; +using std::ofstream; +using std::ostream; +using std::string; -extern boost::scoped_ptr toplevel_keymap; namespace { @@ -50,18 +68,18 @@ namespace { keyword_item lyxrcTags[] = { { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND }, { "\\alternate_language", LyXRC::RC_ALT_LANG }, - { "\\ascii_linelen", LyXRC::RC_ASCII_LINELEN }, - { "\\ascii_roff_command", LyXRC::RC_ASCIIROFF_COMMAND }, { "\\auto_number", LyXRC::RC_AUTO_NUMBER }, { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE }, { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS }, { "\\autosave", LyXRC::RC_AUTOSAVE }, { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH }, - { "\\bind", LyXRC::RC_BIND }, + { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND }, { "\\bind_file", LyXRC::RC_BINDFILE }, { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES }, { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND }, { "\\converter", LyXRC::RC_CONVERTER }, + { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE }, + { "\\copier", LyXRC::RC_COPIER }, { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR }, { "\\custom_export_command", LyXRC::RC_CUSTOM_EXPORT_COMMAND }, { "\\custom_export_format", LyXRC::RC_CUSTOM_EXPORT_FORMAT }, @@ -74,6 +92,7 @@ keyword_item lyxrcTags[] = { { "\\escape_chars", LyXRC::RC_ESC_CHARS }, { "\\font_encoding", LyXRC::RC_FONT_ENCODING }, { "\\format", LyXRC::RC_FORMAT }, + { "\\index_command", LyXRC::RC_INDEX_COMMAND }, { "\\input", LyXRC::RC_INPUT }, { "\\kbmap", LyXRC::RC_KBMAP }, { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY }, @@ -87,11 +106,14 @@ keyword_item lyxrcTags[] = { { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS }, { "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE }, { "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL }, - { "\\lastfiles", LyXRC::RC_LASTFILES }, + { "\\load_session", LyXRC::RC_LOADSESSION }, { "\\make_backup", LyXRC::RC_MAKE_BACKUP }, { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE }, { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES }, + { "\\path_prefix", LyXRC::RC_PATH_PREFIX }, { "\\personal_dictionary", LyXRC::RC_PERS_DICT }, + { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN }, + { "\\plaintext_roff_command", LyXRC::RC_PLAINTEXT_ROFF_COMMAND }, { "\\popup_bold_font", LyXRC::RC_POPUP_BOLD_FONT }, { "\\popup_font_encoding", LyXRC::RC_POPUP_FONT_ENCODING }, { "\\popup_normal_font", LyXRC::RC_POPUP_NORMAL_FONT }, @@ -116,7 +138,6 @@ keyword_item lyxrcTags[] = { { "\\print_to_file", LyXRC::RC_PRINTTOFILE }, { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER }, { "\\printer", LyXRC::RC_PRINTER }, - { "\\ps_command", LyXRC::RC_PS_COMMAND }, { "\\rtl", LyXRC::RC_RTL_SUPPORT }, { "\\screen_dpi", LyXRC::RC_SCREEN_DPI }, { "\\screen_font_encoding", LyXRC::RC_SCREEN_FONT_ENCODING }, @@ -134,6 +155,9 @@ keyword_item lyxrcTags[] = { { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES }, { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER }, { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY }, + { "\\screen_geometry_height", LyXRC::RC_SCREEN_GEOMETRY_HEIGHT }, + { "\\screen_geometry_width", LyXRC::RC_SCREEN_GEOMETRY_WIDTH }, + { "\\screen_geometry_xysaved", LyXRC::RC_SCREEN_GEOMETRY_XYSAVED }, { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM }, { "\\serverpipe", LyXRC::RC_SERVERPIPE }, { "\\set_color", LyXRC::RC_SET_COLOR }, @@ -141,20 +165,25 @@ keyword_item lyxrcTags[] = { { "\\spell_command", LyXRC::RC_SPELL_COMMAND }, { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH }, { "\\template_path", LyXRC::RC_TEMPLATEPATH }, + { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES }, + { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS }, { "\\ui_file", LyXRC::RC_UIFILE }, { "\\use_alt_language", LyXRC::RC_USE_ALT_LANG }, + { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE }, { "\\use_escape_chars", LyXRC::RC_USE_ESC_CHARS }, { "\\use_input_encoding", LyXRC::RC_USE_INP_ENC }, + { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS }, { "\\use_personal_dictionary", LyXRC::RC_USE_PERS_DICT }, // compatibility with versions older than 1.4.0 only { "\\use_pspell", LyXRC::RC_USE_SPELL_LIB }, { "\\use_spell_lib", LyXRC::RC_USE_SPELL_LIB }, + // compatibility with versions older than 1.4.0 only { "\\use_tempdir", LyXRC::RC_USETEMPDIR }, { "\\user_email", LyXRC::RC_USER_EMAIL }, { "\\user_name", LyXRC::RC_USER_NAME }, { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION }, - { "\\viewer" ,LyXRC::RC_VIEWER}, - { "\\wheel_jump", LyXRC::RC_WHEEL_JUMP } + // compatibility with versions older than 1.4.0 only + { "\\viewer" ,LyXRC::RC_VIEWER} }; const int lyxrcCount = sizeof(lyxrcTags) / sizeof(keyword_item); @@ -170,11 +199,10 @@ LyXRC::LyXRC() void LyXRC::setDefaults() { bind_file = "cua"; - hasBindFile = false; ui_file = "default"; // Get printer from the environment. If fail, use default "", // assuming that everything is set up correctly. - printer = GetEnv("PRINTER"); + printer = getEnv("PRINTER"); print_adapt_output = false; print_command = "dvips"; print_evenpage_flag = "-B"; @@ -190,29 +218,30 @@ void LyXRC::setDefaults() { print_paper_flag = "-t"; print_paper_dimension_flag = "-T"; document_path.erase(); - tempdir_path = "/tmp"; - use_tempdir = true; - ps_command = "gs"; view_dvi_paper_option.erase(); - default_papersize = BufferParams::PAPER_USLETTER; + default_papersize = PAPER_DEFAULT; custom_export_format = "ps"; chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38"; + bibtex_command = "bibtex"; fontenc = "default"; + index_command = "makeindex -c -q"; dpi = 75; // Because a screen typically is wider than a piece of paper: zoom = 150; - wheel_jump = 5; + geometry_width = 0; + geometry_height = 0; + geometry_xysaved = true; // Default LaTeX font size: - font_sizes[LyXFont::SIZE_TINY] = 5.0; - font_sizes[LyXFont::SIZE_SCRIPT] = 7.0; - font_sizes[LyXFont::SIZE_FOOTNOTE] = 8.0; - font_sizes[LyXFont::SIZE_SMALL] = 9.0; - font_sizes[LyXFont::SIZE_NORMAL] = 10.0; - font_sizes[LyXFont::SIZE_LARGE] = 12.0; - font_sizes[LyXFont::SIZE_LARGER] = 14.4; - font_sizes[LyXFont::SIZE_LARGEST] = 17.26; - font_sizes[LyXFont::SIZE_HUGE] = 20.74; - font_sizes[LyXFont::SIZE_HUGER] = 24.88; + font_sizes[LyXFont::SIZE_TINY] = "5.0"; + font_sizes[LyXFont::SIZE_SCRIPT] = "7.0"; + font_sizes[LyXFont::SIZE_FOOTNOTE] = "8.0"; + font_sizes[LyXFont::SIZE_SMALL] = "9.0"; + font_sizes[LyXFont::SIZE_NORMAL] = "10.0"; + font_sizes[LyXFont::SIZE_LARGE] = "12.0"; + font_sizes[LyXFont::SIZE_LARGER] = "14.4"; + font_sizes[LyXFont::SIZE_LARGEST] = "17.26"; + font_sizes[LyXFont::SIZE_HUGE] = "20.74"; + font_sizes[LyXFont::SIZE_HUGER] = "24.88"; use_scalable_fonts = true; roman_font_name = ""; sans_font_name = ""; @@ -225,12 +254,14 @@ void LyXRC::setDefaults() { autosave = 300; auto_region_delete = true; auto_reset_options = false; - ascii_linelen = 65; - num_lastfiles = 4; + plaintext_linelen = 65; + num_lastfiles = maxlastfiles; check_lastfiles = true; + use_lastfilepos = true; + load_session = false; make_backup = true; backupdir_path.erase(); - display_graphics = lyx::graphics::ColorDisplay; + display_graphics = graphics::ColorDisplay; // Spellchecker settings: use_spell_lib = true; isp_command = "ispell"; @@ -252,41 +283,21 @@ void LyXRC::setDefaults() { language_command_local = "\\foreignlanguage{$$lang}{"; default_language = "english"; show_banner = true; - - // - date_insert_format = "%A, %e %B %Y"; + windows_style_tex_paths = false; + tex_allows_spaces = false; + date_insert_format = "%x"; cursor_follows_scrollbar = false; dialogs_iconify_with_main = false; label_init_length = 3; - preview = false; + preview = PREVIEW_OFF; preview_hashed_labels = false; - preview_scale_factor = 0.9; - - user_name = lyx::support::user_name(); - - user_email = lyx::support::user_email(); + preview_scale_factor = "0.9"; + use_converter_cache = false; + converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months - if (user_email.empty()) - user_email = _("email address unknown"); -} - - -int LyXRC::ReadBindFile(string const & name) -{ - hasBindFile = true; - string const tmp = i18nLibFileSearch("bind", name, "bind"); - lyxerr[Debug::LYXRC] << "Reading bindfile:" << tmp << endl; - int const result = read(tmp); - if (result) { - lyxerr << "Error reading bind file: " << tmp << endl; - } - return result; -} + user_name = to_utf8(support::user_name()); -void LyXRC::readBindFileIfNeeded() -{ - if (!hasBindFile) - ReadBindFile(bind_file); + user_email = to_utf8(support::user_email()); } @@ -305,7 +316,7 @@ void oldFontFormat(string & family, string & foundry) } // namespace anon -int LyXRC::read(string const & filename) +int LyXRC::read(FileName const & filename) { LyXLex lexrc(lyxrcTags, lyxrcCount); if (lyxerr.debugging(Debug::PARSER)) @@ -316,6 +327,29 @@ int LyXRC::read(string const & filename) lyxerr[Debug::LYXRC] << "Reading '" << filename << "'..." << endl; + return read(lexrc); +} + + +int LyXRC::read(std::istream & is) +{ + LyXLex lexrc(lyxrcTags, lyxrcCount); + if (lyxerr.debugging(Debug::PARSER)) + lexrc.printTable(lyxerr); + + lexrc.setStream(is); + if (!lexrc.isOK()) return -2; + + lyxerr[Debug::LYXRC] << "Reading istream..." << endl; + + return read(lexrc); +} + + +int LyXRC::read(LyXLex & lexrc) +{ + if (!lexrc.isOK()) return -2; + while (lexrc.isOK()) { // By using two switches we take advantage of the compiler // telling us if we have missed a LyXRCTags element in @@ -336,35 +370,24 @@ int LyXRC::read(string const & filename) switch (static_cast(le)) { case RC_INPUT: // Include file if (lexrc.next()) { - string const tmp = - LibFileSearch(string(), + FileName const tmp = + libFileSearch(string(), lexrc.getString()); if (read(tmp)) { lexrc.printError("Error reading " - "included file: "+tmp); + "included file: " + tmp.absFilename()); } } break; - case RC_BINDFILE: // RVDK_PATCH_5 + case RC_BINDFILE: if (lexrc.next()) { - string const tmp(lexrc.getString()); - if (hasBindFile) { - // We are already in the - // "actually read bind file" - // mode. - ReadBindFile(tmp); - } else { - // We are still in the "just - // remember the name of the - // bind file" mode. - bind_file = tmp; - } + bind_file = os::internal_path(lexrc.getString()); } break; case RC_UIFILE: if (lexrc.next()) { - ui_file = lexrc.getString(); + ui_file = os::internal_path(lexrc.getString()); } break; @@ -376,7 +399,19 @@ int LyXRC::read(string const & filename) case RC_DISPLAY_GRAPHICS: if (lexrc.next()) { - display_graphics = lyx::graphics::displayTranslator.find(lexrc.getString()); + display_graphics = graphics::displayTranslator().find(lexrc.getString()); + } + break; + + case RC_TEX_EXPECTS_WINDOWS_PATHS: + if (lexrc.next()) { + windows_style_tex_paths = lexrc.getBool(); + } + break; + + case RC_TEX_ALLOWS_SPACES: + if (lexrc.next()) { + tex_allows_spaces = lexrc.getBool(); } break; @@ -388,10 +423,10 @@ int LyXRC::read(string const & filename) case RC_KBMAP_PRIMARY: if (lexrc.next()) { - string const kmap(lexrc.getString()); + string const kmap(os::internal_path(lexrc.getString())); if (kmap.empty()) { // nothing - } else if (!LibFileSearch("kbd", kmap, + } else if (!libFileSearch("kbd", kmap, "kmap").empty()) { primary_kbmap = kmap; } else { @@ -402,10 +437,10 @@ int LyXRC::read(string const & filename) case RC_KBMAP_SECONDARY: if (lexrc.next()) { - string const kmap(lexrc.getString()); + string const kmap(os::internal_path(lexrc.getString())); if (kmap.empty()) { // nothing - } else if (!LibFileSearch("kbd", kmap, + } else if (!libFileSearch("kbd", kmap, "kmap").empty()) { secondary_kbmap = kmap; } else { @@ -488,7 +523,7 @@ int LyXRC::read(string const & filename) case RC_PRINTTOFILE: if (lexrc.next()) { - print_to_file = lexrc.getString(); + print_to_file = os::internal_path(lexrc.getString()); } break; @@ -546,25 +581,28 @@ int LyXRC::read(string const & filename) ascii_lowercase(lexrc.getString()); if (size == "usletter") default_papersize = - BufferParams::PAPER_USLETTER; + PAPER_USLETTER; else if (size == "legal") default_papersize = - BufferParams::PAPER_LEGALPAPER; + PAPER_USLEGAL; else if (size == "executive") default_papersize = - BufferParams::PAPER_EXECUTIVEPAPER; + PAPER_USEXECUTIVE; else if (size == "a3") default_papersize = - BufferParams::PAPER_A3PAPER; + PAPER_A3; else if (size == "a4") default_papersize = - BufferParams::PAPER_A4PAPER; + PAPER_A4; else if (size == "a5") default_papersize = - BufferParams::PAPER_A5PAPER; + PAPER_A5; else if (size == "b5") default_papersize = - BufferParams::PAPER_B5PAPER; + PAPER_B5; + else if (size == "default") + default_papersize = + PAPER_DEFAULT; } break; @@ -576,15 +614,21 @@ int LyXRC::read(string const & filename) } break; - case RC_PS_COMMAND: + case RC_CHKTEX_COMMAND: if (lexrc.next()) { - ps_command = lexrc.getString(); + chktex_command = lexrc.getString(); } break; - case RC_CHKTEX_COMMAND: + case RC_BIBTEX_COMMAND: if (lexrc.next()) { - chktex_command = lexrc.getString(); + bibtex_command = lexrc.getString(); + } + break; + + case RC_INDEX_COMMAND: + if (lexrc.next()) { + index_command = lexrc.getString(); } break; @@ -600,52 +644,64 @@ int LyXRC::read(string const & filename) } break; - case RC_WHEEL_JUMP: + case RC_SCREEN_GEOMETRY_HEIGHT: + if (lexrc.next()) { + geometry_height = lexrc.getInteger(); + } + break; + + case RC_SCREEN_GEOMETRY_WIDTH: if (lexrc.next()) { - wheel_jump = lexrc.getInteger(); + geometry_width = lexrc.getInteger(); + } + break; + + case RC_SCREEN_GEOMETRY_XYSAVED: + if (lexrc.next()) { + geometry_xysaved = lexrc.getBool(); } break; case RC_SCREEN_FONT_SIZES: if (lexrc.next()) { font_sizes[LyXFont::SIZE_TINY] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_SCRIPT] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_FOOTNOTE] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_SMALL] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_NORMAL] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_LARGE] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_LARGER] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_LARGEST] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_HUGE] = - lexrc.getFloat(); + lexrc.getString(); } if (lexrc.next()) { font_sizes[LyXFont::SIZE_HUGER] = - lexrc.getFloat(); + lexrc.getString(); } break; @@ -663,31 +719,40 @@ int LyXRC::read(string const & filename) case RC_DOCUMENTPATH: if (lexrc.next()) { - document_path = ExpandPath(lexrc.getString()); + document_path = os::internal_path(lexrc.getString()); + document_path = expandPath(document_path); } break; case RC_TEMPLATEPATH: if (lexrc.next()) { - template_path = ExpandPath(lexrc.getString()); + template_path = os::internal_path(lexrc.getString()); + template_path = expandPath(template_path); } break; case RC_TEMPDIRPATH: if (lexrc.next()) { - tempdir_path = ExpandPath(lexrc.getString()); + tempdir_path = os::internal_path(lexrc.getString()); + tempdir_path = expandPath(tempdir_path); } break; case RC_USETEMPDIR: if (lexrc.next()) { - use_tempdir = lexrc.getBool(); + lyxerr << "Ignoring obsolete use_tempdir flag." << endl; + } + break; + + case RC_USELASTFILEPOS: + if (lexrc.next()) { + use_lastfilepos = lexrc.getBool(); } break; - case RC_LASTFILES: + case RC_LOADSESSION: if (lexrc.next()) { - lastfiles = ExpandPath(lexrc.getString()); + load_session = lexrc.getBool(); } break; @@ -787,7 +852,14 @@ int LyXRC::read(string const & filename) break; } - if (!lcolor.setColor(lyx_name, x11_name)) { + LColor::color const col = + lcolor.getFromLyXName(lyx_name); + if (col == LColor::none || + col == LColor::inherit || + col == LColor::ignore) + break; + + if (!lcolor.setColor(col, x11_name)) { lyxerr << "Bad lyxrc set_color for " << lyx_name << endl; @@ -801,56 +873,10 @@ int LyXRC::read(string const & filename) } break; - case RC_BIND: - { - // we should not do an explicit binding before - // loading a bind file. So, in this case, load - // the default bind file. - readBindFileIfNeeded(); - - // !!!chb, dynamic key binding... - int action = 0; - string::size_type res = 0; - string seq, cmd; - - if (lexrc.next()) { - seq = lexrc.getString(); - } else { - lexrc.printError("RC_BIND: Missing key sequence"); - break; - } - - if (lexrc.next(true)) { - cmd = lexrc.getString(); - } else { - lexrc.printError("RC_BIND: missing command"); - break; - } - - if ((action = lyxaction.LookupFunc(cmd)) >= 0) { - if (lyxerr.debugging(Debug::LYXRC)) { - lyxerr << "RC_BIND: Sequence `" - << seq << "' Command `" - << cmd << "' Action `" - << action << '\'' << endl; - } - res = toplevel_keymap->bind(seq, kb_action(action)); - if (res != string::npos - && lyxerr.debugging(Debug::LYXRC)) { - lexrc.printError( - "RC_BIND: " - "Invalid key sequence `" - + seq + '\''); - } - } else {// cmd is the last token read. - lexrc.printError( - "Unknown LyX function `$$Token'"); - } - break; - } case RC_SERVERPIPE: if (lexrc.next()) { - lyxpipes = ExpandPath(lexrc.getString()); + lyxpipes = os::internal_path(lexrc.getString()); + lyxpipes = expandPath(lyxpipes); } break; @@ -866,14 +892,14 @@ int LyXRC::read(string const & filename) } break; - case RC_ASCIIROFF_COMMAND: + case RC_PLAINTEXT_ROFF_COMMAND: if (lexrc.next()) { - ascii_roff_command = lexrc.getString(); + plaintext_roff_command = lexrc.getString(); } break; - case RC_ASCII_LINELEN: + case RC_PLAINTEXT_LINELEN: if (lexrc.next()) { - ascii_linelen = lexrc.getInteger(); + plaintext_linelen = lexrc.getInteger(); } break; // Spellchecker settings: @@ -919,7 +945,7 @@ int LyXRC::read(string const & filename) break; case RC_PERS_DICT: if (lexrc.next()) { - isp_pers_dict = lexrc.getString(); + isp_pers_dict = os::internal_path(lexrc.getString()); } break; case RC_ESC_CHARS: @@ -934,7 +960,8 @@ int LyXRC::read(string const & filename) break; case RC_BACKUPDIR_PATH: if (lexrc.next()) { - backupdir_path = ExpandPath(lexrc.getString()); + backupdir_path = os::internal_path(lexrc.getString()); + backupdir_path = expandPath(backupdir_path); } break; case RC_DATE_INSERT_FORMAT: @@ -998,6 +1025,18 @@ int LyXRC::read(string const & filename) } break; + case RC_COPIER: { + string fmt, command; + if (lexrc.next()) { + fmt = lexrc.getString(); + } + if (lexrc.next()) { + command = lexrc.getString(); + } + setMover(fmt, command); + break; + } + case RC_CONVERTER: { string from, to, command, flags; if (lexrc.next()) { @@ -1012,14 +1051,14 @@ int LyXRC::read(string const & filename) if (lexrc.next()) { flags = lexrc.getString(); } - if (command.empty() - || token(command, ' ', 0) == "none") { - converters.erase(from, to); + if (command.empty()) { + theConverters().erase(from, to); } else { - converters.add(from, to, command, flags); + theConverters().add(from, to, command, flags); } break; } + // compatibility with versions older than 1.4.0 only case RC_VIEWER: { string format, command; if (lexrc.next()) { @@ -1027,8 +1066,6 @@ int LyXRC::read(string const & filename) } if (lexrc.next()) { command = lexrc.getString(); - if (token(command, ' ', 0) == "none") - command.erase(); } formats.setViewer(format, command); break; @@ -1047,8 +1084,41 @@ int LyXRC::read(string const & filename) if (lexrc.next()) { shortcut = lexrc.getString(); } + string viewer, editor; + if (lexrc.next()) + viewer = lexrc.getString(); + if (lexrc.next()) + editor = lexrc.getString(); + string flags; + // Hack to ensure compatibility with versions older + // than 1.5.0 + int le = lexrc.lex(); + if (le != LyXLex::LEX_FEOF && le != LyXLex::LEX_UNDEF) { + flags = lexrc.getString(); + if (le != LyXLex::LEX_DATA) { + // We have got a known token. + // Therefore this is an old style + // format definition without + // flags. + lexrc.pushToken(flags); + flags.erase(); + } + } + int flgs = Format::none; + while (!flags.empty()) { + string flag; + flags = support::split(flags, flag, ','); + if (flag == "document") + flgs |= Format::document; + else if (flag == "vector") + flgs |= Format::vector; + else + lyxerr << "Ignoring unknown flag `" + << flag << "' for format `" + << format << "'." << endl; + } if (prettyname.empty()) { - if (converters.formatIsUsed(format)) { + if (theConverters().formatIsUsed(format)) { lyxerr << "Can't delete format " << format << endl; } else { @@ -1056,7 +1126,7 @@ int LyXRC::read(string const & filename) } } else { formats.add(format, extension, prettyname, - shortcut); + shortcut, viewer, editor, flgs); } break; } @@ -1080,7 +1150,18 @@ int LyXRC::read(string const & filename) case RC_PREVIEW: if (lexrc.next()) { - preview = lexrc.getBool(); + string const tmp = lexrc.getString(); + if (tmp == "true" || tmp == "on") + preview = PREVIEW_ON; + else if (tmp == "no_math") + preview = PREVIEW_NO_MATH; + else { + preview = PREVIEW_OFF; + if (tmp != "false" && tmp != "off") + lyxerr << "Unrecognized " + "preview status \"" + << tmp << '\n' << endl; + } } break; @@ -1092,7 +1173,7 @@ int LyXRC::read(string const & filename) case RC_PREVIEW_SCALE_FACTOR: if (lexrc.next()) { - preview_scale_factor = lexrc.getFloat(); + preview_scale_factor = lexrc.getString(); } break; @@ -1106,36 +1187,70 @@ int LyXRC::read(string const & filename) user_email = lexrc.getString(); break; + case RC_PATH_PREFIX: + if (lexrc.next()) + path_prefix = lexrc.getString(); + break; + + case RC_USE_CONVERTER_CACHE: + if (lexrc.next()) + use_converter_cache = lexrc.getBool(); + break; + + case RC_CONVERTER_CACHE_MAXAGE: + if (lexrc.next()) + converter_cache_maxage = + convert(lexrc.getString()); + break; + case RC_LAST: break; // this is just a dummy } } /// Update converters data-structures - converters.update(formats); - converters.buildGraph(); + theConverters().update(formats); + theConverters().buildGraph(); return 0; } -void LyXRC::write(string const & filename) const +void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const { - ofstream ofs(filename.c_str()); + ofstream ofs(filename.toFilesystemEncoding().c_str()); if (ofs) - output(ofs); + write(ofs, ignore_system_lyxrc); } void LyXRC::print() const { if (lyxerr.debugging()) - output(lyxerr); + write(lyxerr, false); else - output(cout); + write(cout, false); } -void LyXRC::output(ostream & os) const +class SameMover { +public: + typedef std::pair Data; + + SameMover(Data const & comparison) + : comparison_(comparison) {} + + bool operator()(Data const & data) const + { + return data.first == comparison_.first && + data.second.command() == comparison_.second.command(); + } + +private: + Data comparison_; +}; + + +void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const { os << "### This file is part of\n" << "### ========================================================\n" @@ -1160,11 +1275,11 @@ void LyXRC::output(ostream & os) const case RC_LAST: case RC_INPUT: // input/include files are not done here - case RC_BIND: - // bindings is not written to the preferences file. case RC_BINDFILE: - if (bind_file != system_lyxrc.bind_file) { - os << "\\bind_file " << bind_file << "\n"; + if (ignore_system_lyxrc || + bind_file != system_lyxrc.bind_file) { + string const path = os::external_path(bind_file); + os << "\\bind_file \"" << path << "\"\n"; } // // Misc Section @@ -1174,40 +1289,55 @@ void LyXRC::output(ostream & os) const << "#\n\n"; // bind files are not done here. + + case RC_PATH_PREFIX: + if (ignore_system_lyxrc || + path_prefix != system_lyxrc.path_prefix) { + os << "\\path_prefix \"" << path_prefix << "\"\n"; + } + case RC_UIFILE: - if (ui_file != system_lyxrc.ui_file) { - os << "\\ui_file \"" << ui_file << "\"\n"; + if (ignore_system_lyxrc || + ui_file != system_lyxrc.ui_file) { + string const path = os::external_path(ui_file); + os << "\\ui_file \"" << path << "\"\n"; } case RC_AUTOREGIONDELETE: - if (auto_region_delete != system_lyxrc.auto_region_delete) { + if (ignore_system_lyxrc || + auto_region_delete != system_lyxrc.auto_region_delete) { os << "# Set to false to inhibit automatic replacement of\n" << "# the current selection.\n" - << "\\auto_region_delete " << tostr(auto_region_delete) + << "\\auto_region_delete " << convert(auto_region_delete) << '\n'; } case RC_AUTORESET_OPTIONS: - if (auto_reset_options != system_lyxrc.auto_reset_options) { + if (ignore_system_lyxrc || + auto_reset_options != system_lyxrc.auto_reset_options) { os << "# Set to false to inhibit automatic reset of\n" << "# the class options to defaults on class change.\n" - << "\\auto_reset_options " << tostr(auto_reset_options) + << "\\auto_reset_options " + << convert(auto_reset_options) << '\n'; } case RC_AUTOSAVE: - if (autosave != system_lyxrc.autosave) { + if (ignore_system_lyxrc || + autosave != system_lyxrc.autosave) { os << "# The time interval between auto-saves in seconds.\n" << "\\autosave " << autosave << '\n'; } case RC_DISPLAY_GRAPHICS: - if (display_graphics != system_lyxrc.display_graphics) { + if (ignore_system_lyxrc || + display_graphics != system_lyxrc.display_graphics) { os << "# Display graphics within LyX\n" << "# monochrome|grayscale|color|none\n" << "\\display_graphics " - << lyx::graphics::displayTranslator.find(display_graphics) + << graphics::displayTranslator().find(display_graphics) << '\n'; } case RC_VIEWDVI_PAPEROPTION: - if (view_dvi_paper_option + if (ignore_system_lyxrc || + view_dvi_paper_option != system_lyxrc.view_dvi_paper_option) { os << "# Options used to specify paper size to the\n" << "# view_dvi_command (e.g. -paper)\n" @@ -1215,61 +1345,91 @@ void LyXRC::output(ostream & os) const << view_dvi_paper_option << "\"\n"; } case RC_DEFAULT_PAPERSIZE: - if (default_papersize != system_lyxrc.default_papersize) { + if (ignore_system_lyxrc || + default_papersize != system_lyxrc.default_papersize) { os << "# The default papersize to use.\n" << "\\default_papersize \""; switch (default_papersize) { - case BufferParams::PAPER_USLETTER: + case PAPER_DEFAULT: + os << "default"; break; + case PAPER_USLETTER: os << "usletter"; break; - case BufferParams::PAPER_LEGALPAPER: + case PAPER_USLEGAL: os << "legal"; break; - case BufferParams::PAPER_EXECUTIVEPAPER: + case PAPER_USEXECUTIVE: os << "executive"; break; - case BufferParams::PAPER_A3PAPER: + case PAPER_A3: os << "a3"; break; - case BufferParams::PAPER_A4PAPER: + case PAPER_A4: os << "a4"; break; - case BufferParams::PAPER_A5PAPER: + case PAPER_A5: os << "a5"; break; - case BufferParams::PAPER_B5PAPER: + case PAPER_B5: os << "b5"; break; - case BufferParams::PAPER_DEFAULT: break; + case PAPER_CUSTOM: + case PAPER_B3: + case PAPER_B4: break; } os << "\"\n"; } - case RC_PS_COMMAND: - if (ps_command != system_lyxrc.ps_command) { - os << "# Program used for interpreting postscript.\n" - << "\\ps_command \"" << ps_command << "\"\n"; - } case RC_CHKTEX_COMMAND: - if (chktex_command != system_lyxrc.chktex_command) { + if (ignore_system_lyxrc || + chktex_command != system_lyxrc.chktex_command) { os << "\\chktex_command \"" << chktex_command << "\"\n"; } + case RC_BIBTEX_COMMAND: + if (ignore_system_lyxrc || + bibtex_command != system_lyxrc.bibtex_command) { + os << "\\bibtex_command \"" << bibtex_command << "\"\n"; + } + case RC_INDEX_COMMAND: + if (ignore_system_lyxrc || + index_command != system_lyxrc.index_command) { + os << "\\index_command \"" << index_command << "\"\n"; + } + case RC_TEX_EXPECTS_WINDOWS_PATHS: + if (ignore_system_lyxrc || + windows_style_tex_paths != system_lyxrc.windows_style_tex_paths) { + os << "\\tex_expects_windows_paths " + << convert(windows_style_tex_paths) << '\n'; + } + case RC_TEX_ALLOWS_SPACES: + if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) { + os << "\\tex_allows_spaces " + << convert(tex_allows_spaces) << '\n'; + } case RC_KBMAP: - if (use_kbmap != system_lyxrc.use_kbmap) { - os << "\\kbmap " << tostr(use_kbmap) << '\n'; + if (ignore_system_lyxrc || + use_kbmap != system_lyxrc.use_kbmap) { + os << "\\kbmap " << convert(use_kbmap) << '\n'; } case RC_KBMAP_PRIMARY: - if (primary_kbmap != system_lyxrc.primary_kbmap) { - os << "\\kbmap_primary \"" << primary_kbmap << "\"\n"; + if (ignore_system_lyxrc || + primary_kbmap != system_lyxrc.primary_kbmap) { + string const path = os::external_path(primary_kbmap); + os << "\\kbmap_primary \"" << path << "\"\n"; } case RC_KBMAP_SECONDARY: - if (secondary_kbmap != system_lyxrc.secondary_kbmap) { - os << "\\kbmap_secondary \"" << secondary_kbmap - << "\"\n"; + if (ignore_system_lyxrc || + secondary_kbmap != system_lyxrc.secondary_kbmap) { + string const path = os::external_path(secondary_kbmap); + os << "\\kbmap_secondary \"" << path << "\"\n"; } case RC_SERVERPIPE: - if (lyxpipes != system_lyxrc.lyxpipes) { - os << "\\serverpipe \"" << lyxpipes << "\"\n"; + if (ignore_system_lyxrc || + lyxpipes != system_lyxrc.lyxpipes) { + string const path = os::external_path(lyxpipes); + os << "\\serverpipe \"" << path << "\"\n"; } case RC_DATE_INSERT_FORMAT: - if (date_insert_format != system_lyxrc.date_insert_format) { + if (ignore_system_lyxrc || + date_insert_format != system_lyxrc.date_insert_format) { os << "\\date_insert_format \"" << date_insert_format << "\"\n"; } case RC_LABEL_INIT_LENGTH: - if (label_init_length != system_lyxrc.label_init_length) { + if (ignore_system_lyxrc || + label_init_length != system_lyxrc.label_init_length) { os << "\\label_init_length " << label_init_length << '\n'; } @@ -1281,115 +1441,175 @@ void LyXRC::output(ostream & os) const os << "\\user_email \"" << user_email << "\"\n"; case RC_SHOW_BANNER: - if (show_banner != system_lyxrc.show_banner) { - os << "\\show_banner " << tostr(show_banner) << '\n'; + if (ignore_system_lyxrc || + show_banner != system_lyxrc.show_banner) { + os << "\\show_banner " << convert(show_banner) << '\n'; } case RC_PREVIEW: - if (preview != system_lyxrc.preview) { - os << "\\preview " << tostr(preview) << '\n'; + if (ignore_system_lyxrc || + preview != system_lyxrc.preview) { + string status; + switch (preview) { + case PREVIEW_ON: + status = "on"; + break; + case PREVIEW_NO_MATH: + status = "no_math"; + break; + case PREVIEW_OFF: + status = "off"; + break; + } + os << "\\preview " << status << '\n'; } case RC_PREVIEW_HASHED_LABELS: - if (preview_hashed_labels != + if (ignore_system_lyxrc || + preview_hashed_labels != system_lyxrc.preview_hashed_labels) { os << "\\preview_hashed_labels " - << tostr(preview_hashed_labels) << '\n'; + << convert(preview_hashed_labels) << '\n'; } case RC_PREVIEW_SCALE_FACTOR: - if (preview_scale_factor != system_lyxrc.preview_scale_factor) { + if (ignore_system_lyxrc || + preview_scale_factor != system_lyxrc.preview_scale_factor) { os << "\\preview_scale_factor " << preview_scale_factor << '\n'; } + case RC_USE_CONVERTER_CACHE: + if (ignore_system_lyxrc || + use_converter_cache != system_lyxrc.use_converter_cache) { + os << "\\use_converter_cache " + << convert(use_converter_cache) << '\n'; + } + + case RC_CONVERTER_CACHE_MAXAGE: + if (ignore_system_lyxrc || + converter_cache_maxage != system_lyxrc.converter_cache_maxage) { + os << "\\converter_cache_maxage " + << converter_cache_maxage << '\n'; + } + os << "\n#\n" << "# SCREEN & FONTS SECTION ############################\n" << "#\n\n"; case RC_POPUP_NORMAL_FONT: - if (popup_normal_font != system_lyxrc.popup_normal_font) { + if (ignore_system_lyxrc || + popup_normal_font != system_lyxrc.popup_normal_font) { os << "\\popup_normal_font \"" << popup_normal_font << "\"\n"; } case RC_POPUP_BOLD_FONT: - if (popup_bold_font != system_lyxrc.popup_bold_font) { + if (ignore_system_lyxrc || + popup_bold_font != system_lyxrc.popup_bold_font) { os << "\\popup_bold_font \"" << popup_bold_font << "\"\n"; } case RC_POPUP_FONT_ENCODING: - if (popup_font_encoding != system_lyxrc.popup_font_encoding) { + if (ignore_system_lyxrc || + popup_font_encoding != system_lyxrc.popup_font_encoding) { os << "\\popup_font_encoding \"" << popup_font_encoding << "\"\n"; } case RC_SCREEN_DPI: - if (dpi != system_lyxrc.dpi) { + if (ignore_system_lyxrc || + dpi != system_lyxrc.dpi) { os << "\\screen_dpi " << dpi << '\n'; } case RC_SCREEN_ZOOM: - if (zoom != system_lyxrc.zoom) { + if (ignore_system_lyxrc || + zoom != system_lyxrc.zoom) { os << "\\screen_zoom " << zoom << '\n'; } - case RC_WHEEL_JUMP: - if (wheel_jump != system_lyxrc.wheel_jump) { - os << "\\wheel_jump " << wheel_jump << '\n'; + case RC_SCREEN_GEOMETRY_HEIGHT: + if (ignore_system_lyxrc || + geometry_height != system_lyxrc.geometry_height) { + os << "\\screen_geometry_height " << geometry_height + << '\n'; + } + case RC_SCREEN_GEOMETRY_WIDTH: + if (ignore_system_lyxrc || + geometry_width != system_lyxrc.geometry_width) { + os << "\\screen_geometry_width " << geometry_width + << '\n'; + } + case RC_SCREEN_GEOMETRY_XYSAVED: + if (ignore_system_lyxrc || + geometry_xysaved != system_lyxrc.geometry_xysaved) { + os << "\\screen_geometry_xysaved " << convert(geometry_xysaved) + << '\n'; } case RC_CURSOR_FOLLOWS_SCROLLBAR: - if (cursor_follows_scrollbar + if (ignore_system_lyxrc || + cursor_follows_scrollbar != system_lyxrc.cursor_follows_scrollbar) { os << "\\cursor_follows_scrollbar " - << tostr(cursor_follows_scrollbar) << '\n'; + << convert(cursor_follows_scrollbar) << '\n'; } case RC_DIALOGS_ICONIFY_WITH_MAIN: - if (dialogs_iconify_with_main + if (ignore_system_lyxrc || + dialogs_iconify_with_main != system_lyxrc.dialogs_iconify_with_main) { os << "\\dialogs_iconify_with_main " - << tostr(dialogs_iconify_with_main) << '\n'; + << convert(dialogs_iconify_with_main) << '\n'; } case RC_SCREEN_FONT_ROMAN: - if (roman_font_name != system_lyxrc.roman_font_name) { + if (ignore_system_lyxrc || + roman_font_name != system_lyxrc.roman_font_name) { os << "\\screen_font_roman \"" << roman_font_name << "\"\n"; } case RC_SCREEN_FONT_ROMAN_FOUNDRY: - if (roman_font_foundry != system_lyxrc.roman_font_foundry) { + if (ignore_system_lyxrc || + roman_font_foundry != system_lyxrc.roman_font_foundry) { os << "\\screen_font_roman_foundry \"" << roman_font_foundry << "\"\n"; } case RC_SCREEN_FONT_SANS: - if (sans_font_name != system_lyxrc.sans_font_name) { + if (ignore_system_lyxrc || + sans_font_name != system_lyxrc.sans_font_name) { os << "\\screen_font_sans \"" << sans_font_name << "\"\n"; } case RC_SCREEN_FONT_SANS_FOUNDRY: - if (sans_font_foundry != system_lyxrc.sans_font_foundry) { + if (ignore_system_lyxrc || + sans_font_foundry != system_lyxrc.sans_font_foundry) { os << "\\screen_font_sans_foundry \"" << sans_font_foundry << "\"\n"; } case RC_SCREEN_FONT_TYPEWRITER: - if (typewriter_font_name != system_lyxrc.typewriter_font_name) { + if (ignore_system_lyxrc || + typewriter_font_name != system_lyxrc.typewriter_font_name) { os << "\\screen_font_typewriter \"" << typewriter_font_name << "\"\n"; } case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY: - if (typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) { + if (ignore_system_lyxrc || + typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) { os << "\\screen_font_typewriter_foundry \"" << typewriter_font_foundry << "\"\n"; } case RC_SCREEN_FONT_SCALABLE: - if (use_scalable_fonts != system_lyxrc.use_scalable_fonts) { + if (ignore_system_lyxrc || + use_scalable_fonts != system_lyxrc.use_scalable_fonts) { os << "\\screen_font_scalable " - << tostr(use_scalable_fonts) + << convert(use_scalable_fonts) << '\n'; } case RC_SCREEN_FONT_ENCODING: - if (font_norm != system_lyxrc.font_norm) { + if (ignore_system_lyxrc || + font_norm != system_lyxrc.font_norm) { os << "\\screen_font_encoding \"" << font_norm << "\"\n"; } case RC_SCREEN_FONT_SIZES: - if (font_sizes[LyXFont::SIZE_TINY] + if (ignore_system_lyxrc || + font_sizes[LyXFont::SIZE_TINY] != system_lyxrc.font_sizes[LyXFont::SIZE_TINY] || font_sizes[LyXFont::SIZE_SCRIPT] != system_lyxrc.font_sizes[LyXFont::SIZE_SCRIPT] || @@ -1434,7 +1654,8 @@ void LyXRC::output(ostream & os) const LColor::color lc = static_cast(i); string const col(lcolor.getX11Name(lc)); - if (col != system_lcolor.getX11Name(lc)) { + if (ignore_system_lyxrc || + col != system_lcolor.getX11Name(lc)) { os << "\\set_color \"" << lcolor.getLyXName(lc) << "\" \"" << col << "\"\n"; @@ -1446,94 +1667,113 @@ void LyXRC::output(ostream & os) const << "#\n\n"; case RC_PRINTER: - if (printer != system_lyxrc.printer) { + if (ignore_system_lyxrc || + printer != system_lyxrc.printer) { os << "\\printer \"" << printer << "\"\n"; } case RC_PRINT_ADAPTOUTPUT: - if (print_adapt_output != system_lyxrc.print_adapt_output) { + if (ignore_system_lyxrc || + print_adapt_output != system_lyxrc.print_adapt_output) { os << "\\print_adapt_output " - << tostr(print_adapt_output) + << convert(print_adapt_output) << '\n'; } case RC_PRINT_COMMAND: - if (print_command != system_lyxrc.print_command) { + if (ignore_system_lyxrc || + print_command != system_lyxrc.print_command) { os << "\\print_command \"" << print_command << "\"\n"; } case RC_PRINTEXSTRAOPTIONS: - if (print_extra_options != system_lyxrc.print_extra_options) { + if (ignore_system_lyxrc || + print_extra_options != system_lyxrc.print_extra_options) { os << "\\print_extra_options \"" << print_extra_options << "\"\n"; } case RC_PRINTSPOOL_COMMAND: - if (print_spool_command != system_lyxrc.print_spool_command) { + if (ignore_system_lyxrc || + print_spool_command != system_lyxrc.print_spool_command) { os << "\\print_spool_command \"" << print_spool_command << "\"\n"; } case RC_PRINTSPOOL_PRINTERPREFIX: - if (print_spool_printerprefix + if (ignore_system_lyxrc || + print_spool_printerprefix != system_lyxrc.print_spool_printerprefix) { os << "\\print_spool_printerprefix \"" << print_spool_printerprefix << "\"\n"; } case RC_PRINTEVENPAGEFLAG: - if (print_evenpage_flag != system_lyxrc.print_evenpage_flag) { + if (ignore_system_lyxrc || + print_evenpage_flag != system_lyxrc.print_evenpage_flag) { os << "\\print_evenpage_flag \"" << print_evenpage_flag << "\"\n"; } case RC_PRINTODDPAGEFLAG: - if (print_oddpage_flag != system_lyxrc.print_oddpage_flag) { + if (ignore_system_lyxrc || + print_oddpage_flag != system_lyxrc.print_oddpage_flag) { os << "\\print_oddpage_flag \"" << print_oddpage_flag << "\"\n"; } case RC_PRINTREVERSEFLAG: - if (print_reverse_flag != system_lyxrc.print_reverse_flag) { + if (ignore_system_lyxrc || + print_reverse_flag != system_lyxrc.print_reverse_flag) { os << "\\print_reverse_flag \"" << print_reverse_flag << "\"\n"; } case RC_PRINTLANDSCAPEFLAG: - if (print_landscape_flag != system_lyxrc.print_landscape_flag) { + if (ignore_system_lyxrc || + print_landscape_flag != system_lyxrc.print_landscape_flag) { os << "\\print_landscape_flag \"" << print_landscape_flag << "\"\n"; } case RC_PRINTPAGERANGEFLAG: - if (print_pagerange_flag != system_lyxrc.print_pagerange_flag) { + if (ignore_system_lyxrc || + print_pagerange_flag != system_lyxrc.print_pagerange_flag) { os << "\\print_pagerange_flag \"" << print_pagerange_flag << "\"\n"; } case RC_PRINTCOPIESFLAG: - if (print_copies_flag != system_lyxrc.print_copies_flag) { + if (ignore_system_lyxrc || + print_copies_flag != system_lyxrc.print_copies_flag) { os << "\\print_copies_flag \"" << print_copies_flag << "\"\n"; } case RC_PRINTCOLLCOPIESFLAG: - if (print_collcopies_flag + if (ignore_system_lyxrc || + print_collcopies_flag != system_lyxrc.print_collcopies_flag) { os << "\\print_collcopies_flag \"" << print_collcopies_flag << "\"\n"; } case RC_PRINTPAPERFLAG: - if (print_paper_flag != system_lyxrc.print_paper_flag) { + if (ignore_system_lyxrc || + print_paper_flag != system_lyxrc.print_paper_flag) { os << "\\print_paper_flag \"" << print_paper_flag << "\"\n"; } case RC_PRINTPAPERDIMENSIONFLAG: - if (print_paper_dimension_flag + if (ignore_system_lyxrc || + print_paper_dimension_flag != system_lyxrc.print_paper_dimension_flag) { os << "\\print_paper_dimension_flag \"" << print_paper_dimension_flag << "\"\n"; } case RC_PRINTTOPRINTER: - if (print_to_printer != system_lyxrc.print_to_printer) { + if (ignore_system_lyxrc || + print_to_printer != system_lyxrc.print_to_printer) { os << "\\print_to_printer \"" << print_to_printer << "\"\n"; } case RC_PRINTTOFILE: - if (print_to_file != system_lyxrc.print_to_file) { - os << "\\print_to_file \"" << print_to_file << "\"\n"; + if (ignore_system_lyxrc || + print_to_file != system_lyxrc.print_to_file) { + string const path = os::external_path(print_to_file); + os << "\\print_to_file \"" << path << "\"\n"; } case RC_PRINTFILEEXTENSION: - if (print_file_extension != system_lyxrc.print_file_extension) { + if (ignore_system_lyxrc || + print_file_extension != system_lyxrc.print_file_extension) { os << "\\print_file_extension \"" << print_file_extension << "\"\n"; @@ -1544,14 +1784,16 @@ void LyXRC::output(ostream & os) const << "#\n\n"; case RC_CUSTOM_EXPORT_COMMAND: - if (custom_export_command + if (ignore_system_lyxrc || + custom_export_command != system_lyxrc.custom_export_command) { os << "\\custom_export_command \"" << custom_export_command << "\"\n"; } case RC_CUSTOM_EXPORT_FORMAT: - if (custom_export_format + if (ignore_system_lyxrc || + custom_export_format != system_lyxrc.custom_export_format) { os << "\\custom_export_format \"" << custom_export_format << "\"\n"; @@ -1562,7 +1804,8 @@ void LyXRC::output(ostream & os) const << "#\n\n"; case RC_FONT_ENCODING: - if (fontenc != system_lyxrc.fontenc) { + if (ignore_system_lyxrc || + fontenc != system_lyxrc.fontenc) { os << "\\font_encoding \"" << fontenc << "\"\n"; } @@ -1571,54 +1814,73 @@ void LyXRC::output(ostream & os) const << "#\n\n"; case RC_DOCUMENTPATH: - if (document_path != system_lyxrc.document_path) { - os << "\\document_path \"" << document_path << "\"\n"; + if (ignore_system_lyxrc || + document_path != system_lyxrc.document_path) { + string const path = os::external_path(document_path); + os << "\\document_path \"" << path << "\"\n"; + } + case RC_USELASTFILEPOS: + if (ignore_system_lyxrc || + use_lastfilepos != system_lyxrc.use_lastfilepos) { + os << "\\use_lastfilepos " << convert(use_lastfilepos) + << '\n'; } - case RC_LASTFILES: - if (lastfiles != system_lyxrc.lastfiles) { - os << "\\lastfiles \"" << lastfiles << "\"\n"; + case RC_LOADSESSION: + if (ignore_system_lyxrc || + load_session != system_lyxrc.load_session) { + os << "\\load_session " << convert(load_session) + << "\n"; } case RC_NUMLASTFILES: - if (num_lastfiles != system_lyxrc.num_lastfiles) { + if (ignore_system_lyxrc || + num_lastfiles != system_lyxrc.num_lastfiles) { os << "\\num_lastfiles " << num_lastfiles << '\n'; } case RC_CHECKLASTFILES: - if (check_lastfiles != system_lyxrc.check_lastfiles) { - os << "\\check_lastfiles " << tostr(check_lastfiles) + if (ignore_system_lyxrc || + check_lastfiles != system_lyxrc.check_lastfiles) { + os << "\\check_lastfiles " << convert(check_lastfiles) << '\n'; } case RC_TEMPLATEPATH: - if (template_path != system_lyxrc.template_path) { - os << "\\template_path \"" << template_path << "\"\n"; + if (ignore_system_lyxrc || + template_path != system_lyxrc.template_path) { + string const path = os::external_path(template_path); + os << "\\template_path \"" << path << "\"\n"; } case RC_TEMPDIRPATH: - if (tempdir_path != system_lyxrc.tempdir_path) { - os << "\\tempdir_path \"" << tempdir_path << "\"\n"; + if (ignore_system_lyxrc || + tempdir_path != system_lyxrc.tempdir_path) { + string const path = os::external_path(tempdir_path); + os << "\\tempdir_path \"" << path << "\"\n"; } case RC_USETEMPDIR: - if (use_tempdir != system_lyxrc.use_tempdir) { - os << "\\use_tempdir " << tostr(use_tempdir) << '\n'; - } - case RC_ASCII_LINELEN: - if (ascii_linelen != system_lyxrc.ascii_linelen) { - os << "\\ascii_linelen " << ascii_linelen << '\n'; + // Ignore it + case RC_PLAINTEXT_LINELEN: + if (ignore_system_lyxrc || + plaintext_linelen != system_lyxrc.plaintext_linelen) { + os << "\\plaintext_linelen " << plaintext_linelen << '\n'; } case RC_MAKE_BACKUP: - if (make_backup != system_lyxrc.make_backup) { - os << "\\make_backup " << tostr(make_backup) << '\n'; + if (ignore_system_lyxrc || + make_backup != system_lyxrc.make_backup) { + os << "\\make_backup " << convert(make_backup) << '\n'; } case RC_BACKUPDIR_PATH: - if (backupdir_path != system_lyxrc.backupdir_path) { - os << "\\backupdir_path \"" << backupdir_path << "\"\n"; + if (ignore_system_lyxrc || + backupdir_path != system_lyxrc.backupdir_path) { + string const path = os::external_path(backupdir_path); + os << "\\backupdir_path \"" << path << "\"\n"; } os << "\n#\n" - << "# ASCII EXPORT SECTION ##############################\n" + << "# PLAIN TEXT EXPORT SECTION ##############################\n" << "#\n\n"; - case RC_ASCIIROFF_COMMAND: - if (ascii_roff_command != system_lyxrc.ascii_roff_command) { - os << "\\ascii_roff_command \"" << ascii_roff_command + case RC_PLAINTEXT_ROFF_COMMAND: + if (ignore_system_lyxrc || + plaintext_roff_command != system_lyxrc.plaintext_roff_command) { + os << "\\plaintext_roff_command \"" << plaintext_roff_command << "\"\n"; } @@ -1626,53 +1888,62 @@ void LyXRC::output(ostream & os) const << "# SPELLCHECKER SECTION ##############################\n" << "#\n\n"; case RC_USE_SPELL_LIB: - if (use_spell_lib != system_lyxrc.use_spell_lib) { - os << "\\use_spell_lib " << tostr(use_spell_lib) << '\n'; + if (ignore_system_lyxrc || + use_spell_lib != system_lyxrc.use_spell_lib) { + os << "\\use_spell_lib " << convert(use_spell_lib) << '\n'; } case RC_SPELL_COMMAND: - if (isp_command != system_lyxrc.isp_command) { + if (ignore_system_lyxrc || + isp_command != system_lyxrc.isp_command) { os << "\\spell_command \"" << isp_command << "\"\n"; } case RC_ACCEPT_COMPOUND: - if (isp_accept_compound != system_lyxrc.isp_accept_compound) { - os << "\\accept_compound " << tostr(isp_accept_compound) + if (ignore_system_lyxrc || + isp_accept_compound != system_lyxrc.isp_accept_compound) { + os << "\\accept_compound " << convert(isp_accept_compound) << '\n'; } case RC_USE_ALT_LANG: - if (isp_use_alt_lang != system_lyxrc.isp_use_alt_lang) { - os << "\\use_alt_language " << tostr(isp_use_alt_lang) + if (ignore_system_lyxrc || + isp_use_alt_lang != system_lyxrc.isp_use_alt_lang) { + os << "\\use_alt_language " << convert(isp_use_alt_lang) << '\n'; } case RC_ALT_LANG: - if (isp_alt_lang != system_lyxrc.isp_alt_lang) { + if (ignore_system_lyxrc || + isp_alt_lang != system_lyxrc.isp_alt_lang) { os << "\\alternate_language \"" << isp_alt_lang << "\"\n"; } case RC_USE_ESC_CHARS: - if (isp_use_esc_chars != system_lyxrc.isp_use_esc_chars) { - os << "\\use_escape_chars " << tostr(isp_use_esc_chars) + if (ignore_system_lyxrc || + isp_use_esc_chars != system_lyxrc.isp_use_esc_chars) { + os << "\\use_escape_chars " << convert(isp_use_esc_chars) << '\n'; } case RC_ESC_CHARS: - if (isp_esc_chars != system_lyxrc.isp_esc_chars) { + if (ignore_system_lyxrc || + isp_esc_chars != system_lyxrc.isp_esc_chars) { os << "\\escape_chars \"" << isp_esc_chars << "\"\n"; } case RC_USE_PERS_DICT: - if (isp_use_pers_dict != system_lyxrc.isp_use_pers_dict) { + if (ignore_system_lyxrc || + isp_use_pers_dict != system_lyxrc.isp_use_pers_dict) { os << "\\use_personal_dictionary " - << tostr(isp_use_pers_dict) + << convert(isp_use_pers_dict) << '\n'; } case RC_PERS_DICT: if (isp_pers_dict != system_lyxrc.isp_pers_dict) { - os << "\\personal_dictionary \"" << isp_pers_dict - << "\"\n"; + string const path = os::external_path(isp_pers_dict); + os << "\\personal_dictionary \"" << path << "\"\n"; } case RC_USE_INP_ENC: - if (isp_use_input_encoding + if (ignore_system_lyxrc || + isp_use_input_encoding != system_lyxrc.isp_use_input_encoding) { os << "\\use_input_encoding " - << tostr(isp_use_input_encoding) + << convert(isp_use_input_encoding) << '\n'; } @@ -1681,62 +1952,72 @@ void LyXRC::output(ostream & os) const << "#\n\n"; case RC_RTL_SUPPORT: - if (rtl_support != system_lyxrc.rtl_support) { - os << "\\rtl " << tostr(rtl_support) << '\n'; + if (ignore_system_lyxrc || + rtl_support != system_lyxrc.rtl_support) { + os << "\\rtl " << convert(rtl_support) << '\n'; } case RC_LANGUAGE_PACKAGE: - if (language_package != system_lyxrc.language_package) { + if (ignore_system_lyxrc || + language_package != system_lyxrc.language_package) { os << "\\language_package \"" << language_package << "\"\n"; } case RC_LANGUAGE_GLOBAL_OPTIONS: - if (language_global_options + if (ignore_system_lyxrc || + language_global_options != system_lyxrc.language_global_options) { os << "\\language_global_options \"" - << tostr(language_global_options) + << convert(language_global_options) << "\"\n"; } case RC_LANGUAGE_USE_BABEL: - if (language_use_babel != system_lyxrc.language_use_babel) { + if (ignore_system_lyxrc || + language_use_babel != system_lyxrc.language_use_babel) { os << "\\language_use_babel \"" - << tostr(language_use_babel) + << convert(language_use_babel) << "\"\n"; } case RC_LANGUAGE_COMMAND_BEGIN: - if (language_command_begin + if (ignore_system_lyxrc || + language_command_begin != system_lyxrc.language_command_begin) { os << "\\language_command_begin \"" << language_command_begin << "\"\n"; } case RC_LANGUAGE_COMMAND_END: - if (language_command_end + if (ignore_system_lyxrc || + language_command_end != system_lyxrc.language_command_end) { os << "\\language_command_end \"" << language_command_end << "\"\n"; } case RC_LANGUAGE_COMMAND_LOCAL: - if (language_command_local + if (ignore_system_lyxrc || + language_command_local != system_lyxrc.language_command_local) { os << "\\language_command_local \"" << language_command_local << "\"\n"; } case RC_LANGUAGE_AUTO_BEGIN: - if (language_auto_begin != system_lyxrc.language_auto_begin) { + if (ignore_system_lyxrc || + language_auto_begin != system_lyxrc.language_auto_begin) { os << "\\language_auto_begin " - << tostr(language_auto_begin) << '\n'; + << convert(language_auto_begin) << '\n'; } case RC_LANGUAGE_AUTO_END: - if (language_auto_end != system_lyxrc.language_auto_end) { + if (ignore_system_lyxrc || + language_auto_end != system_lyxrc.language_auto_end) { os << "\\language_auto_end " - << tostr(language_auto_end) << '\n'; + << convert(language_auto_end) << '\n'; } case RC_MARK_FOREIGN_LANGUAGE: - if (mark_foreign_language + if (ignore_system_lyxrc || + mark_foreign_language != system_lyxrc.mark_foreign_language) { os << "\\mark_foreign_language " << - tostr(mark_foreign_language) << '\n'; + convert(mark_foreign_language) << '\n'; } os << "\n#\n" @@ -1744,11 +2025,13 @@ void LyXRC::output(ostream & os) const << "#\n\n"; case RC_AUTO_NUMBER: - if (auto_number != system_lyxrc.auto_number) { - os << "\\auto_number " << tostr(auto_number) << '\n'; + if (ignore_system_lyxrc || + auto_number != system_lyxrc.auto_number) { + os << "\\auto_number " << convert(auto_number) << '\n'; } case RC_DEFAULT_LANGUAGE: - if (default_language != system_lyxrc.default_language) { + if (ignore_system_lyxrc || + default_language != system_lyxrc.default_language) { os << "\\default_language " << default_language << '\n'; } @@ -1757,7 +2040,7 @@ void LyXRC::output(ostream & os) const << "#\n\n"; case RC_FORMAT: - // Look for deleted formats + // New/modified formats for (Formats::const_iterator cit = formats.begin(); cit != formats.end(); ++cit) { Format const * format = @@ -1765,29 +2048,35 @@ void LyXRC::output(ostream & os) const if (!format || format->extension() != cit->extension() || format->prettyname() != cit->prettyname() || - format->shortcut() != cit->shortcut()) + format->shortcut() != cit->shortcut() || + format->viewer() != cit->viewer() || + format->editor() != cit->editor() || + format->documentFormat() != cit->documentFormat() || + format->vectorFormat() != cit->vectorFormat()) { os << "\\format \"" << cit->name() << "\" \"" << cit->extension() << "\" \"" << cit->prettyname() << "\" \"" - << cit->shortcut() << "\"\n"; + << cit->shortcut() << "\" \"" + << cit->viewer() << "\" \"" + << cit->editor() << "\" \""; + std::vector flags; + if (cit->documentFormat()) + flags.push_back("document"); + if (cit->vectorFormat()) + flags.push_back("vector"); + os << support::getStringFromVector(flags); + os << "\"\n"; + } } - // New/modifed formats + // Look for deleted formats for (Formats::const_iterator cit = system_formats.begin(); cit != system_formats.end(); ++cit) if (!formats.getFormat(cit->name())) os << "\\format \"" << cit->name() - << "\" \"\" \"\" \"\"\n"; + << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n"; case RC_VIEWER: - for (Formats::const_iterator cit = formats.begin(); - cit != formats.end(); ++cit) { - Format const * format = - system_formats.getFormat(cit->name()); - if ((!format || format->viewer() != cit->viewer()) && - (format || !cit->viewer().empty())) - os << "\\viewer \"" << cit->name() << "\" \"" - << cit->viewer() << "\"\n"; - } + // Ignore it os << "\n#\n" << "# CONVERTERS SECTION ##########################\n" @@ -1795,10 +2084,10 @@ void LyXRC::output(ostream & os) const case RC_CONVERTER: // Look for new converters - for (Converters::const_iterator cit = converters.begin(); - cit != converters.end(); ++cit) { + for (Converters::const_iterator cit = theConverters().begin(); + cit != theConverters().end(); ++cit) { Converter const * converter = - system_converters.getConverter(cit->from, + theSystemConverters().getConverter(cit->from, cit->to); if (!converter || converter->command != cit->command || @@ -1810,13 +2099,41 @@ void LyXRC::output(ostream & os) const } // New/modifed converters - for (Converters::const_iterator cit = system_converters.begin(); - cit != system_converters.end(); ++cit) - if (!converters.getConverter(cit->from, cit->to)) + for (Converters::const_iterator cit = theSystemConverters().begin(); + cit != theSystemConverters().end(); ++cit) + if (!theConverters().getConverter(cit->from, cit->to)) os << "\\converter \"" << cit->from << "\" \"" << cit->to << "\" \"\" \"\"\n"; + case RC_COPIER: + os << "\n#\n" + << "# COPIERS SECTION ##########################\n" + << "#\n\n"; + + // Look for new movers + Movers::const_iterator const sysbegin = theSystemMovers().begin(); + Movers::const_iterator const sysend = theSystemMovers().end(); + Movers::const_iterator it = theMovers().begin(); + Movers::const_iterator end = theMovers().end(); + + for (; it != end; ++it) { + Movers::const_iterator const sysit = + std::find_if(sysbegin, sysend, SameMover(*it)); + if (sysit == sysend) { + std::string const & fmt = it->first; + std::string const & command = + it->second.command(); + + os << "\\copier " << fmt + << " \"" << command << "\"\n"; + } + } + + // We don't actually delete SpecialisedMover(s) from the + // map, just clear their 'command', so there's no need + // to test for anything else. } + os.flush(); } @@ -1841,348 +2158,409 @@ void LyXRC::set_font_norm_type() } +#if 0 string const LyXRC::getDescription(LyXRCTags tag) { - string str; + docstring str; switch (tag) { - case RC_FONT_ENCODING: - str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages."); + case RC_ACCEPT_COMPOUND: + str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?"); break; - case RC_PRINTER: - str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER."); + case RC_ALT_LANG: + case RC_USE_ALT_LANG: + str = _("Specify an alternate language. The default is to use the language of the document."); break; - case RC_PRINT_COMMAND: - str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\"."); + case RC_PLAINTEXT_ROFF_COMMAND: + str = _("Use to define an external program to render tables in plain text output. E.g. \"groff -t -Tlatin1 $$FName\" where $$FName is the input file. If \"\" is specified, an internal routine is used."); break; - case RC_PRINTEVENPAGEFLAG: - str = _("The option to print only even pages."); + case RC_PLAINTEXT_LINELEN: + str = _("The maximum line length of exported plain text/LaTeX/SGML files. If set to 0, paragraphs are output in a single line; if the line length is > 0, paragraphs are separated by a blank line."); break; - case RC_PRINTODDPAGEFLAG: - str = _("The option to print only odd pages."); + case RC_AUTOREGIONDELETE: + str = _("De-select if you don't want the current selection to be replaced automatically by what you type."); break; - case RC_PRINTPAGERANGEFLAG: - str = _("The option for specifying a comma-separated list of pages to print."); + case RC_AUTORESET_OPTIONS: + str = _("De-select if you don't want the class options to be reset to defaults after class change."); break; - case RC_PRINTCOPIESFLAG: - str = _("The option for specifying the number of copies to print."); + case RC_AUTOSAVE: + str = _("The time interval between auto-saves (in seconds). 0 means no auto-save."); break; - case RC_PRINTCOLLCOPIESFLAG: - str = _("The option for specifying whether the copies should be collated."); + case RC_AUTO_NUMBER: break; - case RC_PRINTREVERSEFLAG: - str = _("The option to reverse the order of the pages printed."); + case RC_BACKUPDIR_PATH: + str = _("The path for storing backup files. If it is an empty string, LyX will store the backup file in the same directory as the original file."); break; - case RC_PRINTLANDSCAPEFLAG: - str = _("The option to print out in landscape."); + case RC_BIBTEX_COMMAND: + str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus)."); break; - case RC_PRINTPAPERFLAG: - str = _("The option to specify paper type."); + case RC_BINDFILE: + str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories."); break; - case RC_PRINTPAPERDIMENSIONFLAG: - str = _("Option to specify the dimensions of the print paper."); + case RC_CHECKLASTFILES: + str = _("Select to check whether the lastfiles still exist."); break; - case RC_PRINTTOPRINTER: - str = _("Option to pass to the print program to print on a specific printer."); + case RC_CHKTEX_COMMAND: + str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation."); break; - case RC_PRINT_ADAPTOUTPUT: - str = _("Select for LyX to pass the name of the destination printer to your print command."); + case RC_CONVERTER: break; - case RC_PRINTTOFILE: - str = _("Option to pass to the print program to print to a file."); + case RC_COPIER: break; - case RC_PRINTFILEEXTENSION: - str = _("Extension of printer program output file. Usually \".ps\"."); + case RC_CURSOR_FOLLOWS_SCROLLBAR: + 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_PRINTEXSTRAOPTIONS: - str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed."); + case RC_CUSTOM_EXPORT_COMMAND: break; - case RC_PRINTSPOOL_COMMAND: - str = _("When set, this printer option automatically prints to a file and then calls a separate print spooling program on that file with the given name and arguments."); + case RC_CUSTOM_EXPORT_FORMAT: break; - case RC_PRINTSPOOL_PRINTERPREFIX: - str = _("If you specify a printer name in the print dialog, the following argument is prepended along with the printer name after the spool command."); + 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_SCREEN_DPI: - str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here."); + case RC_DEFAULT_LANGUAGE: + str = _("New documents will be assigned this language."); break; - case RC_SCREEN_ZOOM: - //xgettext:no-c-format - str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper."); + case RC_DEFAULT_PAPERSIZE: + str = _("Specify the default paper size."); break; - case RC_SCREEN_FONT_SIZES: - str = _("The font sizes used for calculating the scaling of the screen fonts."); + case RC_DIALOGS_ICONIFY_WITH_MAIN: + str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)"); break; - case RC_SCREEN_FONT_ROMAN: - case RC_SCREEN_FONT_SANS: - case RC_SCREEN_FONT_TYPEWRITER: - str = _("The screen fonts used to display the text while editing."); + case RC_DISPLAY_GRAPHICS: + str = _("Select how LyX will display any graphics."); break; - case RC_POPUP_BOLD_FONT: - str = _("The bold font in the dialogs."); + case RC_DOCUMENTPATH: + str = _("The default path for your documents. An empty value selects the directory LyX was started from."); break; - case RC_POPUP_NORMAL_FONT: - str = _("The normal font in the dialogs."); + case RC_ESC_CHARS: + case RC_USE_ESC_CHARS: + str = _("Specify additional chars that can be part of a word."); break; - case RC_SCREEN_FONT_ENCODING: - str = _("The encoding for the screen fonts."); + 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_POPUP_FONT_ENCODING: - str = _("The encoding for the menu/popups fonts."); + case RC_FORMAT: break; - case RC_SET_COLOR: + case RC_INDEX_COMMAND: + str = _("Define the options of makeindex (cf. man makeindex) or select an alternative compiler. E.g., using xindy/make-rules, the command string would be \"makeindex.sh -m $$lang\"."); break; - case RC_AUTOSAVE: - str = _("The time interval between auto-saves (in seconds). 0 means no auto-save."); + case RC_INPUT: break; - case RC_DOCUMENTPATH: - str = _("The default path for your documents. An empty value selects the directory LyX was started from."); + case RC_KBMAP: + case RC_KBMAP_PRIMARY: + case RC_KBMAP_SECONDARY: + str = _("Use this to set the correct mapping file for your keyboard. You'll need this if you for instance want to type German documents on an American keyboard."); break; - case RC_TEMPLATEPATH: - str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from."); + case RC_LABEL_INIT_LENGTH: + str = _("Maximum number of words in the initialization string for a new label"); break; - case RC_TEMPDIRPATH: - str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX."); + case RC_LANGUAGE_AUTO_BEGIN: + str = _("Select if a language switching command is needed at the beginning of the document."); break; - case RC_USETEMPDIR: - str = _("Select if you wish to use a temporary directory structure to store temporary TeX output."); + case RC_LANGUAGE_AUTO_END: + str = _("Select if a language switching command is needed at the end of the document."); break; - case RC_LASTFILES: - str = _("The file where the last-files information should be stored."); + case RC_LANGUAGE_COMMAND_BEGIN: + str = _("The LaTeX command for changing from the language of the document to another language. E.g. \\selectlanguage{$$lang} where $$lang is substituted by the name of the second language."); break; - case RC_AUTOREGIONDELETE: - str = _("De-select if you don't want the current selection to be replaced automatically by what you type."); + case RC_LANGUAGE_COMMAND_END: + str = _("The LaTeX command for changing back to the language of the document."); break; - case RC_AUTORESET_OPTIONS: - str = _("De-select if you don't want the class options to be reset to defaults after class change."); + case RC_LANGUAGE_COMMAND_LOCAL: + str = _("The LaTeX command for local changing of the language."); break; - case RC_SERVERPIPE: - str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users."); + case RC_LANGUAGE_GLOBAL_OPTIONS: + str = _("De-select if you don't want the language(s) used as an argument to \\documentclass."); break; - case RC_BINDFILE: - str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories."); + case RC_LANGUAGE_PACKAGE: + str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\"."); break; - case RC_UIFILE: - str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories."); + case RC_LANGUAGE_USE_BABEL: + str = _("De-select if you don't want babel to be used when the language of the document is the default language."); break; - case RC_KBMAP: - case RC_KBMAP_PRIMARY: - case RC_KBMAP_SECONDARY: - str = _("Use this to set the correct mapping file for your keyboard. You'll need this if you for instance want to type German documents on an American keyboard."); + case RC_USELASTFILEPOS: + str = _("De-select if you do not want LyX to scroll to saved position."); break; - case RC_ASCIIROFF_COMMAND: - str = _("Use to define an external program to render tables in the ASCII output. E.g. \"groff -t -Tlatin1 $$FName\" where $$FName is the input file. If \"none\" is specified, an internal routine is used."); + case RC_LOADSESSION: + str = _("De-select to prevent loading files opened from the last lyx session."); break; - case RC_ASCII_LINELEN: - str = _("This is the maximum line length of an exported ASCII file (LaTeX, SGML or plain text)."); + case RC_MAKE_BACKUP: + str = _("De-select if you don't want LyX to create backup files."); + break; + + case RC_MARK_FOREIGN_LANGUAGE: + str = _("Select to control the highlighting of words with a language foreign to that of the document."); break; case RC_NUMLASTFILES: - str = _("Maximal number of lastfiles. Up to 9 can appear in the file menu."); + str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."), + maxlastfiles); break; - case RC_CHECKLASTFILES: - str = _("Select to check whether the lastfiles still exist."); + case RC_PATH_PREFIX: + str = _("Specify those directories which should be " + "prepended to the PATH environment variable. " + "Use the OS native format."); break; - case RC_VIEWDVI_PAPEROPTION: - str = _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")"); + case RC_PERS_DICT: + case RC_USE_PERS_DICT: + str = _("Specify an alternate personal dictionary file. E.g. \".ispell_english\"."); break; - case RC_DEFAULT_PAPERSIZE: - str = _("Specify the default paper size."); + case RC_POPUP_BOLD_FONT: + str = _("The bold font in the dialogs."); break; - case RC_PS_COMMAND: + case RC_POPUP_FONT_ENCODING: + str = _("The encoding for the menu/popups fonts."); break; - case RC_ACCEPT_COMPOUND: - str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?"); + case RC_POPUP_NORMAL_FONT: + str = _("The normal font in the dialogs."); break; - case RC_SPELL_COMMAND: - str = _("What command runs the spell checker?"); + case RC_PREVIEW: + str = _("Shows a typeset preview of things such as math"); break; - case RC_USE_INP_ENC: - str = _("Specify whether to pass the -T input encoding option to ispell. Enable this if you can't spellcheck words with international letters in them. This may not work with all dictionaries."); + case RC_PREVIEW_HASHED_LABELS: + str = _("Previewed equations will have \"(#)\" labels rather than numbered ones"); break; - case RC_USE_ALT_LANG: - case RC_ALT_LANG: - str = _("Specify an alternate language. The default is to use the language of the document."); + case RC_PREVIEW_SCALE_FACTOR: + str = _("Scale the preview size to suit."); break; - case RC_USE_PERS_DICT: - case RC_PERS_DICT: - str = _("Specify an alternate personal dictionary file. E.g. \".ispell_english\"."); + case RC_PRINTCOLLCOPIESFLAG: + str = _("The option for specifying whether the copies should be collated."); break; - case RC_USE_ESC_CHARS: - case RC_ESC_CHARS: - str = _("Specify additional chars that can be part of a word."); + case RC_PRINTCOPIESFLAG: + str = _("The option for specifying the number of copies to print."); break; - case RC_SCREEN_FONT_SCALABLE: - str = _("Allow bitmap fonts to be resized. If you are using a bitmap font, selecting this option may make some fonts look blocky in LyX. Deselecting this option makes LyX use the nearest bitmap font size available, instead of scaling."); + case RC_PRINTER: + str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER."); break; - case RC_CHKTEX_COMMAND: - str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation."); + case RC_PRINTEVENPAGEFLAG: + str = _("The option to print only even pages."); break; - case RC_CURSOR_FOLLOWS_SCROLLBAR: - 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."); + case RC_PRINTEXSTRAOPTIONS: + str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed."); break; - case RC_DIALOGS_ICONIFY_WITH_MAIN: - str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)"); + case RC_PRINTFILEEXTENSION: + str = _("Extension of printer program output file. Usually \".ps\"."); break; - case RC_DISPLAY_GRAPHICS: - str = _("Select how LyX will display any graphics."); + case RC_PRINTLANDSCAPEFLAG: + str = _("The option to print out in landscape."); break; - case RC_MAKE_BACKUP: - str = _("De-select if you don't want LyX to create backup files."); + case RC_PRINTODDPAGEFLAG: + str = _("The option to print only odd pages."); break; - case RC_BACKUPDIR_PATH: - str = _("The path for storing backup files. If it is an empty string, LyX will store the backup file in the same directory as the original file."); + case RC_PRINTPAGERANGEFLAG: + str = _("The option for specifying a comma-separated list of pages to print."); + break; + + case RC_PRINTPAPERDIMENSIONFLAG: + str = _("Option to specify the dimensions of the print paper."); + break; + + case RC_PRINTPAPERFLAG: + str = _("The option to specify paper type."); + break; + + case RC_PRINTREVERSEFLAG: + str = _("The option to reverse the order of the pages printed."); + break; + + case RC_PRINTSPOOL_COMMAND: + str = _("When set, this printer option automatically prints to a file and then calls a separate print spooling program on that file with the given name and arguments."); + break; + + case RC_PRINTSPOOL_PRINTERPREFIX: + str = _("If you specify a printer name in the print dialog, the following argument is prepended along with the printer name after the spool command."); + break; + + case RC_PRINTTOFILE: + str = _("Option to pass to the print program to print to a file."); + break; + + case RC_PRINTTOPRINTER: + str = _("Option to pass to the print program to print on a specific printer."); + break; + + case RC_PRINT_ADAPTOUTPUT: + str = _("Select for LyX to pass the name of the destination printer to your print command."); + break; + + case RC_PRINT_COMMAND: + str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\"."); break; case RC_RTL_SUPPORT: str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic)."); break; - case RC_MARK_FOREIGN_LANGUAGE: - str = _("Select to control the highlighting of words with a language foreign to that of the document."); + case RC_SCREEN_DPI: + str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here."); break; - case RC_LANGUAGE_PACKAGE: - str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\"."); + case RC_SCREEN_FONT_ENCODING: + str = _("The encoding for the screen fonts."); break; - case RC_LANGUAGE_GLOBAL_OPTIONS: - str = _("De-select if you don't want the language(s) used as an argument to \\documentclass."); + case RC_SCREEN_FONT_ROMAN: + case RC_SCREEN_FONT_SANS: + case RC_SCREEN_FONT_TYPEWRITER: + str = _("The screen fonts used to display the text while editing."); break; - case RC_LANGUAGE_USE_BABEL: - str = _("De-select if you don't want babel to be used when the language of the document is the default language."); + case RC_SCREEN_FONT_ROMAN_FOUNDRY: + case RC_SCREEN_FONT_SANS_FOUNDRY: + case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY: break; - case RC_LANGUAGE_AUTO_BEGIN: - str = _("Select if a language switching command is needed at the beginning of the document."); + case RC_SCREEN_FONT_SCALABLE: + str = _("Allow bitmap fonts to be resized. If you are using a bitmap font, selecting this option may make some fonts look blocky in LyX. Deselecting this option makes LyX use the nearest bitmap font size available, instead of scaling."); break; - case RC_LANGUAGE_AUTO_END: - str = _("Select if a language switching command is needed at the end of the document."); + case RC_SCREEN_FONT_SIZES: + str = _("The font sizes used for calculating the scaling of the screen fonts."); break; - case RC_LANGUAGE_COMMAND_BEGIN: - str = _("The LaTeX command for changing from the language of the document to another language. E.g. \\selectlanguage{$$lang} where $$lang is substituted by the name of the second language."); + case RC_SCREEN_ZOOM: + //xgettext:no-c-format + str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper."); break; - case RC_LANGUAGE_COMMAND_END: - str = _("The LaTeX command for changing back to the language of the document."); + case RC_SCREEN_GEOMETRY_HEIGHT: + case RC_SCREEN_GEOMETRY_WIDTH: + str = _("Specify geometry of the main view in width x height (values from last session will not be used if non-zero values are specified)."); break; - case RC_LANGUAGE_COMMAND_LOCAL: - str = _("The LaTeX command for local changing of the language."); + case RC_SCREEN_GEOMETRY_XYSAVED: + str = _("Allow session manager to save and restore windows position."); 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\"."); + case RC_SERVERPIPE: + str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users."); + break; + + case RC_SET_COLOR: break; case RC_SHOW_BANNER: str = _("De-select if you don't want the startup banner."); break; - case RC_WHEEL_JUMP: - str = _("The number of lines that are scrolled by mice with wheels or five button mice."); + case RC_SPELL_COMMAND: + str = _("What command runs the spellchecker?"); break; - case RC_CONVERTER: + case RC_TEMPDIRPATH: + str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX."); break; - case RC_VIEWER: + case RC_TEMPLATEPATH: + str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from."); break; - case RC_FORMAT: + case RC_TEX_ALLOWS_SPACES: break; - case RC_DEFAULT_LANGUAGE: - str = _("New documents will be assigned this language."); + case RC_TEX_EXPECTS_WINDOWS_PATHS: break; - case RC_LABEL_INIT_LENGTH: - str = _("Maximum number of words in the initialization string for a new label"); + case RC_UIFILE: + str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories."); break; - case RC_PREVIEW: - str = _("Shows a typeset preview of things such as math"); + case RC_USER_EMAIL: break; - case RC_PREVIEW_HASHED_LABELS: - str = _("Previewed equations will have \"(#)\" labels rather than numbered ones"); + case RC_USER_NAME: break; - case RC_PREVIEW_SCALE_FACTOR: - str = _("Scale the preview size to suit."); + case RC_USETEMPDIR: break; - default: + case RC_USE_INP_ENC: + str = _("Specify whether to pass the -T input encoding option to ispell. Enable this if you cannot check the spelling of words containing accented letters. This may not work with all dictionaries."); + break; + + case RC_USE_SPELL_LIB: + break; + + case RC_VIEWDVI_PAPEROPTION: + _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")"); + break; + + case RC_VIEWER: + break; + + case RC_LAST: break; } return str; } +#endif + // The global instance LyXRC lyxrc; // The global copy of the system lyxrc entries (everything except preferences) LyXRC system_lyxrc; + + +} // namespace lyx