#include "LyX.h"
#include "Mover.h"
#include "Session.h"
+#include "SpellChecker.h"
#include "version.h"
#include "graphics/GraphicsTypes.h"
{ "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
{ "\\copier", LyXRC::RC_COPIER },
{ "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
+ { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
{ "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
{ "\\def_file", LyXRC::RC_DEFFILE },
{ "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
{ "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
{ "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
{ "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH },
+ { "\\icon_set", LyXRC::RC_ICON_SET },
{ "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
{ "\\index_command", LyXRC::RC_INDEX_COMMAND },
{ "\\input", LyXRC::RC_INPUT },
{ "\\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 },
void LyXRC::setDefaults()
{
+ icon_set = string();
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");
completion_inline_dots = -1;
completion_inline_delay = 0.2;
default_decimal_point = ".";
+ cursor_width = 1;
}
lexrc >> tex_allows_spaces;
break;
+ case RC_TEXINPUTS_PREFIX:
+ lexrc >> texinputs_prefix;
+ break;
+
case RC_KBMAP:
lexrc >> use_kbmap;
break;
case RC_FORCE_PAINT_SINGLE_CHAR:
lexrc >> force_paint_single_char;
break;
-
+
case RC_PRINTER:
lexrc >> printer;
break;
lexrc >> check_lastfiles;
break;
+ case RC_ICON_SET:
+ lexrc >> icon_set;
+ break;
+
case RC_SCREEN_FONT_ROMAN:
if (lexrc.next()) {
roman_font_name = lexrc.getString();
lexrc >> cursor_follows_scrollbar;
break;
+ case RC_CURSOR_WIDTH:
+ lexrc >> cursor_width;
+ break;
+
case RC_SCROLL_BELOW_DOCUMENT:
lexrc >> scroll_below_document;
break;
}
case RC_EDITOR_ALTERNATIVES: {
string format, command;
- lexrc >> format >> command;
+ if (lexrc.next())
+ format = lexrc.getString();
+ if (lexrc.eatLine())
+ command = lexrc.getString();
editor_alternatives[format].insert(command);
break;
}
case RC_DEFAULT_VIEW_FORMAT:
lexrc >> default_view_format;
break;
-
+
case RC_DEFAULT_LANGUAGE:
lexrc >> default_language;
break;
run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
break;
case RC_FORWARD_SEARCH_DVI:
- if (lexrc.next(true))
+ if (lexrc.next(true))
forward_search_dvi = lexrc.getString();
break;
case RC_FORWARD_SEARCH_PDF:
- if (lexrc.next(true))
+ if (lexrc.next(true))
forward_search_pdf = lexrc.getString();
break;
case RC_EXPORT_OVERWRITE:
// Escape \ and " so that LyXLex can read the string later
string escapeCommand(string const & str) {
- return subst(subst(str , "\\", "\\\\"),
+ return subst(subst(str , "\\", "\\\\"),
"\"", "\\\"");
}
void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
{
LyXRCTags tag = RC_LAST;
-
+
if (!name.empty()) {
for (int i = 0; i != lyxrcCount; ++i)
if ("\\" + name == lyxrcTags[i].tag)
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';
}
<< "# SCREEN & FONTS SECTION ############################\n"
<< "#\n\n";
+ case RC_ICON_SET:
+ if (ignore_system_lyxrc ||
+ icon_set != system_lyxrc.icon_set) {
+ os << "\\icon_set \"" << icon_set
+ << "\"\n";
+ }
+ if (tag != RC_LAST)
+ break;
+
case RC_SCREEN_DPI:
if (ignore_system_lyxrc ||
dpi != system_lyxrc.dpi) {
}
if (tag != RC_LAST)
break;
+ case RC_CURSOR_WIDTH:
+ if (ignore_system_lyxrc ||
+ cursor_width
+ != system_lyxrc.cursor_width) {
+ os << "\\cursor_width "
+ << cursor_width << '\n';
+ }
+ if (tag != RC_LAST)
+ break;
case RC_SCROLL_BELOW_DOCUMENT:
if (ignore_system_lyxrc ||
scroll_below_document
<< "# 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) {
language_package_selection != system_lyxrc.language_package_selection) {
os << "\\language_package_selection ";
switch (language_package_selection) {
- case LP_AUTO:
+ case LP_AUTO:
os << "0\n";
break;
case LP_BABEL:
format->viewer() != cit->viewer() ||
format->editor() != cit->editor() ||
format->documentFormat() != cit->documentFormat() ||
- format->vectorFormat() != cit->vectorFormat()) {
+ format->vectorFormat() != cit->vectorFormat() ||
+ format->inExportMenu() != cit->inExportMenu()) {
os << "\\format \"" << cit->name() << "\" \""
<< cit->extension() << "\" \""
<< cit->prettyname() << "\" \""
flags.push_back("document");
if (cit->vectorFormat())
flags.push_back("vector");
+ if (cit->inExportMenu())
+ flags.push_back("menu=export");
+
os << getStringFromVector(flags);
os << "\"\n";
}
case RC_VIEWER_ALTERNATIVES: {
Alternatives::const_iterator it = viewer_alternatives.begin();
Alternatives::const_iterator const en = viewer_alternatives.end();
- Alternatives::const_iterator const sysend =
+ Alternatives::const_iterator const sysend =
system_lyxrc.viewer_alternatives.end();
for (; it != en; ++it) {
string const & fmt = it->first;
CommandSet const & cmd = it->second;
CommandSet::const_iterator sit = cmd.begin();
CommandSet::const_iterator const sen = cmd.end();
- Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
+ Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
system_lyxrc.viewer_alternatives.find(fmt);
for (; sit != sen; ++sit) {
string const & cmd = *sit;
- if (ignore_system_lyxrc
+ if (ignore_system_lyxrc
|| sysfmt == sysend // format not found
|| sysfmt->second.count(cmd) == 0 // this command not found
)
case RC_EDITOR_ALTERNATIVES: {
Alternatives::const_iterator it = editor_alternatives.begin();
Alternatives::const_iterator const en = editor_alternatives.end();
- Alternatives::const_iterator const sysend =
+ Alternatives::const_iterator const sysend =
system_lyxrc.editor_alternatives.end();
for (; it != en; ++it) {
string const & fmt = it->first;
CommandSet const & cmd = it->second;
CommandSet::const_iterator sit = cmd.begin();
CommandSet::const_iterator const sen = cmd.end();
- Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
+ Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
system_lyxrc.editor_alternatives.find(fmt);
for (; sit != sen; ++sit) {
string const & cmd = *sit;
- if (ignore_system_lyxrc
+ if (ignore_system_lyxrc
|| sysfmt == sysend // format not found
|| sysfmt->second.count(cmd) == 0 // this command not found
)
<< "\" \"" << cit->to << "\" \"\" \"\"\n";
if (tag != RC_LAST)
break;
-
+
case RC_COPIER:
if (tag == RC_LAST)
os << "\n#\n"
// 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_FILEFORMAT:
case LyXRC::RC_GROUP_LAYOUTS:
case LyXRC::RC_HUNSPELLDIR_PATH:
+ case LyXRC::RC_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_EXPORT_OVERWRITE:
case LyXRC::RC_DEFAULT_DECIMAL_POINT:
case LyXRC::RC_SCROLL_WHEEL_ZOOM:
- case LyXRC::RC_LAST:
+ case LyXRC::RC_CURSOR_WIDTH:
break;
}
}
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_CURSOR_WIDTH:
+ str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
+ break;
+
case RC_SCROLL_BELOW_DOCUMENT:
str = _("LyX normally doesn't allow the user to scroll further than the bottom of the document. Set to true if you prefer to scroll the bottom of the document to the top of the screen");
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;