3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Lars Gullik Bjønnes
7 * \author Jean-Marc Lasgouttes
8 * \author Angus Leeming
10 * \author André Pönitz
14 * Full author contact details are available in file CREDITS.
21 #include "BufferList.h"
23 #include "Converter.h"
24 #include "FontEnums.h"
27 #include "FuncRequest.h"
31 #include "SpellChecker.h"
34 #include "support/convert.h"
35 #include "support/debug.h"
36 #include "support/environment.h"
37 #include "support/FileName.h"
38 #include "support/filetools.h"
39 #include "support/lstrings.h"
40 #include "support/os.h"
41 #include "support/Package.h"
42 #include "support/TempFile.h"
44 #ifdef USE_MACOSX_PACKAGING
45 #include "support/AppleSupport.h"
53 using namespace lyx::support;
57 namespace os = support::os;
61 // The format should also be updated in configure.py, and conversion code
62 // should be added to prefs2prefs_prefs.py.
63 static unsigned int const LYXRC_FILEFORMAT = 34; // yuriy: rename kmap files
64 // when adding something to this array keep it sorted!
65 LexerKeyword lyxrcTags[] = {
66 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
67 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
68 { "\\alternate_language", LyXRC::RC_ALT_LANG },
69 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
70 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
71 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
72 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
73 { "\\autosave", LyXRC::RC_AUTOSAVE },
74 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
75 { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
76 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
77 { "\\bind_file", LyXRC::RC_BINDFILE },
78 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
79 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
80 { "\\citation_search", LyXRC::RC_CITATION_SEARCH },
81 { "\\citation_search_pattern", LyXRC::RC_CITATION_SEARCH_PATTERN },
82 { "\\citation_search_view", LyXRC::RC_CITATION_SEARCH_VIEW },
83 { "\\close_buffer_with_last_view", LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW },
84 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
85 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
86 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
87 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
88 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
89 { "\\completion_minlength", LyXRC::RC_COMPLETION_MINLENGTH },
90 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
91 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
92 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
93 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
94 { "\\converter", LyXRC::RC_CONVERTER },
95 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
96 { "\\copier", LyXRC::RC_COPIER },
97 { "\\ct_additions_underlined", LyXRC::RC_CT_ADDITIONS_UNDERLINED },
98 { "\\ct_markup_copied", LyXRC::RC_CT_MARKUP_COPIED },
99 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
100 { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
101 { "\\def_file", LyXRC::RC_DEFFILE },
102 { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_SEP },
103 { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT },
104 { "\\default_otf_view_format", LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT },
105 { "\\default_platex_view_format", LyXRC::RC_DEFAULT_PLATEX_VIEW_FORMAT },
106 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
107 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
108 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
109 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
110 { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
111 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
112 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
113 { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE },
114 { "\\format", LyXRC::RC_FILEFORMAT },
115 { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI },
116 { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF },
117 { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT },
118 { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR },
119 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
120 { "\\fullscreen_statusbar", LyXRC::RC_FULL_SCREEN_STATUSBAR },
121 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
122 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
123 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
124 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
125 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
126 { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH },
127 { "\\icon_set", LyXRC::RC_ICON_SET },
128 { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
129 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
130 { "\\input", LyXRC::RC_INPUT },
131 { "\\jbibtex_alternatives", LyXRC::RC_JBIBTEX_ALTERNATIVES },
132 { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
133 { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
134 { "\\kbmap", LyXRC::RC_KBMAP },
135 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
136 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
137 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
138 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
139 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
140 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
141 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
142 { "\\language_custom_package", LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE },
143 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
144 { "\\language_package_selection", LyXRC::RC_LANGUAGE_PACKAGE_SELECTION },
145 { "\\load_session", LyXRC::RC_LOADSESSION },
146 { "\\mac_dontswap_ctrl_meta", LyXRC::RC_MAC_DONTSWAP_CTRL_META },
147 { "\\mac_like_cursor_movement", LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT },
148 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
149 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
150 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
151 { "\\mouse_middlebutton_paste", LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE },
152 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
153 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
154 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
155 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
156 { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS },
157 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
158 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
159 { "\\preview", LyXRC::RC_PREVIEW },
160 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
161 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
162 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
163 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
164 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
165 { "\\pygmentize_command", LyXRC::RC_PYGMENTIZE_COMMAND },
166 { "\\respect_os_kbd_language", LyXRC::RC_RESPECT_OS_KBD_LANGUAGE },
167 { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
168 { "\\save_origin", LyXRC::RC_SAVE_ORIGIN },
169 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
170 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
171 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
172 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
173 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
174 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
175 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
176 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
177 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
178 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
179 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
180 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
181 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
182 { "\\set_color", LyXRC::RC_SET_COLOR },
183 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
184 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
185 { "\\single_instance", LyXRC::RC_SINGLE_INSTANCE },
186 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
187 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
188 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
189 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
190 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
191 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
192 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
193 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
194 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
195 { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
196 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
197 { "\\ui_file", LyXRC::RC_UIFILE },
198 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
199 { "\\use_converter_needauth", LyXRC::RC_USE_CONVERTER_NEEDAUTH },
200 { "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN },
201 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
202 { "\\use_native_filedialog", LyXRC::RC_USE_NATIVE_FILEDIALOG },
203 // compatibility with versions older than 1.4.0 only
204 { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
205 { "\\use_system_theme_icons", LyXRC::RC_USE_SYSTEM_THEME_ICONS },
206 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
207 { "\\user_email", LyXRC::RC_USER_EMAIL },
208 { "\\user_initials", LyXRC::RC_USER_INITIALS },
209 { "\\user_name", LyXRC::RC_USER_NAME },
210 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
211 // compatibility with versions older than 1.4.0 only
212 { "\\viewer", LyXRC::RC_VIEWER},
213 { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
214 { "\\visual_cursor", LyXRC::RC_VISUAL_CURSOR },
215 { "format", LyXRC::RC_LYXRCFORMAT }
218 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
221 void oldFontFormat(string & family, string & foundry)
223 if (family.empty() || family[0] != '-')
225 foundry = token(family, '-', 1);
226 family = token(family, '-', 2);
234 bool LyXRC::read(FileName const & filename, bool check_format)
236 Lexer lexrc(lyxrcTags);
237 lexrc.setFile(filename);
238 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
239 ReturnValues retval = read(lexrc, check_format);
240 if (!check_format || retval != FormatMismatch)
241 return retval == ReadOK;
243 LYXERR(Debug::FILES, "Converting LyXRC file to " << LYXRC_FILEFORMAT);
244 TempFile tmp("convert_lyxrc");
245 FileName const tempfile = tmp.name();
246 bool const success = prefs2prefs(filename, tempfile, false);
248 LYXERR0 ("Unable to convert " << filename.absFileName() <<
249 " to format " << LYXRC_FILEFORMAT);
252 // Keep this in the else branch, such that lexrc2 goes out
253 // of scope and releases the lock on tempfile before we
254 // attempt to remove it. This matters on Windows.
255 Lexer lexrc2(lyxrcTags);
256 lexrc2.setFile(tempfile);
257 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
258 retval = read(lexrc2, check_format);
259 if (retval == FormatMismatch)
260 LYXERR0("Conversion failed for " << filename.absFileName());
262 return retval == ReadOK;
266 // don't need to worry about conversion, because this is always
267 // from an internal source
268 bool LyXRC::read(istream & is)
270 Lexer lexrc(lyxrcTags);
272 LYXERR(Debug::LYXRC, "Reading istream...");
273 return read(lexrc, false) == ReadOK;
277 LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
279 if (lyxerr.debugging(Debug::PARSER))
280 lexrc.printTable(lyxerr);
285 // format prior to 2.0 and introduction of format tag
286 unsigned int rc_format = 0;
288 #ifdef USE_MACOSX_PACKAGING
289 open_buffers_in_tabs = appleUserTabbingPreferenceAlways();
292 while (lexrc.isOK()) {
293 // By using two switches we take advantage of the compiler
294 // telling us if we have missed a LyXRCTags element in
295 // the second switch.
296 // Note that this also shows a problem with Lexer since it
297 // helps us avoid taking advantage of the strictness of the
300 int le = lexrc.lex();
302 case Lexer::LEX_UNDEF:
303 lexrc.printError("Unknown tag `$$Token'");
305 case Lexer::LEX_FEOF:
310 switch (static_cast<LyXRCTags>(le)) {
313 rc_format = lexrc.getInteger();
315 case RC_INPUT: // Include file
318 libFileSearch(string(),
320 if (!read(tmp, check_format)) {
322 "Error reading included file: " + tmp.absFileName());
328 bind_file = os::internal_path(lexrc.getString());
333 def_file = os::internal_path(lexrc.getString());
338 ui_file = os::internal_path(lexrc.getString());
341 case RC_AUTORESET_OPTIONS:
342 lexrc >> auto_reset_options;
345 case RC_DISPLAY_GRAPHICS:
347 display_graphics = lexrc.getString() == "true";
350 case RC_TEX_EXPECTS_WINDOWS_PATHS:
351 lexrc >> windows_style_tex_paths;
354 case RC_TEX_ALLOWS_SPACES:
355 lexrc >> tex_allows_spaces;
358 case RC_TEXINPUTS_PREFIX:
359 lexrc >> texinputs_prefix;
366 case RC_KBMAP_PRIMARY:
368 string const kmap(os::internal_path(lexrc.getString()));
369 if (!libFileSearch("kbd", kmap, "kmap").empty()
371 primary_kbmap = kmap;
373 lexrc.printError("LyX: Keymap `$$Token' not found");
378 case RC_KBMAP_SECONDARY:
380 string const kmap(os::internal_path(lexrc.getString()));
381 if (!libFileSearch("kbd", kmap, "kmap").empty()
383 secondary_kbmap = kmap;
385 lexrc.printError("LyX: Keymap `$$Token' not found");
390 case RC_PRINTLANDSCAPEFLAG:
391 lexrc >> print_landscape_flag;
394 case RC_PRINTPAPERDIMENSIONFLAG:
395 lexrc >> print_paper_dimension_flag;
398 case RC_PRINTPAPERFLAG:
399 lexrc >> print_paper_flag;
402 case RC_PYGMENTIZE_COMMAND:
403 if (lexrc.next(true)) {
404 pygmentize_command = lexrc.getString();
408 case RC_VIEWDVI_PAPEROPTION:
410 view_dvi_paper_option = lexrc.getString();
412 view_dvi_paper_option.erase();
415 case RC_CHKTEX_COMMAND:
416 if (lexrc.next(true)) {
417 chktex_command = lexrc.getString();
421 case RC_BIBTEX_ALTERNATIVES:
422 if (lexrc.next(true)) {
423 bibtex_alternatives.insert(lexrc.getString());
427 case RC_BIBTEX_COMMAND:
428 if (lexrc.next(true)) {
429 bibtex_command = lexrc.getString();
433 case RC_JBIBTEX_COMMAND:
434 if (lexrc.next(true)) {
435 jbibtex_command = lexrc.getString();
439 case RC_JBIBTEX_ALTERNATIVES:
440 if (lexrc.next(true)) {
441 jbibtex_alternatives.insert(lexrc.getString());
445 case RC_INDEX_ALTERNATIVES:
446 if (lexrc.next(true)) {
447 index_alternatives.insert(lexrc.getString());
451 case RC_INDEX_COMMAND:
452 if (lexrc.next(true)) {
453 index_command = lexrc.getString();
457 case RC_JINDEX_COMMAND:
458 if (lexrc.next(true)) {
459 jindex_command = lexrc.getString();
463 case RC_SPLITINDEX_COMMAND:
464 if (lexrc.next(true)) {
465 splitindex_command = lexrc.getString();
469 case RC_NOMENCL_COMMAND:
470 if (lexrc.next(true)) {
471 nomencl_command = lexrc.getString();
480 lexrc >> defaultZoom;
481 if (defaultZoom < 10)
485 case RC_GEOMETRY_SESSION:
486 lexrc >> allow_geometry_session;
489 case RC_SCREEN_FONT_SIZES:
490 lexrc >> font_sizes[TINY_SIZE];
491 lexrc >> font_sizes[SCRIPT_SIZE];
492 lexrc >> font_sizes[FOOTNOTE_SIZE];
493 lexrc >> font_sizes[SMALL_SIZE];
494 lexrc >> font_sizes[NORMAL_SIZE];
495 lexrc >> font_sizes[LARGE_SIZE];
496 lexrc >> font_sizes[LARGER_SIZE];
497 lexrc >> font_sizes[LARGEST_SIZE];
498 lexrc >> font_sizes[HUGE_SIZE];
499 lexrc >> font_sizes[HUGER_SIZE];
502 case RC_SCREEN_FONT_SCALABLE:
503 lexrc >> use_scalable_fonts;
510 case RC_DOCUMENTPATH:
512 document_path = os::internal_path(lexrc.getString());
517 example_path = os::internal_path(lexrc.getString());
520 case RC_TEMPLATEPATH:
522 template_path = os::internal_path(lexrc.getString());
527 tempdir_path = os::internal_path(lexrc.getString());
530 case RC_THESAURUSDIRPATH:
532 thesaurusdir_path = os::internal_path(lexrc.getString());
535 case RC_HUNSPELLDIR_PATH:
537 hunspelldir_path = os::internal_path(lexrc.getString());
540 case RC_USELASTFILEPOS:
541 lexrc >> use_lastfilepos;
545 lexrc >> load_session;
548 case RC_MOUSE_WHEEL_SPEED:
549 lexrc >> mouse_wheel_speed;
552 case RC_COMPLETION_INLINE_DELAY:
553 lexrc >> completion_inline_delay;
556 case RC_COMPLETION_INLINE_MATH:
557 lexrc >> completion_inline_math;
560 case RC_COMPLETION_INLINE_TEXT:
561 lexrc >> completion_inline_text;
564 case RC_COMPLETION_INLINE_DOTS:
565 lexrc >> completion_inline_dots;
568 case RC_AUTOCORRECTION_MATH:
569 lexrc >> autocorrection_math;
572 case RC_COMPLETION_POPUP_DELAY:
573 lexrc >> completion_popup_delay;
576 case RC_COMPLETION_POPUP_MATH:
577 lexrc >> completion_popup_math;
580 case RC_COMPLETION_POPUP_TEXT:
581 lexrc >> completion_popup_text;
584 case RC_COMPLETION_CURSOR_TEXT:
585 lexrc >> completion_cursor_text;
588 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
589 lexrc >> completion_popup_after_complete;
592 case RC_COMPLETION_MINLENGTH:
593 lexrc >> completion_minlength;
596 case RC_NUMLASTFILES:
597 lexrc >> num_lastfiles;
600 case RC_CHECKLASTFILES:
601 lexrc >> check_lastfiles;
608 case RC_USE_SYSTEM_THEME_ICONS:
609 lexrc >> use_system_theme_icons;
612 case RC_SCREEN_FONT_ROMAN:
614 roman_font_name = lexrc.getString();
615 oldFontFormat(roman_font_name,
620 case RC_SCREEN_FONT_SANS:
622 sans_font_name = lexrc.getString();
623 oldFontFormat(sans_font_name, sans_font_foundry);
627 case RC_SCREEN_FONT_TYPEWRITER:
629 typewriter_font_name = lexrc.getString();
630 oldFontFormat(typewriter_font_name,
631 typewriter_font_foundry);
635 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
636 lexrc >> roman_font_foundry;
639 case RC_SCREEN_FONT_SANS_FOUNDRY:
640 lexrc >> sans_font_foundry;
643 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
644 lexrc >> typewriter_font_foundry;
649 lexrc.printError("Missing color tag.");
652 string const lyx_name = lexrc.getString();
655 lexrc.printError("Missing color name for color: `$$Token'");
658 string const x11_name = lexrc.getString();
660 ColorCode const col =
661 lcolor.getFromLyXName(lyx_name);
662 if (col == Color_none ||
663 col == Color_inherit ||
667 if (!lcolor.setColor(col, x11_name))
668 LYXERR0("Bad lyxrc set_color for " << lyx_name);
669 LYXERR(Debug::LYXRC, "Set " << lyx_name << "(" << col << ") to " << x11_name);
673 case RC_AUTOREGIONDELETE:
674 // Auto region delete defaults to true
675 lexrc >> auto_region_delete;
680 string userdir = package().user_support().absFileName();
681 if (userdir.back() == '/')
683 lyxpipes = subst(os::internal_path(lexrc.getString()), "$$UserDir",
688 case RC_CITATION_SEARCH:
689 lexrc >> citation_search;
692 case RC_CITATION_SEARCH_PATTERN:
694 citation_search_pattern = lexrc.getString();
697 case RC_CITATION_SEARCH_VIEW:
699 citation_search_view = lexrc.getString();
702 case RC_CT_ADDITIONS_UNDERLINED:
703 lexrc >> ct_additions_underlined;
706 case RC_CT_MARKUP_COPIED:
707 lexrc >> ct_markup_copied;
710 case RC_CURSOR_FOLLOWS_SCROLLBAR:
711 lexrc >> cursor_follows_scrollbar;
714 case RC_CURSOR_WIDTH:
715 lexrc >> cursor_width;
718 case RC_SCROLL_BELOW_DOCUMENT:
719 lexrc >> scroll_below_document;
722 case RC_PARAGRAPH_MARKERS:
723 lexrc >> paragraph_markers;
726 case RC_MAC_DONTSWAP_CTRL_META:
727 lexrc >> mac_dontswap_ctrl_meta;
730 case RC_MAC_LIKE_CURSOR_MOVEMENT:
731 lexrc >> mac_like_cursor_movement;
734 case RC_MACRO_EDIT_STYLE:
736 switch (lexrc.getInteger()) {
737 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
738 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
739 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
744 case RC_DIALOGS_ICONIFY_WITH_MAIN:
745 lexrc >> dialogs_iconify_with_main;
748 case RC_PLAINTEXT_LINELEN:
749 lexrc >> plaintext_linelen;
751 // Spellchecker settings:
752 case RC_ACCEPT_COMPOUND:
753 lexrc >> spellchecker_accept_compound;
755 case RC_USE_NATIVE_FILEDIALOG:
756 lexrc >> use_native_filedialog;
758 case RC_USE_SYSTEM_COLORS:
759 lexrc >> use_system_colors;
762 lexrc >> use_tooltip;
764 case RC_SPELLCHECKER:
765 lexrc >> spellchecker;
768 lexrc >> spellchecker_alt_lang;
771 lexrc >> spellchecker_esc_chars;
773 case RC_SPELLCHECK_CONTINUOUSLY:
774 lexrc >> spellcheck_continuously;
776 case RC_SPELLCHECK_NOTES:
777 lexrc >> spellcheck_notes;
780 lexrc >> make_backup;
782 case RC_SAVE_COMPRESSED:
783 lexrc >> save_compressed;
786 lexrc >> save_origin;
788 case RC_BACKUPDIR_PATH:
790 backupdir_path = os::internal_path(lexrc.getString());
792 case RC_DEFAULT_DECIMAL_SEP:
793 lexrc >> default_decimal_sep;
795 case RC_DEFAULT_LENGTH_UNIT:
797 default_length_unit = (Length::UNIT) lexrc.getInteger();
799 case RC_LANGUAGE_CUSTOM_PACKAGE:
800 lexrc >> language_custom_package;
802 case RC_LANGUAGE_AUTO_BEGIN:
803 lexrc >> language_auto_begin;
805 case RC_LANGUAGE_AUTO_END:
806 lexrc >> language_auto_end;
808 case RC_LANGUAGE_GLOBAL_OPTIONS:
809 lexrc >> language_global_options;
811 case RC_LANGUAGE_PACKAGE_SELECTION:
813 switch (lexrc.getInteger()) {
815 language_package_selection = LP_AUTO;
818 language_package_selection = LP_BABEL;
821 language_package_selection = LP_CUSTOM;
824 language_package_selection = LP_NONE;
829 case RC_LANGUAGE_COMMAND_BEGIN:
830 lexrc >> language_command_begin;
832 case RC_LANGUAGE_COMMAND_END:
833 lexrc >> language_command_end;
835 case RC_LANGUAGE_COMMAND_LOCAL:
836 lexrc >> language_command_local;
838 case RC_RESPECT_OS_KBD_LANGUAGE:
839 lexrc >> respect_os_kbd_language;
841 case RC_VISUAL_CURSOR:
842 lexrc >> visual_cursor;
844 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
845 lexrc >> close_buffer_with_last_view;
848 lexrc >> auto_number;
850 case RC_MARK_FOREIGN_LANGUAGE:
851 lexrc >> mark_foreign_language;
857 fmt = lexrc.getString();
858 if (lexrc.next(true))
859 command = lexrc.getString();
860 setMover(fmt, command);
865 string from, to, command, flags;
867 from = lexrc.getString();
869 to = lexrc.getString();
870 if (lexrc.next(true))
871 command = lexrc.getString();
873 flags = lexrc.getString();
875 theConverters().erase(from, to);
877 theConverters().add(from, to, command, flags);
880 // compatibility with versions older than 1.4.0 only
882 string format, command;
883 lexrc >> format >> command;
884 theFormats().setViewer(format, command);
887 case RC_FILEFORMAT: {
889 string format, extensions, shortcut;
890 docstring prettyname;
891 if (!(lexrc >> format >> extensions))
893 if (ok && lexrc.next(true))
894 prettyname = lexrc.getDocString();
898 if(!(lexrc >> shortcut))
900 string viewer, editor;
901 if (ok && lexrc.next(true))
902 viewer = lexrc.getString();
905 if (ok && lexrc.next(true))
906 editor = lexrc.getString();
910 if (!(lexrc >> flags >> mime))
912 int flgs = Format::none;
913 while (!flags.empty()) {
915 flags = split(flags, flag, ',');
916 if (flag == "document")
917 flgs |= Format::document;
918 else if (flag == "vector")
919 flgs |= Format::vector;
920 else if (flag == "zipped=native")
921 flgs |= Format::zipped_native;
922 else if (flag == "menu=export")
923 flgs |= Format::export_menu;
924 else if (flag == "menu=none")
925 flgs |= Format::no_menu;
927 LYXERR0("Ignoring unknown flag `"
928 << flag << "' for format `"
932 LYXERR0("Syntax error in format " << format);
933 else if (prettyname.empty()) {
934 if (theConverters().formatIsUsed(format))
935 LYXERR0("Can't delete format " << format);
937 theFormats().erase(format);
939 theFormats().add(format, extensions, prettyname,
940 shortcut, viewer, editor, mime, flgs);
944 case RC_VIEWER_ALTERNATIVES: {
945 string format, command;
946 if ((lexrc >> format) && lexrc.next(true)) {
947 command = lexrc.getString();
948 viewer_alternatives[format].insert(command);
952 case RC_EDITOR_ALTERNATIVES: {
953 string format, command;
954 if ((lexrc >> format) && lexrc.next(true)) {
955 command = lexrc.getString();
956 editor_alternatives[format].insert(command);
961 case RC_DEFAULT_OTF_VIEW_FORMAT:
962 lexrc >> default_otf_view_format;
965 case RC_DEFAULT_PLATEX_VIEW_FORMAT:
966 lexrc >> default_platex_view_format;
969 case RC_DEFAULT_VIEW_FORMAT:
970 lexrc >> default_view_format;
973 case RC_GUI_LANGUAGE:
974 lexrc >> gui_language;
978 lexrc >> show_banner;
983 string const tmp = lexrc.getString();
984 if (tmp == "true" || tmp == "on")
985 preview = PREVIEW_ON;
986 else if (tmp == "no_math")
987 preview = PREVIEW_NO_MATH;
989 preview = PREVIEW_OFF;
990 if (tmp != "false" && tmp != "off")
991 LYXERR0("Unrecognized preview status \""
997 case RC_PREVIEW_HASHED_LABELS:
998 lexrc >> preview_hashed_labels;
1001 case RC_PREVIEW_SCALE_FACTOR:
1002 lexrc >> preview_scale_factor;
1009 lexrc >> user_email;
1011 case RC_USER_INITIALS:
1012 lexrc >> user_initials;
1015 case RC_PATH_PREFIX:
1016 lexrc >> path_prefix;
1019 case RC_USE_CONVERTER_CACHE:
1020 lexrc >> use_converter_cache;
1022 case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
1023 lexrc >> use_converter_needauth_forbidden;
1025 case RC_USE_CONVERTER_NEEDAUTH:
1026 lexrc >> use_converter_needauth;
1028 case RC_CONVERTER_CACHE_MAXAGE:
1029 lexrc >> converter_cache_maxage;
1032 case RC_SORT_LAYOUTS:
1033 lexrc >> sort_layouts;
1035 case RC_GROUP_LAYOUTS:
1036 lexrc >> group_layouts;
1038 case RC_FULL_SCREEN_LIMIT:
1039 lexrc >> full_screen_limit;
1041 case RC_FULL_SCREEN_TOOLBARS:
1042 lexrc >> full_screen_toolbars;
1044 case RC_FULL_SCREEN_SCROLLBAR:
1045 lexrc >> full_screen_scrollbar;
1047 case RC_FULL_SCREEN_STATUSBAR:
1048 lexrc >> full_screen_statusbar;
1050 case RC_FULL_SCREEN_TABBAR:
1051 lexrc >> full_screen_tabbar;
1053 case RC_FULL_SCREEN_MENUBAR:
1054 lexrc >> full_screen_menubar;
1056 case RC_FULL_SCREEN_WIDTH:
1057 lexrc >> full_screen_width;
1059 case RC_OPEN_BUFFERS_IN_TABS:
1060 lexrc >> open_buffers_in_tabs;
1062 case RC_SINGLE_CLOSE_TAB_BUTTON:
1063 lexrc >> single_close_tab_button;
1065 case RC_SINGLE_INSTANCE:
1066 lexrc >> single_instance;
1067 if (run_mode == PREFERRED)
1068 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1070 case RC_FORWARD_SEARCH_DVI:
1071 if (lexrc.next(true))
1072 forward_search_dvi = lexrc.getString();
1074 case RC_FORWARD_SEARCH_PDF:
1075 if (lexrc.next(true))
1076 forward_search_pdf = lexrc.getString();
1078 case RC_EXPORT_OVERWRITE:
1080 string const tmp = lexrc.getString();
1081 if (tmp == "all" || tmp == "true")
1082 export_overwrite = ALL_FILES;
1083 else if (tmp == "main")
1084 export_overwrite = MAIN_FILE;
1086 export_overwrite = NO_FILES;
1087 if (tmp != "ask" && tmp != "false")
1088 LYXERR0("Unrecognized export_overwrite status \""
1093 case RC_SCROLL_WHEEL_ZOOM:
1095 string const tmp = lexrc.getString();
1097 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1098 else if (tmp == "shift")
1099 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1100 else if (tmp == "alt")
1101 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1103 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1104 if (tmp != "off" && tmp != "false")
1105 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1111 case RC_MOUSE_MIDDLEBUTTON_PASTE:
1112 lexrc >> mouse_middlebutton_paste;
1116 break; // this is just a dummy
1119 // This is triggered the first time through the loop unless
1120 // we hit a format tag.
1121 if (check_format && rc_format != LYXRC_FILEFORMAT)
1122 return FormatMismatch;
1125 /// Update converters data-structures
1126 theConverters().update(theFormats());
1127 theConverters().buildGraph();
1128 theBufferList().invalidateConverterCache();
1134 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1136 ofstream ofs(filename.toFilesystemEncoding().c_str());
1138 write(ofs, ignore_system_lyxrc);
1142 void LyXRC::print() const
1144 if (lyxerr.debugging())
1145 write(lyxerr, false);
1153 typedef pair<string, SpecialisedMover> Data;
1155 SameMover(Data const & comparison)
1156 : comparison_(comparison) {}
1158 bool operator()(Data const & data) const
1160 return data.first == comparison_.first &&
1161 data.second.command() == comparison_.second.command();
1171 // Escape \ and " so that LyXLex can read the string later
1172 string escapeCommand(string const & str) {
1173 return subst(subst(str , "\\", "\\\\"),
1180 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1182 LyXRCTags tag = RC_LAST;
1184 if (!name.empty()) {
1185 for (int i = 0; i != lyxrcCount; ++i)
1186 if ("\\" + name == lyxrcTags[i].tag)
1187 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1191 os << "# LyX " << lyx_version
1192 << " generated this file. If you want to make your own\n"
1193 << "# modifications you should do them from inside LyX and save.\n\n"
1194 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1196 // Why the switch you might ask. It is a trick to ensure that all
1197 // the elements in the LyXRCTags enum are handled. As you can see
1198 // there are no breaks at all. So it is just a huge fall-through.
1199 // The nice thing is that we will get a warning from the compiler
1200 // if we forget an element.
1204 // input/include files are not done here
1205 case RC_LYXRCFORMAT:
1207 if (ignore_system_lyxrc ||
1208 bind_file != system_lyxrc.bind_file) {
1209 string const path = os::external_path(bind_file);
1210 os << "\\bind_file \"" << path << "\"\n";
1216 if (ignore_system_lyxrc ||
1217 def_file != system_lyxrc.def_file) {
1218 string const path = os::external_path(def_file);
1219 os << "\\def_file \"" << path << "\"\n";
1228 << "# MISC SECTION ######################################\n"
1230 // bind files are not done here.
1232 case RC_PATH_PREFIX:
1233 if (ignore_system_lyxrc ||
1234 path_prefix != system_lyxrc.path_prefix) {
1235 os << "\\path_prefix \"" << path_prefix << "\"\n";
1241 if (ignore_system_lyxrc ||
1242 ui_file != system_lyxrc.ui_file) {
1243 string const path = os::external_path(ui_file);
1244 os << "\\ui_file \"" << path << "\"\n";
1249 case RC_AUTOREGIONDELETE:
1250 if (ignore_system_lyxrc ||
1251 auto_region_delete != system_lyxrc.auto_region_delete) {
1252 os << "# Set to false to inhibit automatic replacement of\n"
1253 << "# the current selection.\n"
1254 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1260 case RC_AUTORESET_OPTIONS:
1261 if (ignore_system_lyxrc ||
1262 auto_reset_options != system_lyxrc.auto_reset_options) {
1263 os << "# Set to false to inhibit automatic reset of\n"
1264 << "# the class options to defaults on class change.\n"
1265 << "\\auto_reset_options "
1266 << convert<string>(auto_reset_options)
1273 if (ignore_system_lyxrc ||
1274 autosave != system_lyxrc.autosave) {
1275 os << "# The time interval between auto-saves in seconds.\n"
1276 << "\\autosave " << autosave << '\n';
1281 case RC_DISPLAY_GRAPHICS:
1282 if (ignore_system_lyxrc ||
1283 display_graphics != system_lyxrc.display_graphics) {
1284 os << "# Display graphics within LyX\n"
1286 << "\\display_graphics "
1287 << (display_graphics ? "true" : "false")
1293 case RC_SORT_LAYOUTS:
1294 if (ignore_system_lyxrc ||
1295 sort_layouts != system_lyxrc.sort_layouts) {
1296 os << "# Sort layouts alphabetically.\n"
1297 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1302 case RC_GROUP_LAYOUTS:
1303 if (ignore_system_lyxrc ||
1304 group_layouts != system_lyxrc.group_layouts) {
1305 os << "# Group layouts by their category.\n"
1306 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1311 case RC_VIEWDVI_PAPEROPTION:
1312 if (ignore_system_lyxrc ||
1313 view_dvi_paper_option
1314 != system_lyxrc.view_dvi_paper_option) {
1315 os << "# Options used to specify paper size to the\n"
1316 << "# view_dvi_command (e.g. -paper)\n"
1317 << "\\view_dvi_paper_option \""
1318 << view_dvi_paper_option << "\"\n";
1323 case RC_CHKTEX_COMMAND:
1324 if (ignore_system_lyxrc ||
1325 chktex_command != system_lyxrc.chktex_command) {
1326 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1331 case RC_BIBTEX_ALTERNATIVES: {
1332 CommandSet::const_iterator it = bibtex_alternatives.begin();
1333 CommandSet::const_iterator end = bibtex_alternatives.end();
1334 for ( ; it != end; ++it) {
1335 if (ignore_system_lyxrc
1336 || !system_lyxrc.bibtex_alternatives.count(*it))
1337 os << "\\bibtex_alternatives \""
1344 case RC_BIBTEX_COMMAND:
1345 if (ignore_system_lyxrc ||
1346 bibtex_command != system_lyxrc.bibtex_command) {
1347 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1352 case RC_JBIBTEX_COMMAND:
1353 if (ignore_system_lyxrc ||
1354 jbibtex_command != system_lyxrc.jbibtex_command) {
1355 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1360 case RC_JBIBTEX_ALTERNATIVES: {
1361 CommandSet::const_iterator it = jbibtex_alternatives.begin();
1362 CommandSet::const_iterator end = jbibtex_alternatives.end();
1363 for ( ; it != end; ++it) {
1364 if (ignore_system_lyxrc
1365 || !system_lyxrc.jbibtex_alternatives.count(*it))
1366 os << "\\jbibtex_alternatives \""
1373 case RC_INDEX_ALTERNATIVES: {
1374 CommandSet::const_iterator it = index_alternatives.begin();
1375 CommandSet::const_iterator end = index_alternatives.end();
1376 for ( ; it != end; ++it) {
1377 if (ignore_system_lyxrc
1378 || !system_lyxrc.index_alternatives.count(*it))
1379 os << "\\index_alternatives \""
1386 case RC_INDEX_COMMAND:
1387 if (ignore_system_lyxrc ||
1388 index_command != system_lyxrc.index_command) {
1389 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1394 case RC_JINDEX_COMMAND:
1395 if (ignore_system_lyxrc ||
1396 jindex_command != system_lyxrc.jindex_command) {
1397 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1402 case RC_SPLITINDEX_COMMAND:
1403 if (ignore_system_lyxrc ||
1404 splitindex_command != system_lyxrc.splitindex_command) {
1405 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1410 case RC_NOMENCL_COMMAND:
1411 if (ignore_system_lyxrc ||
1412 nomencl_command != system_lyxrc.nomencl_command) {
1413 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1418 case RC_PYGMENTIZE_COMMAND:
1419 if (ignore_system_lyxrc ||
1420 pygmentize_command != system_lyxrc.pygmentize_command) {
1421 os << "\\pygmentize_command \"" << escapeCommand(pygmentize_command) << "\"\n";
1426 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1427 // Don't write this setting to the preferences file,
1428 // but allow temporary changes (bug 7557).
1429 if (ignore_system_lyxrc) {
1430 os << "\\tex_expects_windows_paths "
1431 << convert<string>(windows_style_tex_paths) << '\n';
1436 case RC_TEX_ALLOWS_SPACES:
1437 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1438 os << "\\tex_allows_spaces "
1439 << convert<string>(tex_allows_spaces) << '\n';
1445 if (ignore_system_lyxrc ||
1446 use_kbmap != system_lyxrc.use_kbmap) {
1447 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1452 case RC_KBMAP_PRIMARY:
1453 if (ignore_system_lyxrc ||
1454 primary_kbmap != system_lyxrc.primary_kbmap) {
1455 string const path = os::external_path(primary_kbmap);
1456 os << "\\kbmap_primary \"" << path << "\"\n";
1461 case RC_KBMAP_SECONDARY:
1462 if (ignore_system_lyxrc ||
1463 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1464 string const path = os::external_path(secondary_kbmap);
1465 os << "\\kbmap_secondary \"" << path << "\"\n";
1471 if (ignore_system_lyxrc ||
1472 lyxpipes != system_lyxrc.lyxpipes) {
1473 string const path = os::external_path(lyxpipes);
1474 os << "\\serverpipe \"" << path << "\"\n";
1480 os << "\\user_name \"" << user_name << "\"\n";
1485 os << "\\user_email \"" << user_email << "\"\n";
1489 case RC_USER_INITIALS:
1490 os << "\\user_initials \"" << user_initials << "\"\n";
1494 case RC_SHOW_BANNER:
1495 if (ignore_system_lyxrc ||
1496 show_banner != system_lyxrc.show_banner) {
1497 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1503 if (ignore_system_lyxrc ||
1504 preview != system_lyxrc.preview) {
1510 case PREVIEW_NO_MATH:
1517 os << "\\preview " << status << '\n';
1522 case RC_PREVIEW_HASHED_LABELS:
1523 if (ignore_system_lyxrc ||
1524 preview_hashed_labels !=
1525 system_lyxrc.preview_hashed_labels) {
1526 os << "\\preview_hashed_labels "
1527 << convert<string>(preview_hashed_labels) << '\n';
1532 case RC_PREVIEW_SCALE_FACTOR:
1533 if (ignore_system_lyxrc ||
1534 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1535 os << "\\preview_scale_factor "
1536 << preview_scale_factor << '\n';
1541 case RC_USE_CONVERTER_CACHE:
1542 if (ignore_system_lyxrc ||
1543 use_converter_cache != system_lyxrc.use_converter_cache) {
1544 os << "\\use_converter_cache "
1545 << convert<string>(use_converter_cache) << '\n';
1550 case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
1551 if (ignore_system_lyxrc ||
1552 use_converter_needauth_forbidden != system_lyxrc.use_converter_needauth_forbidden) {
1553 os << "\\use_converter_needauth_forbidden "
1554 << convert<string>(use_converter_needauth_forbidden) << '\n';
1559 case RC_USE_CONVERTER_NEEDAUTH:
1560 if (ignore_system_lyxrc ||
1561 use_converter_needauth != system_lyxrc.use_converter_needauth) {
1562 os << "\\use_converter_needauth "
1563 << convert<string>(use_converter_needauth) << '\n';
1568 case RC_CONVERTER_CACHE_MAXAGE:
1569 if (ignore_system_lyxrc ||
1570 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1571 os << "\\converter_cache_maxage "
1572 << converter_cache_maxage << '\n';
1578 << "# SCREEN & FONTS SECTION ############################\n"
1582 if (ignore_system_lyxrc ||
1583 icon_set != system_lyxrc.icon_set) {
1584 os << "\\icon_set \"" << icon_set
1590 case RC_USE_SYSTEM_THEME_ICONS:
1591 if (ignore_system_lyxrc ||
1592 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1593 os << "\\use_system_theme_icons "
1594 << convert<string>(use_system_theme_icons)
1601 if (ignore_system_lyxrc ||
1602 dpi != system_lyxrc.dpi) {
1603 os << "\\screen_dpi " << dpi << '\n';
1608 case RC_SCREEN_ZOOM:
1609 if (ignore_system_lyxrc ||
1610 defaultZoom != system_lyxrc.defaultZoom) {
1611 os << "\\screen_zoom " << defaultZoom << '\n';
1616 case RC_GEOMETRY_SESSION:
1617 if (ignore_system_lyxrc ||
1618 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1619 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1625 case RC_CITATION_SEARCH:
1626 if (ignore_system_lyxrc ||
1627 citation_search != system_lyxrc.citation_search) {
1628 os << "# Set to true to use script to search\n"
1629 << "# locl disk for citation targets.\n"
1630 << "\\citation_search "
1631 << convert<string>(citation_search)
1637 case RC_CITATION_SEARCH_VIEW:
1638 if (ignore_system_lyxrc ||
1639 citation_search_view != system_lyxrc.citation_search_view) {
1640 os << "\\citation_search_view \""
1641 << citation_search_view << "\"\n";
1646 case RC_CITATION_SEARCH_PATTERN:
1647 if (ignore_system_lyxrc ||
1648 citation_search_pattern != system_lyxrc.citation_search_pattern) {
1649 os << "\\citation_search_pattern \""
1650 << citation_search_pattern << "\"\n";
1655 case RC_CT_ADDITIONS_UNDERLINED:
1656 if (ignore_system_lyxrc ||
1657 ct_additions_underlined
1658 != system_lyxrc.ct_additions_underlined) {
1659 os << "\\ct_additions_underlined "
1660 << convert<string>(ct_additions_underlined) << '\n';
1665 case RC_CT_MARKUP_COPIED:
1666 if (ignore_system_lyxrc ||
1668 != system_lyxrc.ct_markup_copied) {
1669 os << "\\ct_markup_copied "
1670 << convert<string>(ct_markup_copied) << '\n';
1675 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1676 if (ignore_system_lyxrc ||
1677 cursor_follows_scrollbar
1678 != system_lyxrc.cursor_follows_scrollbar) {
1679 os << "\\cursor_follows_scrollbar "
1680 << convert<string>(cursor_follows_scrollbar) << '\n';
1685 case RC_CURSOR_WIDTH:
1686 if (ignore_system_lyxrc ||
1688 != system_lyxrc.cursor_width) {
1689 os << "\\cursor_width "
1690 << cursor_width << '\n';
1695 case RC_SCROLL_BELOW_DOCUMENT:
1696 if (ignore_system_lyxrc ||
1697 scroll_below_document
1698 != system_lyxrc.scroll_below_document) {
1699 os << "\\scroll_below_document "
1700 << convert<string>(scroll_below_document) << '\n';
1705 case RC_PARAGRAPH_MARKERS:
1706 if (ignore_system_lyxrc ||
1708 != system_lyxrc.paragraph_markers) {
1709 os << "\\paragraph_markers "
1710 << convert<string>(paragraph_markers) << '\n';
1715 case RC_MAC_DONTSWAP_CTRL_META:
1716 if (ignore_system_lyxrc ||
1717 mac_dontswap_ctrl_meta
1718 != system_lyxrc.mac_dontswap_ctrl_meta) {
1719 os << "\\mac_dontswap_ctrl_meta "
1720 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1725 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1726 if (ignore_system_lyxrc ||
1727 mac_like_cursor_movement
1728 != system_lyxrc.mac_like_cursor_movement) {
1729 os << "\\mac_like_cursor_movement "
1730 << convert<string>(mac_like_cursor_movement) << '\n';
1735 case RC_MACRO_EDIT_STYLE:
1736 if (ignore_system_lyxrc ||
1738 != system_lyxrc.macro_edit_style) {
1739 os << "\\macro_edit_style ";
1740 switch (macro_edit_style) {
1741 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1742 case MACRO_EDIT_INLINE: os << "1\n"; break;
1743 case MACRO_EDIT_LIST: os << "2\n"; break;
1749 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1750 if (ignore_system_lyxrc ||
1751 dialogs_iconify_with_main
1752 != system_lyxrc.dialogs_iconify_with_main) {
1753 os << "\\dialogs_iconify_with_main "
1754 << convert<string>(dialogs_iconify_with_main) << '\n';
1759 case RC_SCREEN_FONT_ROMAN:
1760 if (ignore_system_lyxrc ||
1761 roman_font_name != system_lyxrc.roman_font_name) {
1762 os << "\\screen_font_roman \"" << roman_font_name
1768 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1769 if (ignore_system_lyxrc ||
1770 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1771 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1777 case RC_SCREEN_FONT_SANS:
1778 if (ignore_system_lyxrc ||
1779 sans_font_name != system_lyxrc.sans_font_name) {
1780 os << "\\screen_font_sans \"" << sans_font_name
1786 case RC_SCREEN_FONT_SANS_FOUNDRY:
1787 if (ignore_system_lyxrc ||
1788 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1789 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1795 case RC_SCREEN_FONT_TYPEWRITER:
1796 if (ignore_system_lyxrc ||
1797 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1798 os << "\\screen_font_typewriter \""
1799 << typewriter_font_name << "\"\n";
1804 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1805 if (ignore_system_lyxrc ||
1806 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1807 os << "\\screen_font_typewriter_foundry \""
1808 << typewriter_font_foundry << "\"\n";
1813 case RC_SCREEN_FONT_SCALABLE:
1814 if (ignore_system_lyxrc ||
1815 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1816 os << "\\screen_font_scalable "
1817 << convert<string>(use_scalable_fonts)
1823 case RC_SCREEN_FONT_SIZES:
1824 if (ignore_system_lyxrc ||
1825 font_sizes[TINY_SIZE]
1826 != system_lyxrc.font_sizes[TINY_SIZE] ||
1827 font_sizes[SCRIPT_SIZE]
1828 != system_lyxrc.font_sizes[SCRIPT_SIZE] ||
1829 font_sizes[FOOTNOTE_SIZE]
1830 != system_lyxrc.font_sizes[FOOTNOTE_SIZE] ||
1831 font_sizes[SMALL_SIZE]
1832 != system_lyxrc.font_sizes[SMALL_SIZE] ||
1833 font_sizes[NORMAL_SIZE]
1834 != system_lyxrc.font_sizes[NORMAL_SIZE] ||
1835 font_sizes[LARGE_SIZE]
1836 != system_lyxrc.font_sizes[LARGE_SIZE] ||
1837 font_sizes[LARGER_SIZE]
1838 != system_lyxrc.font_sizes[LARGER_SIZE] ||
1839 font_sizes[LARGEST_SIZE]
1840 != system_lyxrc.font_sizes[LARGEST_SIZE] ||
1841 font_sizes[HUGE_SIZE]
1842 != system_lyxrc.font_sizes[HUGE_SIZE] ||
1843 font_sizes[HUGER_SIZE]
1844 != system_lyxrc.font_sizes[HUGER_SIZE]) {
1845 streamsize old_prec = os.precision();
1846 os.setf(ios::fixed);
1848 os << "\\screen_font_sizes"
1849 << ' ' << font_sizes[TINY_SIZE]
1850 << ' ' << font_sizes[SCRIPT_SIZE]
1851 << ' ' << font_sizes[FOOTNOTE_SIZE]
1852 << ' ' << font_sizes[SMALL_SIZE]
1853 << ' ' << font_sizes[NORMAL_SIZE]
1854 << ' ' << font_sizes[LARGE_SIZE]
1855 << ' ' << font_sizes[LARGER_SIZE]
1856 << ' ' << font_sizes[LARGEST_SIZE]
1857 << ' ' << font_sizes[HUGE_SIZE]
1858 << ' ' << font_sizes[HUGER_SIZE]
1860 os.precision(old_prec);
1861 os.unsetf(ios::fixed);
1866 case RC_FULL_SCREEN_LIMIT:
1867 if (ignore_system_lyxrc ||
1868 full_screen_limit != system_lyxrc.full_screen_limit) {
1869 os << "\\fullscreen_limit "
1870 << convert<string>(full_screen_limit)
1876 case RC_FULL_SCREEN_TOOLBARS:
1877 if (ignore_system_lyxrc ||
1878 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1879 os << "\\fullscreen_toolbars "
1880 << convert<string>(full_screen_toolbars)
1886 case RC_FULL_SCREEN_SCROLLBAR:
1887 if (ignore_system_lyxrc ||
1888 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1889 os << "\\fullscreen_scrollbar "
1890 << convert<string>(full_screen_scrollbar)
1896 case RC_FULL_SCREEN_STATUSBAR:
1897 if (ignore_system_lyxrc ||
1898 full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
1899 os << "\\fullscreen_statusbar "
1900 << convert<string>(full_screen_statusbar)
1906 case RC_FULL_SCREEN_TABBAR:
1907 if (ignore_system_lyxrc ||
1908 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1909 os << "\\fullscreen_tabbar "
1910 << convert<string>(full_screen_tabbar)
1916 case RC_FULL_SCREEN_MENUBAR:
1917 if (ignore_system_lyxrc ||
1918 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1919 os << "\\fullscreen_menubar "
1920 << convert<string>(full_screen_menubar)
1926 case RC_FULL_SCREEN_WIDTH:
1927 if (ignore_system_lyxrc ||
1928 full_screen_width != system_lyxrc.full_screen_width) {
1929 os << "\\fullscreen_width "
1930 << convert<string>(full_screen_width)
1936 case RC_OPEN_BUFFERS_IN_TABS:
1937 if (ignore_system_lyxrc ||
1938 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1939 os << "\\open_buffers_in_tabs "
1940 << convert<string>(open_buffers_in_tabs)
1946 case RC_SINGLE_CLOSE_TAB_BUTTON:
1947 if (ignore_system_lyxrc ||
1948 single_close_tab_button != system_lyxrc.single_close_tab_button) {
1949 os << "\\single_close_tab_button "
1950 << convert<string>(single_close_tab_button)
1956 case RC_SINGLE_INSTANCE:
1957 if (ignore_system_lyxrc ||
1958 single_instance != system_lyxrc.single_instance) {
1959 os << "\\single_instance "
1960 << convert<string>(single_instance)
1966 case RC_FORWARD_SEARCH_DVI:
1967 if (ignore_system_lyxrc ||
1968 forward_search_dvi != system_lyxrc.forward_search_dvi) {
1969 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
1974 case RC_FORWARD_SEARCH_PDF:
1975 if (ignore_system_lyxrc ||
1976 forward_search_pdf != system_lyxrc.forward_search_pdf) {
1977 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
1983 << "# COLOR SECTION ###################################\n"
1988 for (int i = 0; i < Color_ignore; ++i) {
1989 ColorCode lc = static_cast<ColorCode>(i);
1990 string const col = lcolor.getX11HexName(lc);
1991 if (ignore_system_lyxrc
1992 || col != system_lcolor.getX11HexName(lc)) {
1993 os << "\\set_color \""
1994 << lcolor.getLyXName(lc) << "\" \""
2002 << "# PRINTER SECTION ###################################\n"
2006 case RC_PRINTLANDSCAPEFLAG:
2007 if (ignore_system_lyxrc ||
2008 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2009 os << "\\print_landscape_flag \"" << print_landscape_flag
2015 case RC_PRINTPAPERFLAG:
2016 if (ignore_system_lyxrc ||
2017 print_paper_flag != system_lyxrc.print_paper_flag) {
2018 os << "\\print_paper_flag \"" << print_paper_flag
2024 case RC_PRINTPAPERDIMENSIONFLAG:
2025 if (ignore_system_lyxrc ||
2026 print_paper_dimension_flag
2027 != system_lyxrc.print_paper_dimension_flag) {
2028 os << "\\print_paper_dimension_flag \""
2029 << print_paper_dimension_flag << "\"\n";
2035 << "# TEX SECTION #######################################\n"
2039 case RC_TEXINPUTS_PREFIX:
2040 if (ignore_system_lyxrc ||
2041 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2042 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2048 << "# FILE SECTION ######################################\n"
2051 case RC_DOCUMENTPATH:
2052 if (ignore_system_lyxrc ||
2053 document_path != system_lyxrc.document_path) {
2054 string const path = os::external_path(document_path);
2055 os << "\\document_path \"" << path << "\"\n";
2060 case RC_USELASTFILEPOS:
2061 if (ignore_system_lyxrc ||
2062 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2063 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2069 case RC_LOADSESSION:
2070 if (ignore_system_lyxrc ||
2071 load_session != system_lyxrc.load_session) {
2072 os << "\\load_session " << convert<string>(load_session)
2078 case RC_MOUSE_WHEEL_SPEED:
2079 if (ignore_system_lyxrc ||
2080 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2081 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2086 case RC_MOUSE_MIDDLEBUTTON_PASTE:
2087 if (ignore_system_lyxrc ||
2088 mouse_middlebutton_paste != system_lyxrc.mouse_middlebutton_paste) {
2089 os << "\\mouse_middlebutton_paste "
2090 << convert<string>(mouse_middlebutton_paste) << '\n';
2095 case RC_COMPLETION_INLINE_DELAY:
2096 if (ignore_system_lyxrc ||
2097 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2098 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2103 case RC_COMPLETION_INLINE_MATH:
2104 if (ignore_system_lyxrc ||
2105 completion_inline_math != system_lyxrc.completion_inline_math) {
2106 os << "\\completion_inline_math "
2107 << convert<string>(completion_inline_math) << '\n';
2112 case RC_COMPLETION_INLINE_TEXT:
2113 if (ignore_system_lyxrc ||
2114 completion_inline_text != system_lyxrc.completion_inline_text) {
2115 os << "\\completion_inline_text "
2116 << convert<string>(completion_inline_text) << '\n';
2121 case RC_COMPLETION_INLINE_DOTS:
2122 if (ignore_system_lyxrc ||
2123 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2124 os << "\\completion_inline_dots "
2125 << convert<string>(completion_inline_dots) << '\n';
2130 case RC_AUTOCORRECTION_MATH:
2131 if (ignore_system_lyxrc ||
2132 autocorrection_math != system_lyxrc.autocorrection_math) {
2133 os << "\\autocorrection_math "
2134 << convert<string>(autocorrection_math) << '\n';
2139 case RC_COMPLETION_POPUP_DELAY:
2140 if (ignore_system_lyxrc ||
2141 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2142 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2147 case RC_COMPLETION_POPUP_MATH:
2148 if (ignore_system_lyxrc ||
2149 completion_popup_math != system_lyxrc.completion_popup_math) {
2150 os << "\\completion_popup_math "
2151 << convert<string>(completion_popup_math) << '\n';
2156 case RC_COMPLETION_POPUP_TEXT:
2157 if (ignore_system_lyxrc ||
2158 completion_popup_text != system_lyxrc.completion_popup_text) {
2159 os << "\\completion_popup_text "
2160 << convert<string>(completion_popup_text) << '\n';
2165 case RC_COMPLETION_CURSOR_TEXT:
2166 if (ignore_system_lyxrc ||
2167 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2168 os << "\\completion_cursor_text "
2169 << convert<string>(completion_cursor_text) << '\n';
2174 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2175 if (ignore_system_lyxrc ||
2176 completion_popup_after_complete
2177 != system_lyxrc.completion_popup_after_complete) {
2178 os << "\\completion_popup_after_complete "
2179 << convert<string>(completion_popup_after_complete) << '\n';
2184 case RC_COMPLETION_MINLENGTH:
2185 if (ignore_system_lyxrc ||
2186 completion_minlength != system_lyxrc.completion_minlength) {
2187 os << "\\completion_minlength " << convert<string>(completion_minlength)
2193 case RC_NUMLASTFILES:
2194 if (ignore_system_lyxrc ||
2195 num_lastfiles != system_lyxrc.num_lastfiles) {
2196 os << "\\num_lastfiles " << num_lastfiles << '\n';
2201 case RC_CHECKLASTFILES:
2202 if (ignore_system_lyxrc ||
2203 check_lastfiles != system_lyxrc.check_lastfiles) {
2204 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2210 case RC_EXAMPLEPATH:
2211 if (ignore_system_lyxrc ||
2212 example_path != system_lyxrc.example_path) {
2213 string const path = os::external_path(example_path);
2214 os << "\\example_path \"" << path << "\"\n";
2219 case RC_TEMPLATEPATH:
2220 if (ignore_system_lyxrc ||
2221 template_path != system_lyxrc.template_path) {
2222 string const path = os::external_path(template_path);
2223 os << "\\template_path \"" << path << "\"\n";
2228 case RC_TEMPDIRPATH:
2229 if (ignore_system_lyxrc ||
2230 tempdir_path != system_lyxrc.tempdir_path) {
2231 string const path = os::external_path(tempdir_path);
2232 os << "\\tempdir_path \"" << path << "\"\n";
2237 case RC_THESAURUSDIRPATH:
2238 if (ignore_system_lyxrc ||
2239 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2240 string const path = os::external_path(thesaurusdir_path);
2241 os << "\\thesaurusdir_path \"" << path << "\"\n";
2246 case RC_HUNSPELLDIR_PATH:
2247 if (ignore_system_lyxrc ||
2248 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2249 string const path = os::external_path(hunspelldir_path);
2250 os << "\\hunspelldir_path \"" << path << "\"\n";
2255 case RC_PLAINTEXT_LINELEN:
2256 if (ignore_system_lyxrc ||
2257 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2258 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2263 case RC_MAKE_BACKUP:
2264 if (ignore_system_lyxrc ||
2265 make_backup != system_lyxrc.make_backup) {
2266 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2271 case RC_SAVE_COMPRESSED:
2272 if (ignore_system_lyxrc ||
2273 save_compressed != system_lyxrc.save_compressed) {
2274 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2279 case RC_SAVE_ORIGIN:
2280 if (ignore_system_lyxrc ||
2281 save_origin != system_lyxrc.save_origin) {
2282 os << "\\save_origin " << convert<string>(save_origin) << '\n';
2287 case RC_BACKUPDIR_PATH:
2288 if (ignore_system_lyxrc ||
2289 backupdir_path != system_lyxrc.backupdir_path) {
2290 string const path = os::external_path(backupdir_path);
2291 os << "\\backupdir_path \"" << path << "\"\n";
2297 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2301 << "# SPELLCHECKER SECTION ##############################\n"
2305 case RC_ACCEPT_COMPOUND:
2306 if (ignore_system_lyxrc ||
2307 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2308 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2315 if (ignore_system_lyxrc ||
2316 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2317 os << "\\alternate_language \"" << spellchecker_alt_lang
2324 if (ignore_system_lyxrc ||
2325 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2326 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2331 case RC_USE_NATIVE_FILEDIALOG:
2332 if (ignore_system_lyxrc ||
2333 use_native_filedialog != system_lyxrc.use_native_filedialog) {
2334 os << "\\use_native_filedialog "
2335 << convert<string>(use_native_filedialog)
2341 case RC_USE_SYSTEM_COLORS:
2342 if (ignore_system_lyxrc ||
2343 use_system_colors != system_lyxrc.use_system_colors) {
2344 os << "\\use_system_colors "
2345 << convert<string>(use_system_colors)
2351 case RC_USE_TOOLTIP:
2352 if (ignore_system_lyxrc ||
2353 use_tooltip != system_lyxrc.use_tooltip) {
2354 os << "\\use_tooltip "
2355 << convert<string>(use_tooltip)
2363 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2367 case RC_DEFAULT_DECIMAL_SEP:
2368 if (ignore_system_lyxrc ||
2369 default_decimal_sep != system_lyxrc.default_decimal_sep) {
2370 os << "\\default_decimal_point \"" << default_decimal_sep << "\"" << '\n';
2375 case RC_DEFAULT_LENGTH_UNIT:
2376 if (ignore_system_lyxrc ||
2377 default_length_unit != system_lyxrc.default_length_unit) {
2378 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2383 case RC_SPELLCHECKER:
2384 if (ignore_system_lyxrc ||
2385 spellchecker != system_lyxrc.spellchecker) {
2386 os << "\\spellchecker " << spellchecker << '\n';
2391 case RC_SPELLCHECK_CONTINUOUSLY:
2392 if (ignore_system_lyxrc ||
2393 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2394 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2400 case RC_SPELLCHECK_NOTES:
2401 if (ignore_system_lyxrc ||
2402 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2403 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2409 case RC_VISUAL_CURSOR:
2410 if (ignore_system_lyxrc ||
2411 visual_cursor != system_lyxrc.visual_cursor) {
2412 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2417 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2418 if (ignore_system_lyxrc ||
2419 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2420 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2421 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2426 case RC_LANGUAGE_CUSTOM_PACKAGE:
2427 if (ignore_system_lyxrc ||
2428 language_custom_package != system_lyxrc.language_custom_package) {
2429 os << "\\language_custom_package \"" << language_custom_package
2435 case RC_LANGUAGE_GLOBAL_OPTIONS:
2436 if (ignore_system_lyxrc ||
2437 language_global_options
2438 != system_lyxrc.language_global_options) {
2439 os << "\\language_global_options \""
2440 << convert<string>(language_global_options)
2446 case RC_LANGUAGE_PACKAGE_SELECTION:
2447 if (ignore_system_lyxrc ||
2448 language_package_selection != system_lyxrc.language_package_selection) {
2449 os << "\\language_package_selection ";
2450 switch (language_package_selection) {
2468 case RC_LANGUAGE_COMMAND_BEGIN:
2469 if (ignore_system_lyxrc ||
2470 language_command_begin
2471 != system_lyxrc.language_command_begin) {
2472 os << "\\language_command_begin \""
2473 << language_command_begin
2479 case RC_LANGUAGE_COMMAND_END:
2480 if (ignore_system_lyxrc ||
2481 language_command_end
2482 != system_lyxrc.language_command_end) {
2483 os << "\\language_command_end \"" << language_command_end
2489 case RC_LANGUAGE_COMMAND_LOCAL:
2490 if (ignore_system_lyxrc ||
2491 language_command_local
2492 != system_lyxrc.language_command_local) {
2493 os << "\\language_command_local \""
2494 << language_command_local
2500 case RC_LANGUAGE_AUTO_BEGIN:
2501 if (ignore_system_lyxrc ||
2502 language_auto_begin != system_lyxrc.language_auto_begin) {
2503 os << "\\language_auto_begin "
2504 << convert<string>(language_auto_begin) << '\n';
2509 case RC_LANGUAGE_AUTO_END:
2510 if (ignore_system_lyxrc ||
2511 language_auto_end != system_lyxrc.language_auto_end) {
2512 os << "\\language_auto_end "
2513 << convert<string>(language_auto_end) << '\n';
2518 case RC_MARK_FOREIGN_LANGUAGE:
2519 if (ignore_system_lyxrc ||
2520 mark_foreign_language
2521 != system_lyxrc.mark_foreign_language) {
2522 os << "\\mark_foreign_language " <<
2523 convert<string>(mark_foreign_language) << '\n';
2526 case RC_RESPECT_OS_KBD_LANGUAGE:
2527 if (ignore_system_lyxrc ||
2528 respect_os_kbd_language
2529 != system_lyxrc.respect_os_kbd_language) {
2530 os << "\\respect_os_kbd_language " <<
2531 convert<string>(respect_os_kbd_language) << '\n';
2538 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2542 case RC_AUTO_NUMBER:
2543 if (ignore_system_lyxrc ||
2544 auto_number != system_lyxrc.auto_number) {
2545 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2550 case RC_GUI_LANGUAGE:
2551 if (ignore_system_lyxrc ||
2552 gui_language != system_lyxrc.gui_language) {
2553 os << "\\gui_language " << gui_language << '\n';
2558 case RC_EXPORT_OVERWRITE:
2559 if (ignore_system_lyxrc ||
2560 export_overwrite != system_lyxrc.export_overwrite) {
2562 switch (export_overwrite) {
2573 os << "\\export_overwrite " << status << '\n';
2578 case RC_SCROLL_WHEEL_ZOOM:
2579 if (ignore_system_lyxrc ||
2580 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2582 switch (scroll_wheel_zoom) {
2583 case SCROLL_WHEEL_ZOOM_OFF:
2586 case SCROLL_WHEEL_ZOOM_CTRL:
2589 case SCROLL_WHEEL_ZOOM_SHIFT:
2592 case SCROLL_WHEEL_ZOOM_ALT:
2596 os << "\\scroll_wheel_zoom " << status << '\n';
2602 << "# FORMATS SECTION ##########################\n"
2607 // New/modified formats
2608 for (Formats::const_iterator cit = theFormats().begin();
2609 cit != theFormats().end(); ++cit) {
2610 Format const * format =
2611 theSystemFormats().getFormat(cit->name());
2613 format->extensions() != cit->extensions() ||
2614 format->prettyname() != cit->prettyname() ||
2615 format->shortcut() != cit->shortcut() ||
2616 format->viewer() != cit->viewer() ||
2617 format->editor() != cit->editor() ||
2618 format->documentFormat() != cit->documentFormat() ||
2619 format->vectorFormat() != cit->vectorFormat() ||
2620 format->inExportMenu() != cit->inExportMenu() ||
2621 format->noMenu() != cit->noMenu() ||
2622 format->mime() != cit->mime()) {
2623 os << "\\format \"" << cit->name() << "\" \""
2624 << cit->extensions() << "\" \""
2625 << to_utf8(cit->prettyname()) << "\" \""
2626 << cit->shortcut() << "\" \""
2627 << escapeCommand(cit->viewer()) << "\" \""
2628 << escapeCommand(cit->editor()) << "\" \"";
2629 vector<string> flags;
2630 if (cit->documentFormat())
2631 flags.push_back("document");
2632 if (cit->vectorFormat())
2633 flags.push_back("vector");
2634 if (cit->zippedNative())
2635 flags.push_back("zipped=native");
2636 if (cit->inExportMenu())
2637 flags.push_back("menu=export");
2639 os << getStringFromVector(flags);
2640 os << "\" \"" << cit->mime() << "\"\n";
2644 // Look for deleted formats
2645 for (Formats::const_iterator cit = theSystemFormats().begin();
2646 cit != theSystemFormats().end(); ++cit)
2647 if (!theFormats().getFormat(cit->name()))
2648 os << "\\format \"" << cit->name()
2649 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2653 case RC_VIEWER_ALTERNATIVES: {
2654 Alternatives::const_iterator it = viewer_alternatives.begin();
2655 Alternatives::const_iterator const en = viewer_alternatives.end();
2656 Alternatives::const_iterator const sysend =
2657 system_lyxrc.viewer_alternatives.end();
2658 for (; it != en; ++it) {
2659 string const & fmt = it->first;
2660 CommandSet const & cmd = it->second;
2661 CommandSet::const_iterator sit = cmd.begin();
2662 CommandSet::const_iterator const sen = cmd.end();
2663 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2664 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2665 system_lyxrc.viewer_alternatives.find(fmt);
2666 for (; sit != sen; ++sit) {
2667 string const & cmd = *sit;
2668 if (ignore_system_lyxrc
2669 || sysfmt == sysend // format not found
2670 || sysfmt->second.count(cmd) == 0 // this command not found
2672 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2679 case RC_EDITOR_ALTERNATIVES: {
2680 Alternatives::const_iterator it = editor_alternatives.begin();
2681 Alternatives::const_iterator const en = editor_alternatives.end();
2682 Alternatives::const_iterator const sysend =
2683 system_lyxrc.editor_alternatives.end();
2684 for (; it != en; ++it) {
2685 string const & fmt = it->first;
2686 CommandSet const & cmd = it->second;
2687 CommandSet::const_iterator sit = cmd.begin();
2688 CommandSet::const_iterator const sen = cmd.end();
2689 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2690 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2691 system_lyxrc.editor_alternatives.find(fmt);
2692 for (; sit != sen; ++sit) {
2693 string const & cmd = *sit;
2694 if (ignore_system_lyxrc
2695 || sysfmt == sysend // format not found
2696 || sysfmt->second.count(cmd) == 0 // this command not found
2698 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2705 case RC_DEFAULT_OTF_VIEW_FORMAT:
2706 if ((ignore_system_lyxrc ||
2707 default_otf_view_format != system_lyxrc.default_otf_view_format)
2708 && !default_otf_view_format.empty()) {
2709 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2714 case RC_DEFAULT_PLATEX_VIEW_FORMAT:
2715 if ((ignore_system_lyxrc ||
2716 default_platex_view_format != system_lyxrc.default_platex_view_format)
2717 && !default_platex_view_format.empty()) {
2718 os << "\\default_platex_view_format " << default_platex_view_format << '\n';
2723 case RC_DEFAULT_VIEW_FORMAT:
2724 if (ignore_system_lyxrc ||
2725 default_view_format != system_lyxrc.default_view_format) {
2726 os << "\\default_view_format " << default_view_format << '\n';
2737 << "# CONVERTERS SECTION ##########################\n"
2742 // Look for new converters
2743 for (Converters::const_iterator cit = theConverters().begin();
2744 cit != theConverters().end(); ++cit) {
2745 Converter const * converter =
2746 theSystemConverters().getConverter(cit->from(),
2749 converter->command() != cit->command() ||
2750 converter->flags() != cit->flags())
2751 os << "\\converter \"" << cit->from() << "\" \""
2752 << cit->to() << "\" \""
2753 << escapeCommand(cit->command()) << "\" \""
2754 << cit->flags() << "\"\n";
2757 // New/modifed converters
2758 for (Converters::const_iterator cit = theSystemConverters().begin();
2759 cit != theSystemConverters().end(); ++cit)
2760 if (!theConverters().getConverter(cit->from(), cit->to()))
2761 os << "\\converter \"" << cit->from()
2762 << "\" \"" << cit->to() << "\" \"\" \"\"\n";
2769 << "# COPIERS SECTION ##########################\n"
2772 // Look for new movers
2773 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2774 Movers::const_iterator const sysend = theSystemMovers().end();
2775 Movers::const_iterator it = theMovers().begin();
2776 Movers::const_iterator end = theMovers().end();
2778 for (; it != end; ++it) {
2779 Movers::const_iterator const sysit =
2780 find_if(sysbegin, sysend, SameMover(*it));
2781 if (sysit == sysend) {
2782 string const & fmt = it->first;
2783 string const & command =
2784 it->second.command();
2786 os << "\\copier " << fmt
2787 << " \"" << escapeCommand(command) << "\"\n";
2793 // We don't actually delete SpecialisedMover(s) from the
2794 // map, just clear their 'command', so there's no need
2795 // to test for anything else.
2802 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2804 // Why the switch you might ask. It is a trick to ensure that all
2805 // the elements in the LyXRCTags enum is handled. As you can see
2806 // there are no breaks at all. So it is just a huge fall-through.
2807 // The nice thing is that we will get a warning from the compiler
2808 // if we forget an element.
2809 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2811 case LyXRC::RC_LAST:
2812 case LyXRC::RC_ACCEPT_COMPOUND:
2813 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2814 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2816 case LyXRC::RC_ALT_LANG:
2817 case LyXRC::RC_PLAINTEXT_LINELEN:
2818 case LyXRC::RC_AUTOCORRECTION_MATH:
2819 case LyXRC::RC_AUTOREGIONDELETE:
2820 case LyXRC::RC_AUTORESET_OPTIONS:
2821 case LyXRC::RC_AUTOSAVE:
2822 case LyXRC::RC_AUTO_NUMBER:
2823 case LyXRC::RC_BACKUPDIR_PATH:
2824 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2825 case LyXRC::RC_BIBTEX_COMMAND:
2826 case LyXRC::RC_BINDFILE:
2827 case LyXRC::RC_CITATION_SEARCH:
2828 case LyXRC::RC_CITATION_SEARCH_PATTERN:
2829 case LyXRC::RC_CITATION_SEARCH_VIEW:
2830 case LyXRC::RC_CHECKLASTFILES:
2831 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2832 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2833 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2834 case LyXRC::RC_COMPLETION_INLINE_MATH:
2835 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2836 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2837 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2838 case LyXRC::RC_COMPLETION_POPUP_MATH:
2839 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2840 case LyXRC::RC_COMPLETION_MINLENGTH:
2841 case LyXRC::RC_USELASTFILEPOS:
2842 case LyXRC::RC_LOADSESSION:
2843 case LyXRC::RC_CHKTEX_COMMAND:
2844 case LyXRC::RC_CONVERTER:
2845 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2846 case LyXRC::RC_COPIER:
2847 case LyXRC::RC_CT_ADDITIONS_UNDERLINED:
2848 case LyXRC::RC_CT_MARKUP_COPIED:
2849 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2850 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2851 case LyXRC::RC_GUI_LANGUAGE:
2852 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2853 case LyXRC::RC_DEFAULT_PLATEX_VIEW_FORMAT:
2854 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2855 case LyXRC::RC_DEFFILE:
2856 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2857 case LyXRC::RC_DISPLAY_GRAPHICS:
2858 case LyXRC::RC_DOCUMENTPATH:
2859 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2860 FileName path(lyxrc_new.document_path);
2861 if (path.exists() && path.isDirectory())
2862 package().document_dir() = FileName(lyxrc.document_path);
2865 case LyXRC::RC_EDITOR_ALTERNATIVES:
2866 case LyXRC::RC_ESC_CHARS:
2867 case LyXRC::RC_EXAMPLEPATH:
2868 case LyXRC::RC_FILEFORMAT:
2869 case LyXRC::RC_GROUP_LAYOUTS:
2870 case LyXRC::RC_HUNSPELLDIR_PATH:
2871 case LyXRC::RC_ICON_SET:
2872 case LyXRC::RC_INDEX_ALTERNATIVES:
2873 case LyXRC::RC_INDEX_COMMAND:
2874 case LyXRC::RC_JBIBTEX_COMMAND:
2875 case LyXRC::RC_JBIBTEX_ALTERNATIVES:
2876 case LyXRC::RC_JINDEX_COMMAND:
2877 case LyXRC::RC_NOMENCL_COMMAND:
2878 case LyXRC::RC_PYGMENTIZE_COMMAND:
2879 case LyXRC::RC_INPUT:
2880 case LyXRC::RC_KBMAP:
2881 case LyXRC::RC_KBMAP_PRIMARY:
2882 case LyXRC::RC_KBMAP_SECONDARY:
2883 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2884 case LyXRC::RC_LANGUAGE_AUTO_END:
2885 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2886 case LyXRC::RC_LANGUAGE_COMMAND_END:
2887 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2888 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2889 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2890 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2891 case LyXRC::RC_LYXRCFORMAT:
2892 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2893 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
2894 case LyXRC::RC_MACRO_EDIT_STYLE:
2895 case LyXRC::RC_MAKE_BACKUP:
2896 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2897 case LyXRC::RC_RESPECT_OS_KBD_LANGUAGE:
2898 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2899 case LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE:
2900 case LyXRC::RC_NUMLASTFILES:
2901 case LyXRC::RC_PARAGRAPH_MARKERS:
2902 case LyXRC::RC_PATH_PREFIX:
2903 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2904 prependEnvPath("PATH", replaceEnvironmentPath(lyxrc_new.path_prefix));
2905 // Resets python path
2906 support::os::python(true);
2909 case LyXRC::RC_PREVIEW:
2910 if (lyxrc_orig.preview != lyxrc_new.preview) {
2911 // Update all previews of all documents.
2912 /* FIXME: this can be very expensive. It would be cheaper
2913 * to kill all existing previews and update visible
2915 theBufferList().updatePreviews();
2918 case LyXRC::RC_PREVIEW_HASHED_LABELS:
2919 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
2920 case LyXRC::RC_PRINTLANDSCAPEFLAG:
2921 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
2922 case LyXRC::RC_PRINTPAPERFLAG:
2923 case LyXRC::RC_SAVE_COMPRESSED:
2924 case LyXRC::RC_SAVE_ORIGIN:
2925 case LyXRC::RC_SCREEN_DPI:
2927 case LyXRC::RC_SCREEN_FONT_ROMAN:
2928 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
2929 case LyXRC::RC_SCREEN_FONT_SANS:
2930 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
2931 case LyXRC::RC_SCREEN_FONT_SCALABLE:
2932 case LyXRC::RC_SCREEN_FONT_SIZES:
2933 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
2934 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
2935 case LyXRC::RC_SCREEN_ZOOM:
2936 if (lyxrc_orig.roman_font_name != lyxrc_new.roman_font_name
2937 || lyxrc_orig.sans_font_name != lyxrc_new.sans_font_name
2938 || lyxrc_orig.typewriter_font_name != lyxrc_new.typewriter_font_name
2939 || lyxrc_orig.roman_font_foundry != lyxrc_new.roman_font_foundry
2940 || lyxrc_orig.sans_font_foundry != lyxrc_new.sans_font_foundry
2941 || lyxrc_orig.use_scalable_fonts != lyxrc_new.use_scalable_fonts
2942 || lyxrc_orig.font_sizes != lyxrc_new.font_sizes
2943 || lyxrc_orig.typewriter_font_foundry != lyxrc_new.typewriter_font_foundry
2944 || lyxrc_orig.defaultZoom != lyxrc_new.defaultZoom) {
2945 dispatch(FuncRequest(LFUN_SCREEN_FONT_UPDATE));
2948 case LyXRC::RC_GEOMETRY_SESSION:
2949 case LyXRC::RC_SERVERPIPE:
2950 case LyXRC::RC_SET_COLOR:
2951 case LyXRC::RC_SHOW_BANNER:
2952 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
2953 case LyXRC::RC_SPELLCHECKER:
2954 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
2957 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
2958 case LyXRC::RC_SPELLCHECK_NOTES:
2959 case LyXRC::RC_SPLITINDEX_COMMAND:
2960 case LyXRC::RC_TEMPDIRPATH:
2961 case LyXRC::RC_TEMPLATEPATH:
2962 case LyXRC::RC_TEX_ALLOWS_SPACES:
2963 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
2964 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
2965 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
2968 case LyXRC::RC_TEXINPUTS_PREFIX:
2969 case LyXRC::RC_THESAURUSDIRPATH:
2970 case LyXRC::RC_UIFILE:
2971 case LyXRC::RC_USER_EMAIL:
2972 case LyXRC::RC_USER_INITIALS:
2973 case LyXRC::RC_USER_NAME:
2974 case LyXRC::RC_USE_CONVERTER_CACHE:
2975 case LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
2976 case LyXRC::RC_USE_CONVERTER_NEEDAUTH:
2977 case LyXRC::RC_USE_NATIVE_FILEDIALOG:
2978 case LyXRC::RC_USE_SYSTEM_COLORS:
2979 case LyXRC::RC_USE_TOOLTIP:
2980 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
2981 case LyXRC::RC_VIEWDVI_PAPEROPTION:
2982 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
2983 case LyXRC::RC_SINGLE_INSTANCE:
2984 case LyXRC::RC_SORT_LAYOUTS:
2985 case LyXRC::RC_FULL_SCREEN_LIMIT:
2986 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
2987 case LyXRC::RC_FULL_SCREEN_MENUBAR:
2988 case LyXRC::RC_FULL_SCREEN_STATUSBAR:
2989 case LyXRC::RC_FULL_SCREEN_TABBAR:
2990 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
2991 case LyXRC::RC_FULL_SCREEN_WIDTH:
2992 case LyXRC::RC_VISUAL_CURSOR:
2993 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2994 case LyXRC::RC_VIEWER:
2995 case LyXRC::RC_VIEWER_ALTERNATIVES:
2996 case LyXRC::RC_FORWARD_SEARCH_DVI:
2997 case LyXRC::RC_FORWARD_SEARCH_PDF:
2998 case LyXRC::RC_EXPORT_OVERWRITE:
2999 case LyXRC::RC_DEFAULT_DECIMAL_SEP:
3000 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
3001 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3002 case LyXRC::RC_CURSOR_WIDTH:
3008 set<string> LyXRC::getRCs()
3011 for (int i = 0; i != lyxrcCount; ++i)
3012 res.insert(ltrim(lyxrcTags[i].tag, "\\"));
3018 string const LyXRC::getDescription(LyXRCTags tag)
3023 case RC_ACCEPT_COMPOUND:
3024 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3028 str = _("Specify an alternate language. The default is to use the language of the document.");
3031 case RC_PLAINTEXT_LINELEN:
3032 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.");
3035 case RC_AUTOREGIONDELETE:
3036 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3039 case RC_AUTORESET_OPTIONS:
3040 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3044 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3047 case RC_AUTO_NUMBER:
3050 case RC_BACKUPDIR_PATH:
3051 str = _("The path for storing backup files. If it is an empty string, LyX will store the backup file in the same directory as the original file.");
3054 case RC_BIBTEX_COMMAND:
3055 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3058 case RC_JBIBTEX_COMMAND:
3059 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3063 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3066 case RC_CHECKLASTFILES:
3067 str = _("Select to check whether the lastfiles still exist.");
3070 case RC_CHKTEX_COMMAND:
3071 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3077 case RC_CONVERTER_NEEDAUTH_FORBIDDEN:
3078 str = _("Forbid use of external converters with 'needauth' option to prevent undesired effects.");
3081 case RC_CONVERTER_NEEDAUTH:
3082 str = _("Ask user before calling external converters with 'needauth' option to prevent undesired effects.");
3088 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3089 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.");
3092 case RC_CURSOR_WIDTH:
3093 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3096 case RC_SCROLL_BELOW_DOCUMENT:
3097 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");
3100 case RC_MAC_DONTSWAP_CTRL_META:
3101 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3104 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3105 str = _("Use the Mac OS X conventions for cursor movement");
3108 case RC_SHOW_MACRO_LABEL:
3109 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3113 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3116 case RC_DEFAULT_OTF_VIEW_FORMAT:
3117 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3120 case RC_DEFAULT_VIEW_FORMAT:
3121 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3124 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3125 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3128 case RC_DISPLAY_GRAPHICS:
3129 str = _("Select how LyX will display any graphics.");
3132 case RC_DOCUMENTPATH:
3133 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3137 str = _("Specify additional chars that can be part of a word.");
3140 case RC_EXAMPLEPATH:
3141 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3147 case RC_INDEX_COMMAND:
3148 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\".");
3151 case RC_JINDEX_COMMAND:
3152 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3155 case RC_NOMENCL_COMMAND:
3156 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3159 case RC_PYGMENTIZE_COMMAND:
3160 str = _("The command to run the python pygments syntax highlighter.");
3167 case RC_KBMAP_PRIMARY:
3168 case RC_KBMAP_SECONDARY:
3169 str = _("Use this to set the correct mapping file for your keyboard. You'll need this if you for instance want to type German documents on an American keyboard.");
3172 case RC_LANGUAGE_AUTO_BEGIN:
3173 str = _("Select if a language switching command is needed at the beginning of the document.");
3176 case RC_LANGUAGE_AUTO_END:
3177 str = _("Select if a language switching command is needed at the end of the document.");
3180 case RC_LANGUAGE_COMMAND_BEGIN:
3181 str = _("The LaTeX command for changing from the language of the document to another language. E.g. \\selectlanguage{$$lang} where $$lang is substituted by the name of the second language.");
3184 case RC_LANGUAGE_COMMAND_END:
3185 str = _("The LaTeX command for changing back to the language of the document.");
3188 case RC_LANGUAGE_COMMAND_LOCAL:
3189 str = _("The LaTeX command for local changing of the language.");
3192 case RC_LANGUAGE_GLOBAL_OPTIONS:
3193 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3196 case RC_LANGUAGE_CUSTOM_PACKAGE:
3197 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3200 case RC_LANGUAGE_PACKAGE_SELECTION:
3201 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3204 case RC_USELASTFILEPOS:
3205 str = _("De-select if you do not want LyX to scroll to saved position.");
3208 case RC_LOADSESSION:
3209 str = _("De-select to prevent loading files opened from the last LyX session.");
3212 case RC_MAKE_BACKUP:
3213 str = _("De-select if you don't want LyX to create backup files.");
3216 case RC_MARK_FOREIGN_LANGUAGE:
3217 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3220 case RC_RESPECT_OS_KBD_LANGUAGE:
3221 str = _("Select to use the current keyboard language, as set from the operating system, as default input language.");
3224 case RC_MOUSE_WHEEL_SPEED:
3225 str = _("The scrolling speed of the mouse wheel.");
3228 case RC_COMPLETION_POPUP_DELAY:
3229 str = _("The completion popup delay.");
3232 case RC_COMPLETION_POPUP_MATH:
3233 str = _("Select to display the completion popup in math mode.");
3236 case RC_COMPLETION_POPUP_TEXT:
3237 str = _("Select to display the completion popup in text mode.");
3240 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3241 str = _("Show the completion popup without delay after non-unique completion attempt.");
3244 case RC_COMPLETION_POPUP_TEXT:
3245 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3248 case RC_COMPLETION_POPUP_DELAY:
3249 str = _("The inline completion delay.");
3252 case RC_COMPLETION_INLINE_MATH:
3253 str = _("Select to display the inline completion in math mode.");
3256 case RC_COMPLETION_INLINE_TEXT:
3257 str = _("Select to display the inline completion in text mode.");
3260 case RC_COMPLETION_INLINE_DOTS:
3261 str = _("Use \"...\" to shorten long completions.");
3264 case RC_AUTOCORRECTION_MATH:
3265 str = _("Allow TeXMacs shorthand, like => converting to \\Rightarrow.");
3268 case RC_NUMLASTFILES:
3269 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3273 case RC_PATH_PREFIX:
3274 str = _("Specify those directories which should be "
3275 "prepended to the PATH environment variable.\n"
3276 "Use the OS native format.");
3280 str = _("Shows a typeset preview of things such as math");
3283 case RC_PREVIEW_HASHED_LABELS:
3284 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3287 case RC_PREVIEW_SCALE_FACTOR:
3288 str = _("Scale the preview size to suit.");
3291 case RC_PRINTLANDSCAPEFLAG:
3292 str = _("The option to print out in landscape.");
3295 case RC_PRINTPAPERDIMENSIONFLAG:
3296 str = _("Option to specify the dimensions of the print paper.");
3299 case RC_PRINTPAPERFLAG:
3300 str = _("The option to specify paper type.");
3303 case RC_VISUAL_CURSOR:
3304 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3307 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3308 str = _("Specify whether, closing the last view of an open document, LyX should close the document (yes), hide it (no), or ask the user (ask).");
3312 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3315 case RC_SCREEN_FONT_ROMAN:
3316 case RC_SCREEN_FONT_SANS:
3317 case RC_SCREEN_FONT_TYPEWRITER:
3318 str = _("The screen fonts used to display the text while editing.");
3321 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3322 case RC_SCREEN_FONT_SANS_FOUNDRY:
3323 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3326 case RC_SCREEN_FONT_SCALABLE:
3327 str = _("Allow bitmap fonts to be resized. If you are using a bitmap font, selecting this option may make some fonts look blocky in LyX. Deselecting this option makes LyX use the nearest bitmap font size available, instead of scaling.");
3330 case RC_SCREEN_FONT_SIZES:
3331 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3334 case RC_SCREEN_ZOOM:
3335 //xgettext:no-c-format
3336 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3339 case RC_GEOMETRY_SESSION:
3340 str = _("Allow session manager to save and restore windows geometry.");
3344 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3350 case RC_SHOW_BANNER:
3351 str = _("De-select if you don't want the startup banner.");
3354 case RC_TEMPDIRPATH:
3355 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3358 case RC_THESAURUSDIRPATH:
3359 str = _("This is the place where the files of the thesaurus library reside.");
3362 case RC_TEMPLATEPATH:
3363 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3366 case RC_TEX_ALLOWS_SPACES:
3369 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3372 case RC_TEXINPUTS_PREFIX:
3373 str = _("Specify those directories which should be "
3374 "prepended to the TEXINPUTS environment variable.\n"
3375 "A '.' represents the current document directory. "
3376 "Use the OS native format.");
3380 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3389 case RC_USE_USE_SYSTEM_COLORS:
3390 str = _("Enable use the system colors for some things like main window background and selection.");
3393 case RC_USE_TOOLTIP:
3394 str = _("Enable the automatic appearance of tool tips in the work area.");
3397 case RC_VIEWDVI_PAPEROPTION:
3398 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3413 // The global instance
3416 // The global copy of the system lyxrc entries (everything except preferences)