X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2Flyxrc.C;h=8208bb2103d240b3632203685e0692ac3c14e77b;hb=e7f4618bcce770369cf46335c2c7f0164b4b8857;hp=a25bac9dbd09a4eba98ca1bf2ce4898ac2f10502;hpb=be76af20b33c3e2bd22142bf01dfb587ac516e7e;p=lyx.git diff --git a/src/lyxrc.C b/src/lyxrc.C index a25bac9dbd..8208bb2103 100644 --- a/src/lyxrc.C +++ b/src/lyxrc.C @@ -48,6 +48,7 @@ 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; @@ -67,8 +68,6 @@ 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 }, @@ -79,6 +78,7 @@ keyword_item lyxrcTags[] = { { "\\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 }, @@ -112,6 +112,8 @@ keyword_item lyxrcTags[] = { { "\\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 }, @@ -167,6 +169,7 @@ keyword_item 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_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 }, @@ -251,7 +254,7 @@ void LyXRC::setDefaults() { autosave = 300; auto_region_delete = true; auto_reset_options = false; - ascii_linelen = 65; + plaintext_linelen = 65; num_lastfiles = maxlastfiles; check_lastfiles = true; use_lastfilepos = true; @@ -289,10 +292,12 @@ void LyXRC::setDefaults() { preview = PREVIEW_OFF; preview_hashed_labels = false; preview_scale_factor = "0.9"; + use_converter_cache = false; + converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months - user_name = support::user_name(); + user_name = to_utf8(support::user_name()); - user_email = support::user_email(); + user_email = to_utf8(support::user_email()); } @@ -311,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)) @@ -365,12 +370,12 @@ int LyXRC::read(LyXLex & lexrc) switch (static_cast(le)) { case RC_INPUT: // Include file if (lexrc.next()) { - string const tmp = + FileName const tmp = libFileSearch(string(), lexrc.getString()); if (read(tmp)) { lexrc.printError("Error reading " - "included file: "+tmp); + "included file: " + tmp.absFilename()); } } break; @@ -887,14 +892,14 @@ int LyXRC::read(LyXLex & lexrc) } 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: @@ -1028,7 +1033,7 @@ int LyXRC::read(LyXLex & lexrc) if (lexrc.next()) { command = lexrc.getString(); } - movers.set(fmt, command); + setMover(fmt, command); break; } @@ -1047,9 +1052,9 @@ int LyXRC::read(LyXLex & lexrc) flags = lexrc.getString(); } if (command.empty()) { - converters.erase(from, to); + theConverters().erase(from, to); } else { - converters.add(from, to, command, flags); + theConverters().add(from, to, command, flags); } break; } @@ -1113,7 +1118,7 @@ int LyXRC::read(LyXLex & lexrc) << format << "'." << endl; } if (prettyname.empty()) { - if (converters.formatIsUsed(format)) { + if (theConverters().formatIsUsed(format)) { lyxerr << "Can't delete format " << format << endl; } else { @@ -1187,21 +1192,32 @@ int LyXRC::read(LyXLex & lexrc) 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, bool ignore_system_lyxrc) 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) write(ofs, ignore_system_lyxrc); } @@ -1463,6 +1479,20 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << 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"; @@ -1826,10 +1856,10 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const } case RC_USETEMPDIR: // Ignore it - case RC_ASCII_LINELEN: + case RC_PLAINTEXT_LINELEN: if (ignore_system_lyxrc || - ascii_linelen != system_lyxrc.ascii_linelen) { - os << "\\ascii_linelen " << ascii_linelen << '\n'; + plaintext_linelen != system_lyxrc.plaintext_linelen) { + os << "\\plaintext_linelen " << plaintext_linelen << '\n'; } case RC_MAKE_BACKUP: if (ignore_system_lyxrc || @@ -1844,13 +1874,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const } os << "\n#\n" - << "# ASCII EXPORT SECTION ##############################\n" + << "# PLAIN TEXT EXPORT SECTION ##############################\n" << "#\n\n"; - case RC_ASCIIROFF_COMMAND: + case RC_PLAINTEXT_ROFF_COMMAND: if (ignore_system_lyxrc || - ascii_roff_command != system_lyxrc.ascii_roff_command) { - os << "\\ascii_roff_command \"" << ascii_roff_command + plaintext_roff_command != system_lyxrc.plaintext_roff_command) { + os << "\\plaintext_roff_command \"" << plaintext_roff_command << "\"\n"; } @@ -2054,10 +2084,10 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) 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 || @@ -2069,9 +2099,9 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) 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"; @@ -2081,12 +2111,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc) const << "#\n\n"; // Look for new movers - Movers::iterator const sysbegin = system_movers.begin(); - Movers::iterator const sysend = system_movers.end(); + 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 (Movers::iterator it = movers.begin(), end = movers.end(); - it != end; ++it) { - Movers::iterator const sysit = + 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; @@ -2142,12 +2173,12 @@ string const LyXRC::getDescription(LyXRCTags tag) str = _("Specify an alternate language. The default is to use the language of the document."); break; - case RC_ASCIIROFF_COMMAND: + 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_ASCII_LINELEN: - str = _("This is the maximum line length of an exported text file (LaTeX, SGML or plain text)."); + 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_AUTOREGIONDELETE: