#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[] = {
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;
}
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';
}
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_DIALOGS_ICONIFY_WITH_MAIN:
case LyXRC::RC_DISPLAY_GRAPHICS:
case LyXRC::RC_DOCUMENTPATH:
+ if (lyxrc_orig.document_path != lyxrc_new.document_path) {
+ FileName path(lyxrc_new.document_path);
+ if (path.exists() && path.isDirectory())
+ package().document_dir() = FileName(lyxrc.document_path);
+ }
case LyXRC::RC_EDITOR_ALTERNATIVES:
case LyXRC::RC_ESC_CHARS:
case LyXRC::RC_EXAMPLEPATH:
case LyXRC::RC_NUMLASTFILES:
case LyXRC::RC_PARAGRAPH_MARKERS:
case LyXRC::RC_PATH_PREFIX:
+ if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
+ prependEnvPath("PATH", lyxrc_new.path_prefix);
+ }
case LyXRC::RC_PREVIEW:
case LyXRC::RC_PREVIEW_HASHED_LABELS:
case LyXRC::RC_PREVIEW_SCALE_FACTOR:
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:
case LyXRC::RC_TEMPLATEPATH:
case LyXRC::RC_TEX_ALLOWS_SPACES:
case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
+ 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_DEFAULT_DECIMAL_POINT:
case LyXRC::RC_SCROLL_WHEEL_ZOOM:
case LyXRC::RC_CURSOR_WIDTH:
- case LyXRC::RC_LAST:
break;
}
-
- // Do what is needed (if any) for changes to actually take effect.
- if (lyxrc_orig.document_path != lyxrc_new.document_path) {
- FileName path(lyxrc_new.document_path);
- if (path.exists() && path.isDirectory())
- package().document_dir() = FileName(lyxrc.document_path);
- }
- if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
- prependEnvPath("PATH", lyxrc.path_prefix);
- }
- if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
- os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
- }
}