#include "LyX.h"
#include "Mover.h"
#include "Session.h"
+#include "SpellChecker.h"
#include "version.h"
#include "graphics/GraphicsTypes.h"
namespace {
-static unsigned int const LYXRC_FILEFORMAT = 1;
+static unsigned int const LYXRC_FILEFORMAT = 3;
// when adding something to this array keep it sorted!
LexerKeyword lyxrcTags[] = {
{ "\\template_path", LyXRC::RC_TEMPLATEPATH },
{ "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
{ "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
+ { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
{ "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
{ "\\ui_file", LyXRC::RC_UIFILE },
{ "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
bind_file = "cua";
def_file = "default";
ui_file = "default";
+ // The current document directory
+ texinputs_prefix = ".";
// Get printer from the environment. If fail, use default "",
// assuming that everything is set up correctly.
printer = getEnv("PRINTER");
LYXERR0 ("Unable to convert " << filename.absFileName() <<
" to format " << LYXRC_FILEFORMAT);
return false;
+ } else {
+ // Keep this in the else branch, such that lexrc2 goes out
+ // of scope and releases the lock on tempfile before we
+ // attempt to remove it. This matters on Windows.
+ Lexer lexrc2(lyxrcTags);
+ lexrc2.setFile(tempfile);
+ LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
+ retval = read(lexrc2, check_format);
}
- Lexer lexrc2(lyxrcTags);
- lexrc2.setFile(tempfile);
- LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
- retval = read(lexrc2, check_format);
tempfile.removeFile();
return retval == ReadOK;
}
lexrc >> tex_allows_spaces;
break;
+ case RC_TEXINPUTS_PREFIX:
+ lexrc >> texinputs_prefix;
+ break;
+
case RC_KBMAP:
lexrc >> use_kbmap;
break;
break;
}
case RC_FILEFORMAT: {
- string format, extension, prettyname, shortcut;
- lexrc >> format >> extension >> prettyname >> shortcut;
+ string format, extensions, prettyname, shortcut;
+ lexrc >> format >> extensions >> prettyname >> shortcut;
string viewer, editor;
if (lexrc.next(true))
viewer = lexrc.getString();
flgs |= Format::document;
else if (flag == "vector")
flgs |= Format::vector;
+ else if (flag == "zipped=native")
+ flgs |= Format::zipped_native;
else if (flag == "menu=export")
flgs |= Format::export_menu;
else
else
formats.erase(format);
} else {
- formats.add(format, extension, prettyname,
+ formats.add(format, extensions, prettyname,
shortcut, viewer, editor, flgs);
}
break;
if (tag != RC_LAST)
break;
case RC_TEX_EXPECTS_WINDOWS_PATHS:
- if (ignore_system_lyxrc ||
- windows_style_tex_paths != system_lyxrc.windows_style_tex_paths) {
+ // Don't write this setting to the preferences file,
+ // but allow temporary changes (bug 7557).
+ if (ignore_system_lyxrc) {
os << "\\tex_expects_windows_paths "
<< convert<string>(windows_style_tex_paths) << '\n';
}
<< "# TEX SECTION #######################################\n"
<< "#\n\n";
+ case RC_TEXINPUTS_PREFIX:
+ if (ignore_system_lyxrc ||
+ texinputs_prefix != system_lyxrc.texinputs_prefix) {
+ os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
+ }
+ if (tag != RC_LAST)
+ break;
+
case RC_FONT_ENCODING:
if (ignore_system_lyxrc ||
fontenc != system_lyxrc.fontenc) {
Format const * format =
system_formats.getFormat(cit->name());
if (!format ||
- format->extension() != cit->extension() ||
+ format->extensions() != cit->extensions() ||
format->prettyname() != cit->prettyname() ||
format->shortcut() != cit->shortcut() ||
format->viewer() != cit->viewer() ||
format->vectorFormat() != cit->vectorFormat() ||
format->inExportMenu() != cit->inExportMenu()) {
os << "\\format \"" << cit->name() << "\" \""
- << cit->extension() << "\" \""
+ << cit->extensions() << "\" \""
<< cit->prettyname() << "\" \""
<< cit->shortcut() << "\" \""
<< escapeCommand(cit->viewer()) << "\" \""
flags.push_back("document");
if (cit->vectorFormat())
flags.push_back("vector");
+ if (cit->zippedNative())
+ flags.push_back("zipped=native");
if (cit->inExportMenu())
flags.push_back("menu=export");
// if we forget an element.
LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
switch (tag) {
+ case LyXRC::RC_LAST:
case LyXRC::RC_ACCEPT_COMPOUND:
+ if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
+ if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
case LyXRC::RC_ALT_LANG:
case LyXRC::RC_PLAINTEXT_LINELEN:
case LyXRC::RC_AUTOCORRECTION_MATH:
case LyXRC::RC_GROUP_LAYOUTS:
case LyXRC::RC_HUNSPELLDIR_PATH:
case LyXRC::RC_ICON_SET:
- if (lyxrc_orig.icon_set != lyxrc_new.icon_set) {
- lyxrc.icon_set = lyxrc_new.icon_set;
- }
case LyXRC::RC_INDEX_ALTERNATIVES:
case LyXRC::RC_INDEX_COMMAND:
case LyXRC::RC_JBIBTEX_COMMAND:
case LyXRC::RC_PARAGRAPH_MARKERS:
case LyXRC::RC_PATH_PREFIX:
if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
- prependEnvPath("PATH", lyxrc.path_prefix);
+ prependEnvPath("PATH", lyxrc_new.path_prefix);
}
case LyXRC::RC_PREVIEW:
case LyXRC::RC_PREVIEW_HASHED_LABELS:
case LyXRC::RC_SHOW_BANNER:
case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
case LyXRC::RC_SPELLCHECKER:
+ if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
+ setSpellChecker();
case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
case LyXRC::RC_SPELLCHECK_NOTES:
case LyXRC::RC_SPLITINDEX_COMMAND:
if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
}
+ case LyXRC::RC_TEXINPUTS_PREFIX:
case LyXRC::RC_THESAURUSDIRPATH:
case LyXRC::RC_UIFILE:
case LyXRC::RC_USER_EMAIL:
case LyXRC::RC_DEFAULT_DECIMAL_POINT:
case LyXRC::RC_SCROLL_WHEEL_ZOOM:
case LyXRC::RC_CURSOR_WIDTH:
- case LyXRC::RC_LAST:
break;
}
}
case RC_PATH_PREFIX:
str = _("Specify those directories which should be "
- "prepended to the PATH environment variable. "
+ "prepended to the PATH environment variable.\n"
"Use the OS native format.");
break;
case RC_TEX_EXPECTS_WINDOWS_PATHS:
break;
+ case RC_TEXINPUTS_PREFIX:
+ str = _("Specify those directories which should be "
+ "prepended to the TEXINPUTS environment variable.\n"
+ "A '.' represents the current document directory. "
+ "Use the OS native format.");
+ 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.");
break;