* This file is part of LyX, the document processor.
* Licence details can be found in the file COPYING.
*
- * \author Lars Gullik Bjønnes
+ * \author Lars Gullik Bjønnes
* \author Jean-Marc Lasgouttes
* \author Angus Leeming
* \author John Levon
- * \author André Pönitz
+ * \author André Pönitz
* \author Allan Rae
* \author Dekel Tsur
*
#include <config.h>
-#include <fstream>
-#include <iostream>
-
#include "LyXRC.h"
-#include "Color.h"
+#include "ColorSet.h"
#include "Converter.h"
+#include "FontEnums.h"
#include "Format.h"
-#include "Session.h"
#include "Lexer.h"
-#include "FontEnums.h"
#include "Mover.h"
+#include "Session.h"
+#include "version.h"
#include "graphics/GraphicsTypes.h"
#include "support/os.h"
#include "support/userinfo.h"
+#include <fstream>
+#include <iostream>
+
using namespace std;
using namespace lyx::support;
{ "\\auto_number", LyXRC::RC_AUTO_NUMBER },
{ "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
{ "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
+ { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
{ "\\autosave", LyXRC::RC_AUTOSAVE },
{ "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
{ "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
{ "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
{ "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
{ "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
+ { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
{ "\\index_command", LyXRC::RC_INDEX_COMMAND },
{ "\\input", LyXRC::RC_INPUT },
{ "\\kbmap", LyXRC::RC_KBMAP },
{ "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE },
{ "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL },
{ "\\load_session", LyXRC::RC_LOADSESSION },
+ { "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT },
{ "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
{ "\\make_backup", LyXRC::RC_MAKE_BACKUP },
{ "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
{ "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
+ { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
{ "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
{ "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
{ "\\path_prefix", LyXRC::RC_PATH_PREFIX },
{ "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
{ "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
{ "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
+ { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
{ "\\serverpipe", LyXRC::RC_SERVERPIPE },
{ "\\set_color", LyXRC::RC_SET_COLOR },
{ "\\show_banner", LyXRC::RC_SHOW_BANNER },
{ "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
{ "\\spell_command", LyXRC::RC_SPELL_COMMAND },
+ { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
{ "\\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 },
+ { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
{ "\\ui_file", LyXRC::RC_UIFILE },
{ "\\use_alt_language", LyXRC::RC_USE_ALT_LANG },
{ "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
{ "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
// 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 },
{ "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
bibtex_command = "bibtex";
fontenc = "default";
index_command = "makeindex -c -q";
+ nomencl_command = "makeindex -s nomencl.ist";
dpi = 75;
// Because a screen typically is wider than a piece of paper:
zoom = 150;
load_session = false;
make_backup = true;
backupdir_path.erase();
- display_graphics = graphics::ColorDisplay;
+ display_graphics = true;
// Spellchecker settings:
- use_spell_lib = true;
- isp_command = "ispell";
- isp_accept_compound = false;
- isp_use_input_encoding = false;
- isp_use_alt_lang = false;
- isp_use_pers_dict = false;
- isp_use_esc_chars = false;
+ spellchecker_accept_compound = false;
+ spellchecker_use_input_encoding = false;
+ spellchecker_use_alt_lang = false;
+ spellchecker_use_pers_dict = false;
+ spellchecker_use_esc_chars = false;
+ spellcheck_continuously = false;
use_kbmap = false;
rtl_support = true;
visual_cursor = false;
sort_layouts = false;
group_layouts = true;
default_language = "english";
+ gui_language = "auto";
show_banner = true;
windows_style_tex_paths = false;
tex_allows_spaces = false;
date_insert_format = "%x";
cursor_follows_scrollbar = false;
+ scroll_below_document = false;
+ mac_like_word_movement = false;
macro_edit_style = MACRO_EDIT_INLINE_BOX;
dialogs_iconify_with_main = false;
label_init_length = 3;
completion_popup_text = false;
completion_popup_delay = 2.0;
completion_popup_after_complete = true;
+ autocorrection_math = false;
completion_inline_math = true;
completion_inline_text = false;
completion_inline_dots = -1;
int LyXRC::read(Lexer & lexrc)
{
- if (!lexrc.isOK()) return -2;
+ if (!lexrc.isOK())
+ return -2;
while (lexrc.isOK()) {
// By using two switches we take advantage of the compiler
continue;
case Lexer::LEX_FEOF:
continue;
- default: break;
+ default:
+ break;
}
switch (static_cast<LyXRCTags>(le)) {
case RC_INPUT: // Include file
}
break;
case RC_BINDFILE:
- if (lexrc.next()) {
+ if (lexrc.next())
bind_file = os::internal_path(lexrc.getString());
- }
break;
case RC_DEFFILE:
- if (lexrc.next()) {
+ if (lexrc.next())
def_file = os::internal_path(lexrc.getString());
- }
break;
case RC_UIFILE:
- if (lexrc.next()) {
+ if (lexrc.next())
ui_file = os::internal_path(lexrc.getString());
- }
break;
case RC_AUTORESET_OPTIONS:
case RC_DISPLAY_GRAPHICS:
if (lexrc.next())
- display_graphics = graphics::displayTranslator().find(lexrc.getString());
+ display_graphics = lexrc.getString() == "true";
break;
case RC_TEX_EXPECTS_WINDOWS_PATHS:
}
break;
+ case RC_NOMENCL_COMMAND:
+ if (lexrc.next(true)) {
+ nomencl_command = lexrc.getString();
+ }
+ break;
+
case RC_SCREEN_DPI:
lexrc >> dpi;
break;
}
break;
+ case RC_THESAURUSDIRPATH:
+ if (lexrc.next()) {
+ thesaurusdir_path = os::internal_path(lexrc.getString());
+ thesaurusdir_path = expandPath(thesaurusdir_path);
+ }
+ break;
+
case RC_USETEMPDIR:
if (lexrc.next())
LYXERR0("Ignoring obsolete use_tempdir flag.");
lexrc >> completion_inline_dots;
break;
+ case RC_AUTOCORRECTION_MATH:
+ lexrc >> autocorrection_math;
+ break;
+
case RC_COMPLETION_POPUP_DELAY:
lexrc >> completion_popup_delay;
break;
lexrc >> cursor_follows_scrollbar;
break;
+ case RC_SCROLL_BELOW_DOCUMENT:
+ lexrc >> scroll_below_document;
+ break;
+
+ case RC_MAC_LIKE_WORD_MOVEMENT:
+ lexrc >> mac_like_word_movement;
+ break;
+
case RC_MACRO_EDIT_STYLE:
if (lexrc.next()) {
switch (lexrc.getInteger()) {
lexrc >> dialogs_iconify_with_main;
break;
- case RC_PLAINTEXT_ROFF_COMMAND:
- if (lexrc.next(true)) {
- plaintext_roff_command = lexrc.getString();
- }
+ case RC_PLAINTEXT_ROFF_COMMAND:
+ (void) lexrc.getString(); // Obsoleted in 2.0
break;
case RC_PLAINTEXT_LINELEN:
lexrc >> plaintext_linelen;
break;
// Spellchecker settings:
- case RC_USE_SPELL_LIB:
- lexrc >> use_spell_lib;
- break;
- case RC_SPELL_COMMAND:
- if (lexrc.next(true))
- isp_command = lexrc.getString();
- break;
case RC_ACCEPT_COMPOUND:
- lexrc >> isp_accept_compound;
+ lexrc >> spellchecker_accept_compound;
break;
case RC_USE_INP_ENC:
- lexrc >> isp_use_input_encoding;
+ lexrc >> spellchecker_use_input_encoding;
break;
case RC_USE_ALT_LANG:
- lexrc >> isp_use_alt_lang;
+ lexrc >> spellchecker_use_alt_lang;
break;
case RC_USE_PERS_DICT:
- lexrc >> isp_use_pers_dict;
+ lexrc >> spellchecker_use_pers_dict;
break;
case RC_USE_TOOLTIP:
lexrc >> use_tooltip;
lexrc >> use_pixmap_cache;
break;
case RC_USE_ESC_CHARS:
- lexrc >> isp_use_esc_chars;
+ lexrc >> spellchecker_use_esc_chars;
break;
case RC_ALT_LANG:
- lexrc >> isp_alt_lang;
+ lexrc >> spellchecker_alt_lang;
break;
case RC_PERS_DICT:
if (lexrc.next())
- isp_pers_dict = os::internal_path(lexrc.getString());
+ spellchecker_pers_dict = os::internal_path(lexrc.getString());
break;
case RC_ESC_CHARS:
- lexrc >> isp_esc_chars;
+ lexrc >> spellchecker_esc_chars;
+ break;
+ case RC_SPELLCHECK_CONTINUOUSLY:
+ lexrc >> spellcheck_continuously;
break;
case RC_MAKE_BACKUP:
lexrc >> make_backup;
lexrc >> default_language;
break;
+ case RC_GUI_LANGUAGE:
+ lexrc >> gui_language;
+ break;
+
case RC_LABEL_INIT_LENGTH:
lexrc >> label_init_length;
break;
lexrc >> open_buffers_in_tabs;
break;
+ // Obsoleted in 2.0
+ case RC_SPELL_COMMAND:
+ case RC_USE_SPELL_LIB:
+ (void) lexrc.getString();
+ break;
+
case RC_LAST:
break; // this is just a dummy
}
}
if (tag == RC_LAST)
- os << "# This file is written by LyX, if you want to make your own\n"
- << "# modifications you should do them from inside LyX and save\n"
+ os << "# LyX " << lyx_version
+ << " generated this file. If you want to make your own\n"
+ << "# modifications you should do them from inside LyX and save.\n"
<< "\n";
// Why the switch you might ask. It is a trick to ensure that all
if (ignore_system_lyxrc ||
display_graphics != system_lyxrc.display_graphics) {
os << "# Display graphics within LyX\n"
- << "# monochrome|grayscale|color|none\n"
+ << "# true|false\n"
<< "\\display_graphics "
- << graphics::displayTranslator().find(
- graphics::DisplayType(display_graphics))
+ << (display_graphics ? "true" : "false")
<< '\n';
}
if (tag != RC_LAST)
}
if (tag != RC_LAST)
break;
+ case RC_NOMENCL_COMMAND:
+ if (ignore_system_lyxrc ||
+ nomencl_command != system_lyxrc.nomencl_command) {
+ os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
+ }
+ 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) {
}
if (tag != RC_LAST)
break;
+ case RC_SCROLL_BELOW_DOCUMENT:
+ if (ignore_system_lyxrc ||
+ scroll_below_document
+ != system_lyxrc.scroll_below_document) {
+ os << "\\scroll_below_document "
+ << convert<string>(scroll_below_document) << '\n';
+ }
+ if (tag != RC_LAST)
+ break;
+ case RC_MAC_LIKE_WORD_MOVEMENT:
+ if (ignore_system_lyxrc ||
+ mac_like_word_movement
+ != system_lyxrc.mac_like_word_movement) {
+ os << "\\mac_like_word_movement "
+ << convert<string>(mac_like_word_movement) << '\n';
+ }
+ if (tag != RC_LAST)
+ break;
case RC_MACRO_EDIT_STYLE:
if (ignore_system_lyxrc ||
macro_edit_style
}
if (tag != RC_LAST)
break;
+ case RC_AUTOCORRECTION_MATH:
+ if (ignore_system_lyxrc ||
+ autocorrection_math != system_lyxrc.autocorrection_math) {
+ os << "\\autocorrection_math "
+ << convert<string>(autocorrection_math) << '\n';
+ }
+ if (tag != RC_LAST)
+ break;
case RC_COMPLETION_POPUP_DELAY:
if (ignore_system_lyxrc ||
completion_popup_delay != system_lyxrc.completion_popup_delay) {
}
if (tag != RC_LAST)
break;
+ case RC_THESAURUSDIRPATH:
+ if (ignore_system_lyxrc ||
+ thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
+ string const path = os::external_path(thesaurusdir_path);
+ os << "\\thesaurusdir_path \"" << path << "\"\n";
+ }
+ if (tag != RC_LAST)
+ break;
case RC_USETEMPDIR:
if (tag != RC_LAST)
break;
// Ignore it
+ case RC_PLAINTEXT_ROFF_COMMAND: // Obsoleted in 2.0
+ if (tag != RC_LAST)
+ break;
case RC_PLAINTEXT_LINELEN:
if (ignore_system_lyxrc ||
plaintext_linelen != system_lyxrc.plaintext_linelen) {
<< "# PLAIN TEXT EXPORT SECTION ##############################\n"
<< "#\n\n";
- case RC_PLAINTEXT_ROFF_COMMAND:
- if (ignore_system_lyxrc ||
- plaintext_roff_command != system_lyxrc.plaintext_roff_command) {
- os << "\\plaintext_roff_command \"" << escapeCommand(plaintext_roff_command)
- << "\"\n";
- }
- if (tag != RC_LAST)
- break;
-
os << "\n#\n"
<< "# SPELLCHECKER SECTION ##############################\n"
<< "#\n\n";
- case RC_USE_SPELL_LIB:
- if (ignore_system_lyxrc ||
- use_spell_lib != system_lyxrc.use_spell_lib) {
- os << "\\use_spell_lib " << convert<string>(use_spell_lib) << '\n';
- }
- if (tag != RC_LAST)
- break;
+
case RC_SPELL_COMMAND:
- if (ignore_system_lyxrc ||
- isp_command != system_lyxrc.isp_command) {
- os << "\\spell_command \"" << escapeCommand(isp_command) << "\"\n";
- }
+ case RC_USE_SPELL_LIB:
+ // Obsoleted in 2.0
if (tag != RC_LAST)
break;
case RC_ACCEPT_COMPOUND:
if (ignore_system_lyxrc ||
- isp_accept_compound != system_lyxrc.isp_accept_compound) {
- os << "\\accept_compound " << convert<string>(isp_accept_compound)
+ spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
+ os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
<< '\n';
}
if (tag != RC_LAST)
break;
case RC_USE_ALT_LANG:
if (ignore_system_lyxrc ||
- isp_use_alt_lang != system_lyxrc.isp_use_alt_lang) {
- os << "\\use_alt_language " << convert<string>(isp_use_alt_lang)
+ spellchecker_use_alt_lang != system_lyxrc.spellchecker_use_alt_lang) {
+ os << "\\use_alt_language " << convert<string>(spellchecker_use_alt_lang)
<< '\n';
}
if (tag != RC_LAST)
break;
case RC_ALT_LANG:
if (ignore_system_lyxrc ||
- isp_alt_lang != system_lyxrc.isp_alt_lang) {
- os << "\\alternate_language \"" << isp_alt_lang
+ spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
+ os << "\\alternate_language \"" << spellchecker_alt_lang
<< "\"\n";
}
if (tag != RC_LAST)
break;
case RC_USE_ESC_CHARS:
if (ignore_system_lyxrc ||
- isp_use_esc_chars != system_lyxrc.isp_use_esc_chars) {
- os << "\\use_escape_chars " << convert<string>(isp_use_esc_chars)
+ spellchecker_use_esc_chars != system_lyxrc.spellchecker_use_esc_chars) {
+ os << "\\use_escape_chars " << convert<string>(spellchecker_use_esc_chars)
<< '\n';
}
if (tag != RC_LAST)
break;
case RC_ESC_CHARS:
if (ignore_system_lyxrc ||
- isp_esc_chars != system_lyxrc.isp_esc_chars) {
- os << "\\escape_chars \"" << isp_esc_chars << "\"\n";
+ spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
+ os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
}
if (tag != RC_LAST)
break;
case RC_USE_PERS_DICT:
if (ignore_system_lyxrc ||
- isp_use_pers_dict != system_lyxrc.isp_use_pers_dict) {
+ spellchecker_use_pers_dict != system_lyxrc.spellchecker_use_pers_dict) {
os << "\\use_personal_dictionary "
- << convert<string>(isp_use_pers_dict)
+ << convert<string>(spellchecker_use_pers_dict)
<< '\n';
}
if (tag != RC_LAST)
<< '\n';
}
case RC_PERS_DICT:
- if (isp_pers_dict != system_lyxrc.isp_pers_dict) {
- string const path = os::external_path(isp_pers_dict);
+ if (spellchecker_pers_dict != system_lyxrc.spellchecker_pers_dict) {
+ string const path = os::external_path(spellchecker_pers_dict);
os << "\\personal_dictionary \"" << path << "\"\n";
}
if (tag != RC_LAST)
break;
case RC_USE_INP_ENC:
if (ignore_system_lyxrc ||
- isp_use_input_encoding
- != system_lyxrc.isp_use_input_encoding) {
+ spellchecker_use_input_encoding
+ != system_lyxrc.spellchecker_use_input_encoding) {
os << "\\use_input_encoding "
- << convert<string>(isp_use_input_encoding)
+ << convert<string>(spellchecker_use_input_encoding)
<< '\n';
}
if (tag != RC_LAST)
<< "# LANGUAGE SUPPORT SECTION ##########################\n"
<< "#\n\n";
+ case RC_SPELLCHECK_CONTINUOUSLY:
+ if (ignore_system_lyxrc ||
+ spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
+ os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
+ << '\n';
+ }
+ if (tag != RC_LAST)
+ break;
+
case RC_RTL_SUPPORT:
if (ignore_system_lyxrc ||
rtl_support != system_lyxrc.rtl_support) {
}
if (tag != RC_LAST)
break;
+ case RC_GUI_LANGUAGE:
+ if (ignore_system_lyxrc ||
+ gui_language != system_lyxrc.gui_language) {
+ os << "\\gui_language " << gui_language << '\n';
+ }
+ if (tag != RC_LAST)
+ break;
os << "\n#\n"
<< "# FORMATS SECTION ##########################\n"
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_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_MAC_LIKE_WORD_MOVEMENT:
+ str = _("Use the Mac OS X conventions for the word-level cursor movement");
+ break;
+
case RC_SHOW_MACRO_LABEL:
str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
break;
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_NOMENCL_COMMAND:
+ str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
+ break;
+
case RC_INPUT:
break;
str = _("Use \"...\" to shorten long completions.");
break;
+ case RC_AUTOCORRECTION_MATH:
+ str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
+ break;
+
case RC_NUMLASTFILES:
str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
maxlastfiles);
case RC_PERS_DICT:
case RC_USE_PERS_DICT:
- str = _("Specify an alternate personal dictionary file. E.g. \".ispell_english\".");
+ str = _("Specify an alternate personal dictionary file. E.g. \".aspell_english\".");
break;
case RC_PREVIEW:
str = _("De-select if you don't want the startup banner.");
break;
- case RC_SPELL_COMMAND:
- str = _("What command runs the spellchecker?");
- break;
-
case RC_TEMPDIRPATH:
str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
break;
+ case RC_THESAURUSDIRPATH:
+ str = _("This is the place where the files of the thesaurus library reside.");
+ 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.");
break;
break;
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.");
+ str = _("Specify whether to pass the -T input encoding option to aspell. Enable this if you cannot check the spelling of words containing accented letters. This may not work with all dictionaries.");
break;
case RC_USE_TOOLTIP: