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.
22 #include "Converter.h"
23 #include "FontEnums.h"
29 #include "SpellChecker.h"
32 #include "graphics/GraphicsTypes.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/gettext.h"
40 #include "support/lstrings.h"
41 #include "support/os.h"
42 #include "support/Package.h"
43 #include "support/TempFile.h"
44 #include "support/userinfo.h"
51 using namespace lyx::support;
55 namespace os = support::os;
59 // The format should also be updated in configure.py, and conversion code
60 // should be added to prefs2prefs_prefs.py.
61 static unsigned int const LYXRC_FILEFORMAT = 17; // lasgouttes: remove \\rtl
63 // when adding something to this array keep it sorted!
64 LexerKeyword lyxrcTags[] = {
65 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
66 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
67 { "\\alternate_language", LyXRC::RC_ALT_LANG },
68 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
69 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
70 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
71 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
72 { "\\autosave", LyXRC::RC_AUTOSAVE },
73 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
74 { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
75 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
76 { "\\bind_file", LyXRC::RC_BINDFILE },
77 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
78 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
79 { "\\close_buffer_with_last_view", LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW },
80 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
81 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
82 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
83 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
84 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
85 { "\\completion_minlength", LyXRC::RC_COMPLETION_MINLENGTH },
86 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
87 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
88 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
89 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
90 { "\\converter", LyXRC::RC_CONVERTER },
91 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
92 { "\\copier", LyXRC::RC_COPIER },
93 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
94 { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
95 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
96 { "\\def_file", LyXRC::RC_DEFFILE },
97 { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
98 { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT },
99 { "\\default_otf_view_format", LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT },
100 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
101 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
102 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
103 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
104 { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
105 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
106 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
107 { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE },
108 { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
109 { "\\format", LyXRC::RC_FILEFORMAT },
110 { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI },
111 { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF },
112 { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT },
113 { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR },
114 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
115 { "\\fullscreen_statusbar", LyXRC::RC_FULL_SCREEN_STATUSBAR },
116 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
117 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
118 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
119 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
120 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
121 { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH },
122 { "\\icon_set", LyXRC::RC_ICON_SET },
123 { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
124 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
125 { "\\input", LyXRC::RC_INPUT },
126 { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
127 { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
128 { "\\kbmap", LyXRC::RC_KBMAP },
129 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
130 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
131 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
132 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
133 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
134 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
135 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
136 { "\\language_custom_package", LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE },
137 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
138 { "\\language_package_selection", LyXRC::RC_LANGUAGE_PACKAGE_SELECTION },
139 { "\\load_session", LyXRC::RC_LOADSESSION },
140 { "\\mac_dontswap_ctrl_meta", LyXRC::RC_MAC_DONTSWAP_CTRL_META },
141 { "\\mac_like_cursor_movement", LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT },
142 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
143 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
144 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
145 { "\\mouse_middlebutton_paste", LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE },
146 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
147 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
148 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
149 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
150 { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS },
151 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
152 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
153 { "\\preview", LyXRC::RC_PREVIEW },
154 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
155 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
156 { "\\print_adapt_output", LyXRC::RC_PRINT_ADAPTOUTPUT },
157 { "\\print_collcopies_flag", LyXRC::RC_PRINTCOLLCOPIESFLAG },
158 { "\\print_command", LyXRC::RC_PRINT_COMMAND },
159 { "\\print_copies_flag", LyXRC::RC_PRINTCOPIESFLAG },
160 { "\\print_evenpage_flag", LyXRC::RC_PRINTEVENPAGEFLAG },
161 { "\\print_extra_options", LyXRC::RC_PRINTEXSTRAOPTIONS },
162 { "\\print_file_extension", LyXRC::RC_PRINTFILEEXTENSION },
163 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
164 { "\\print_oddpage_flag", LyXRC::RC_PRINTODDPAGEFLAG },
165 { "\\print_pagerange_flag", LyXRC::RC_PRINTPAGERANGEFLAG },
166 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
167 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
168 { "\\print_reverse_flag", LyXRC::RC_PRINTREVERSEFLAG },
169 { "\\print_spool_command", LyXRC::RC_PRINTSPOOL_COMMAND },
170 { "\\print_spool_printerprefix", LyXRC::RC_PRINTSPOOL_PRINTERPREFIX },
171 { "\\print_to_file", LyXRC::RC_PRINTTOFILE },
172 { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER },
173 { "\\printer", LyXRC::RC_PRINTER },
174 { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
175 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
176 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
177 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
178 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
179 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
180 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
181 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
182 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
183 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
184 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
185 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
186 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
187 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
188 { "\\set_color", LyXRC::RC_SET_COLOR },
189 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
190 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
191 { "\\single_instance", LyXRC::RC_SINGLE_INSTANCE },
192 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
193 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
194 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
195 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
196 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
197 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
198 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
199 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
200 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
201 { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
202 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
203 { "\\ui_file", LyXRC::RC_UIFILE },
204 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
205 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
206 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
207 { "\\use_qimage", LyXRC::RC_USE_QIMAGE },
208 // compatibility with versions older than 1.4.0 only
209 { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
210 { "\\use_system_theme_icons", LyXRC::RC_USE_SYSTEM_THEME_ICONS },
211 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
212 { "\\user_email", LyXRC::RC_USER_EMAIL },
213 { "\\user_name", LyXRC::RC_USER_NAME },
214 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
215 // compatibility with versions older than 1.4.0 only
216 { "\\viewer", LyXRC::RC_VIEWER},
217 { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
218 { "\\visual_cursor", LyXRC::RC_VISUAL_CURSOR },
219 { "format", LyXRC::RC_LYXRCFORMAT }
222 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
233 void LyXRC::setDefaults()
236 use_system_theme_icons = false;
238 def_file = "default";
240 // The current document directory
241 texinputs_prefix = ".";
242 // Get printer from the environment. If fail, use default "",
243 // assuming that everything is set up correctly.
244 printer = getEnv("PRINTER");
245 print_adapt_output = false;
246 print_command = "dvips";
247 print_evenpage_flag = "-B";
248 print_oddpage_flag = "-A";
249 print_pagerange_flag = "-pp";
250 print_copies_flag = "-c";
251 print_collcopies_flag = "-C";
252 print_reverse_flag = "-r";
253 print_landscape_flag = "-t landscape";
254 print_to_printer = "-P";
255 print_to_file = "-o ";
256 print_file_extension = ".ps";
257 print_paper_flag = "-t";
258 print_paper_dimension_flag = "-T";
259 document_path.erase();
260 view_dvi_paper_option.erase();
261 default_view_format = "pdf2";
262 default_otf_view_format = "pdf4";
263 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
264 bibtex_command = "bibtex";
266 index_command = "makeindex -c -q";
267 nomencl_command = "makeindex -s nomencl.ist";
269 // Because a screen is typically wider than a piece of paper:
271 allow_geometry_session = true;
272 // Default LaTeX font size:
273 font_sizes[FONT_SIZE_TINY] = "5.0";
274 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
275 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
276 font_sizes[FONT_SIZE_SMALL] = "9.0";
277 font_sizes[FONT_SIZE_NORMAL] = "10.0";
278 font_sizes[FONT_SIZE_LARGE] = "12.0";
279 font_sizes[FONT_SIZE_LARGER] = "14.4";
280 font_sizes[FONT_SIZE_LARGEST] = "17.26";
281 font_sizes[FONT_SIZE_HUGE] = "20.74";
282 font_sizes[FONT_SIZE_HUGER] = "24.88";
283 use_scalable_fonts = true;
284 roman_font_name = "";
286 typewriter_font_name = "";
288 auto_region_delete = true;
289 auto_reset_options = false;
290 plaintext_linelen = 65;
291 mouse_wheel_speed = 1.0;
292 num_lastfiles = maxlastfiles;
293 check_lastfiles = true;
294 use_lastfilepos = true;
295 load_session = false;
297 save_compressed = false;
298 backupdir_path.erase();
299 display_graphics = true;
300 // Spellchecker settings:
301 // FIXME: this check should test the target platform (darwin)
302 #if defined(USE_MACOSX_PACKAGING)
303 spellchecker = "native";
304 #elif defined(USE_ASPELL)
305 spellchecker = "aspell";
306 #elif defined(USE_HUNSPELL)
307 spellchecker = "hunspell";
309 spellchecker = "aspell";
311 spellchecker_accept_compound = false;
312 spellcheck_continuously = false;
313 completion_minlength = 6;
314 spellcheck_notes = true;
316 visual_cursor = false;
318 mark_foreign_language = true;
319 language_auto_begin = true;
320 language_auto_end = true;
321 language_global_options = true;
322 language_package_selection = LP_AUTO;
323 language_custom_package = "\\usepackage{babel}";
324 language_command_begin = "\\selectlanguage{$$lang}";
325 language_command_local = "\\foreignlanguage{$$lang}{";
326 sort_layouts = false;
327 group_layouts = true;
328 gui_language = "auto";
330 windows_style_tex_paths = false;
331 tex_allows_spaces = false;
332 date_insert_format = "%x";
333 cursor_follows_scrollbar = false;
334 scroll_below_document = false;
335 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
336 paragraph_markers = false;
337 mac_dontswap_ctrl_meta = false;
338 mac_like_cursor_movement = false;
339 macro_edit_style = MACRO_EDIT_INLINE_BOX;
340 dialogs_iconify_with_main = false;
341 preview = PREVIEW_OFF;
342 preview_hashed_labels = false;
343 preview_scale_factor = 1.0;
344 use_converter_cache = true;
345 use_system_colors = false;
347 use_pixmap_cache = false;
349 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
350 user_name = to_utf8(support::user_name());
351 user_email = to_utf8(support::user_email());
352 open_buffers_in_tabs = true;
353 single_close_tab_button = false;
354 single_instance = true;
355 forward_search_dvi = string();
356 forward_search_pdf = string();
357 export_overwrite = NO_FILES;
359 // Fullscreen settings
360 full_screen_limit = false;
361 full_screen_toolbars = true;
362 full_screen_tabbar = true;
363 full_screen_menubar = true;
364 full_screen_scrollbar = true;
365 full_screen_width = 700;
367 completion_cursor_text = true;
368 completion_popup_math = true;
369 completion_popup_text = false;
370 completion_popup_delay = 2.0;
371 completion_popup_after_complete = true;
372 autocorrection_math = false;
373 completion_inline_math = true;
374 completion_inline_text = false;
375 completion_inline_dots = -1;
376 completion_inline_delay = 0.2;
377 default_decimal_point = ".";
378 default_length_unit = Length::CM;
380 close_buffer_with_last_view = "yes";
381 mouse_middlebutton_paste = true;
387 void oldFontFormat(string & family, string & foundry)
389 if (family.empty() || family[0] != '-')
391 foundry = token(family, '-', 1);
392 family = token(family, '-', 2);
400 bool LyXRC::read(FileName const & filename, bool check_format)
402 Lexer lexrc(lyxrcTags);
403 lexrc.setFile(filename);
404 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
405 ReturnValues retval = read(lexrc, check_format);
406 if (!check_format || retval != FormatMismatch)
407 return retval == ReadOK;
409 LYXERR(Debug::FILES, "Converting LyXRC file to " << LYXRC_FILEFORMAT);
410 TempFile tmp("convert_lyxrc");
411 FileName const tempfile = tmp.name();
412 bool const success = prefs2prefs(filename, tempfile, false);
414 LYXERR0 ("Unable to convert " << filename.absFileName() <<
415 " to format " << LYXRC_FILEFORMAT);
418 // Keep this in the else branch, such that lexrc2 goes out
419 // of scope and releases the lock on tempfile before we
420 // attempt to remove it. This matters on Windows.
421 Lexer lexrc2(lyxrcTags);
422 lexrc2.setFile(tempfile);
423 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
424 retval = read(lexrc2, check_format);
426 return retval == ReadOK;
430 // don't need to worry about conversion, because this is always
431 // from an internal source
432 bool LyXRC::read(istream & is)
434 Lexer lexrc(lyxrcTags);
436 LYXERR(Debug::LYXRC, "Reading istream...");
437 return read(lexrc, false) == ReadOK;
441 LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
443 if (lyxerr.debugging(Debug::PARSER))
444 lexrc.printTable(lyxerr);
449 // format prior to 2.0 and introduction of format tag
450 unsigned int format = 0;
452 while (lexrc.isOK()) {
453 // By using two switches we take advantage of the compiler
454 // telling us if we have missed a LyXRCTags element in
455 // the second switch.
456 // Note that this also shows a problem with Lexer since it
457 // helps us avoid taking advantage of the strictness of the
460 int le = lexrc.lex();
462 case Lexer::LEX_UNDEF:
463 lexrc.printError("Unknown tag `$$Token'");
465 case Lexer::LEX_FEOF:
470 switch (static_cast<LyXRCTags>(le)) {
473 format = lexrc.getInteger();
475 case RC_INPUT: // Include file
478 libFileSearch(string(),
480 if (read(tmp, check_format)) {
482 "Error reading included file: " + tmp.absFileName());
488 bind_file = os::internal_path(lexrc.getString());
493 def_file = os::internal_path(lexrc.getString());
498 ui_file = os::internal_path(lexrc.getString());
501 case RC_AUTORESET_OPTIONS:
502 lexrc >> auto_reset_options;
505 case RC_DISPLAY_GRAPHICS:
507 display_graphics = lexrc.getString() == "true";
510 case RC_TEX_EXPECTS_WINDOWS_PATHS:
511 lexrc >> windows_style_tex_paths;
514 case RC_TEX_ALLOWS_SPACES:
515 lexrc >> tex_allows_spaces;
518 case RC_TEXINPUTS_PREFIX:
519 lexrc >> texinputs_prefix;
526 case RC_KBMAP_PRIMARY:
528 string const kmap(os::internal_path(lexrc.getString()));
529 if (!libFileSearch("kbd", kmap, "kmap").empty()
531 primary_kbmap = kmap;
533 lexrc.printError("LyX: Keymap `$$Token' not found");
538 case RC_KBMAP_SECONDARY:
540 string const kmap(os::internal_path(lexrc.getString()));
541 if (!libFileSearch("kbd", kmap, "kmap").empty()
543 secondary_kbmap = kmap;
545 lexrc.printError("LyX: Keymap `$$Token' not found");
550 case RC_FONT_ENCODING:
558 case RC_PRINT_COMMAND:
559 if (lexrc.next(true)) {
560 print_command = lexrc.getString();
564 case RC_PRINTEVENPAGEFLAG:
565 lexrc >> print_evenpage_flag;
568 case RC_PRINTODDPAGEFLAG:
569 lexrc >> print_oddpage_flag;
572 case RC_PRINTPAGERANGEFLAG:
573 lexrc >> print_pagerange_flag;
576 case RC_PRINTCOPIESFLAG:
577 lexrc >> print_copies_flag;
580 case RC_PRINTCOLLCOPIESFLAG:
581 lexrc >> print_collcopies_flag;
584 case RC_PRINTREVERSEFLAG:
585 lexrc >> print_reverse_flag;
588 case RC_PRINTLANDSCAPEFLAG:
589 lexrc >> print_landscape_flag;
592 case RC_PRINTTOPRINTER:
593 lexrc >> print_to_printer;
596 case RC_PRINT_ADAPTOUTPUT:
597 lexrc >> print_adapt_output;
602 print_to_file = os::internal_path(lexrc.getString());
606 case RC_PRINTFILEEXTENSION:
607 lexrc >> print_file_extension;
610 case RC_PRINTEXSTRAOPTIONS:
611 lexrc >> print_extra_options;
614 case RC_PRINTSPOOL_COMMAND:
615 if (lexrc.next(true)) {
616 print_spool_command = lexrc.getString();
620 case RC_PRINTSPOOL_PRINTERPREFIX:
621 lexrc >> print_spool_printerprefix;
624 case RC_PRINTPAPERDIMENSIONFLAG:
625 lexrc >> print_paper_dimension_flag;
628 case RC_PRINTPAPERFLAG:
629 lexrc >> print_paper_flag;
632 case RC_VIEWDVI_PAPEROPTION:
634 view_dvi_paper_option = lexrc.getString();
636 view_dvi_paper_option.erase();
639 case RC_CHKTEX_COMMAND:
640 if (lexrc.next(true)) {
641 chktex_command = lexrc.getString();
645 case RC_BIBTEX_ALTERNATIVES:
646 if (lexrc.next(true)) {
647 bibtex_alternatives.insert(lexrc.getString());
651 case RC_BIBTEX_COMMAND:
652 if (lexrc.next(true)) {
653 bibtex_command = lexrc.getString();
657 case RC_JBIBTEX_COMMAND:
658 if (lexrc.next(true)) {
659 jbibtex_command = lexrc.getString();
663 case RC_INDEX_ALTERNATIVES:
664 if (lexrc.next(true)) {
665 index_alternatives.insert(lexrc.getString());
669 case RC_INDEX_COMMAND:
670 if (lexrc.next(true)) {
671 index_command = lexrc.getString();
675 case RC_JINDEX_COMMAND:
676 if (lexrc.next(true)) {
677 jindex_command = lexrc.getString();
681 case RC_SPLITINDEX_COMMAND:
682 if (lexrc.next(true)) {
683 splitindex_command = lexrc.getString();
687 case RC_NOMENCL_COMMAND:
688 if (lexrc.next(true)) {
689 nomencl_command = lexrc.getString();
701 case RC_GEOMETRY_SESSION:
702 lexrc >> allow_geometry_session;
705 case RC_SCREEN_FONT_SIZES:
706 lexrc >> font_sizes[FONT_SIZE_TINY];
707 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
708 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
709 lexrc >> font_sizes[FONT_SIZE_SMALL];
710 lexrc >> font_sizes[FONT_SIZE_NORMAL];
711 lexrc >> font_sizes[FONT_SIZE_LARGE];
712 lexrc >> font_sizes[FONT_SIZE_LARGER];
713 lexrc >> font_sizes[FONT_SIZE_LARGEST];
714 lexrc >> font_sizes[FONT_SIZE_HUGE];
715 lexrc >> font_sizes[FONT_SIZE_HUGER];
718 case RC_SCREEN_FONT_SCALABLE:
719 lexrc >> use_scalable_fonts;
726 case RC_DOCUMENTPATH:
728 document_path = os::internal_path(lexrc.getString());
729 document_path = expandPath(document_path);
735 example_path = os::internal_path(lexrc.getString());
736 example_path = expandPath(example_path);
740 case RC_TEMPLATEPATH:
742 template_path = os::internal_path(lexrc.getString());
743 template_path = expandPath(template_path);
749 tempdir_path = os::internal_path(lexrc.getString());
750 tempdir_path = expandPath(tempdir_path);
754 case RC_THESAURUSDIRPATH:
756 thesaurusdir_path = os::internal_path(lexrc.getString());
757 thesaurusdir_path = expandPath(thesaurusdir_path);
761 case RC_HUNSPELLDIR_PATH:
763 hunspelldir_path = os::internal_path(lexrc.getString());
764 hunspelldir_path = expandPath(hunspelldir_path);
768 case RC_USELASTFILEPOS:
769 lexrc >> use_lastfilepos;
773 lexrc >> load_session;
776 case RC_MOUSE_WHEEL_SPEED:
777 lexrc >> mouse_wheel_speed;
780 case RC_COMPLETION_INLINE_DELAY:
781 lexrc >> completion_inline_delay;
784 case RC_COMPLETION_INLINE_MATH:
785 lexrc >> completion_inline_math;
788 case RC_COMPLETION_INLINE_TEXT:
789 lexrc >> completion_inline_text;
792 case RC_COMPLETION_INLINE_DOTS:
793 lexrc >> completion_inline_dots;
796 case RC_AUTOCORRECTION_MATH:
797 lexrc >> autocorrection_math;
800 case RC_COMPLETION_POPUP_DELAY:
801 lexrc >> completion_popup_delay;
804 case RC_COMPLETION_POPUP_MATH:
805 lexrc >> completion_popup_math;
808 case RC_COMPLETION_POPUP_TEXT:
809 lexrc >> completion_popup_text;
812 case RC_COMPLETION_CURSOR_TEXT:
813 lexrc >> completion_cursor_text;
816 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
817 lexrc >> completion_popup_after_complete;
820 case RC_COMPLETION_MINLENGTH:
821 lexrc >> completion_minlength;
824 case RC_NUMLASTFILES:
825 lexrc >> num_lastfiles;
828 case RC_CHECKLASTFILES:
829 lexrc >> check_lastfiles;
836 case RC_USE_SYSTEM_THEME_ICONS:
837 lexrc >> use_system_theme_icons;
840 case RC_SCREEN_FONT_ROMAN:
842 roman_font_name = lexrc.getString();
843 oldFontFormat(roman_font_name,
848 case RC_SCREEN_FONT_SANS:
850 sans_font_name = lexrc.getString();
851 oldFontFormat(sans_font_name, sans_font_foundry);
855 case RC_SCREEN_FONT_TYPEWRITER:
857 typewriter_font_name = lexrc.getString();
858 oldFontFormat(typewriter_font_name,
859 typewriter_font_foundry);
863 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
864 lexrc >> roman_font_foundry;
867 case RC_SCREEN_FONT_SANS_FOUNDRY:
868 lexrc >> sans_font_foundry;
871 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
872 lexrc >> typewriter_font_foundry;
877 lexrc.printError("Missing color tag.");
880 string lyx_name = lexrc.getString();
883 lexrc.printError("Missing color name for color: `$$Token'");
886 string x11_name = lexrc.getString();
888 ColorCode const col =
889 lcolor.getFromLyXName(lyx_name);
890 if (col == Color_none ||
891 col == Color_inherit ||
895 if (!lcolor.setColor(col, x11_name))
896 LYXERR0("Bad lyxrc set_color for " << lyx_name);
900 case RC_AUTOREGIONDELETE:
901 // Auto region delete defaults to true
902 lexrc >> auto_region_delete;
907 lyxpipes = os::internal_path(lexrc.getString());
908 lyxpipes = expandPath(lyxpipes);
912 case RC_CURSOR_FOLLOWS_SCROLLBAR:
913 lexrc >> cursor_follows_scrollbar;
916 case RC_CURSOR_WIDTH:
917 lexrc >> cursor_width;
920 case RC_SCROLL_BELOW_DOCUMENT:
921 lexrc >> scroll_below_document;
924 case RC_PARAGRAPH_MARKERS:
925 lexrc >> paragraph_markers;
928 case RC_MAC_DONTSWAP_CTRL_META:
929 lexrc >> mac_dontswap_ctrl_meta;
932 case RC_MAC_LIKE_CURSOR_MOVEMENT:
933 lexrc >> mac_like_cursor_movement;
936 case RC_MACRO_EDIT_STYLE:
938 switch (lexrc.getInteger()) {
939 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
940 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
941 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
946 case RC_DIALOGS_ICONIFY_WITH_MAIN:
947 lexrc >> dialogs_iconify_with_main;
950 case RC_PLAINTEXT_LINELEN:
951 lexrc >> plaintext_linelen;
953 // Spellchecker settings:
954 case RC_ACCEPT_COMPOUND:
955 lexrc >> spellchecker_accept_compound;
957 case RC_USE_SYSTEM_COLORS:
958 lexrc >> use_system_colors;
961 lexrc >> use_tooltip;
963 case RC_USE_PIXMAP_CACHE:
964 lexrc >> use_pixmap_cache;
969 case RC_SPELLCHECKER:
970 lexrc >> spellchecker;
973 lexrc >> spellchecker_alt_lang;
976 lexrc >> spellchecker_esc_chars;
978 case RC_SPELLCHECK_CONTINUOUSLY:
979 lexrc >> spellcheck_continuously;
981 case RC_SPELLCHECK_NOTES:
982 lexrc >> spellcheck_notes;
985 lexrc >> make_backup;
987 case RC_SAVE_COMPRESSED:
988 lexrc >> save_compressed;
990 case RC_BACKUPDIR_PATH:
992 backupdir_path = os::internal_path(lexrc.getString());
993 backupdir_path = expandPath(backupdir_path);
996 case RC_DEFAULT_DECIMAL_POINT:
997 lexrc >> default_decimal_point;
999 case RC_DEFAULT_LENGTH_UNIT:
1001 default_length_unit = (Length::UNIT) lexrc.getInteger();
1003 case RC_DATE_INSERT_FORMAT:
1004 lexrc >> date_insert_format;
1006 case RC_LANGUAGE_CUSTOM_PACKAGE:
1007 lexrc >> language_custom_package;
1009 case RC_LANGUAGE_AUTO_BEGIN:
1010 lexrc >> language_auto_begin;
1012 case RC_LANGUAGE_AUTO_END:
1013 lexrc >> language_auto_end;
1015 case RC_LANGUAGE_GLOBAL_OPTIONS:
1016 lexrc >> language_global_options;
1018 case RC_LANGUAGE_PACKAGE_SELECTION:
1020 switch (lexrc.getInteger()) {
1022 language_package_selection = LP_AUTO;
1025 language_package_selection = LP_BABEL;
1028 language_package_selection = LP_CUSTOM;
1031 language_package_selection = LP_NONE;
1036 case RC_LANGUAGE_COMMAND_BEGIN:
1037 lexrc >> language_command_begin;
1039 case RC_LANGUAGE_COMMAND_END:
1040 lexrc >> language_command_end;
1042 case RC_LANGUAGE_COMMAND_LOCAL:
1043 lexrc >> language_command_local;
1045 case RC_VISUAL_CURSOR:
1046 lexrc >> visual_cursor;
1048 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
1049 lexrc >> close_buffer_with_last_view;
1051 case RC_AUTO_NUMBER:
1052 lexrc >> auto_number;
1054 case RC_MARK_FOREIGN_LANGUAGE:
1055 lexrc >> mark_foreign_language;
1059 string fmt, command;
1061 fmt = lexrc.getString();
1062 if (lexrc.next(true))
1063 command = lexrc.getString();
1064 setMover(fmt, command);
1068 case RC_CONVERTER: {
1069 string from, to, command, flags;
1071 from = lexrc.getString();
1073 to = lexrc.getString();
1074 if (lexrc.next(true))
1075 command = lexrc.getString();
1077 flags = lexrc.getString();
1078 if (command.empty())
1079 theConverters().erase(from, to);
1081 theConverters().add(from, to, command, flags);
1084 // compatibility with versions older than 1.4.0 only
1086 string format, command;
1087 lexrc >> format >> command;
1088 formats.setViewer(format, command);
1091 case RC_FILEFORMAT: {
1093 string format, extensions, prettyname, shortcut;
1094 if (!(lexrc >> format >> extensions))
1096 if (ok && lexrc.next(true))
1097 prettyname = lexrc.getString();
1101 if(!(lexrc >> shortcut))
1103 string viewer, editor;
1104 if (ok && lexrc.next(true))
1105 viewer = lexrc.getString();
1108 if (ok && lexrc.next(true))
1109 editor = lexrc.getString();
1113 if (!(lexrc >> flags >> mime))
1115 int flgs = Format::none;
1116 while (!flags.empty()) {
1118 flags = split(flags, flag, ',');
1119 if (flag == "document")
1120 flgs |= Format::document;
1121 else if (flag == "vector")
1122 flgs |= Format::vector;
1123 else if (flag == "zipped=native")
1124 flgs |= Format::zipped_native;
1125 else if (flag == "menu=export")
1126 flgs |= Format::export_menu;
1128 LYXERR0("Ignoring unknown flag `"
1129 << flag << "' for format `"
1133 LYXERR0("Syntax error in format " << format);
1134 else if (prettyname.empty()) {
1135 if (theConverters().formatIsUsed(format))
1136 LYXERR0("Can't delete format " << format);
1138 formats.erase(format);
1140 formats.add(format, extensions, prettyname,
1141 shortcut, viewer, editor, mime, flgs);
1145 case RC_VIEWER_ALTERNATIVES: {
1146 string format, command;
1149 viewer_alternatives[format].insert(command);
1152 case RC_EDITOR_ALTERNATIVES: {
1153 string format, command;
1156 editor_alternatives[format].insert(command);
1160 case RC_DEFAULT_OTF_VIEW_FORMAT:
1161 lexrc >> default_otf_view_format;
1164 case RC_DEFAULT_VIEW_FORMAT:
1165 lexrc >> default_view_format;
1168 case RC_GUI_LANGUAGE:
1169 lexrc >> gui_language;
1172 case RC_SHOW_BANNER:
1173 lexrc >> show_banner;
1178 string const tmp = lexrc.getString();
1179 if (tmp == "true" || tmp == "on")
1180 preview = PREVIEW_ON;
1181 else if (tmp == "no_math")
1182 preview = PREVIEW_NO_MATH;
1184 preview = PREVIEW_OFF;
1185 if (tmp != "false" && tmp != "off")
1186 LYXERR0("Unrecognized preview status \""
1192 case RC_PREVIEW_HASHED_LABELS:
1193 lexrc >> preview_hashed_labels;
1196 case RC_PREVIEW_SCALE_FACTOR:
1197 lexrc >> preview_scale_factor;
1204 lexrc >> user_email;
1207 case RC_PATH_PREFIX:
1208 lexrc >> path_prefix;
1211 case RC_USE_CONVERTER_CACHE:
1212 lexrc >> use_converter_cache;
1214 case RC_CONVERTER_CACHE_MAXAGE:
1215 lexrc >> converter_cache_maxage;
1218 case RC_SORT_LAYOUTS:
1219 lexrc >> sort_layouts;
1221 case RC_GROUP_LAYOUTS:
1222 lexrc >> group_layouts;
1224 case RC_FULL_SCREEN_LIMIT:
1225 lexrc >> full_screen_limit;
1227 case RC_FULL_SCREEN_TOOLBARS:
1228 lexrc >> full_screen_toolbars;
1230 case RC_FULL_SCREEN_SCROLLBAR:
1231 lexrc >> full_screen_scrollbar;
1233 case RC_FULL_SCREEN_STATUSBAR:
1234 lexrc >> full_screen_statusbar;
1236 case RC_FULL_SCREEN_TABBAR:
1237 lexrc >> full_screen_tabbar;
1239 case RC_FULL_SCREEN_MENUBAR:
1240 lexrc >> full_screen_menubar;
1242 case RC_FULL_SCREEN_WIDTH:
1243 lexrc >> full_screen_width;
1245 case RC_OPEN_BUFFERS_IN_TABS:
1246 lexrc >> open_buffers_in_tabs;
1248 case RC_SINGLE_CLOSE_TAB_BUTTON:
1249 lexrc >> single_close_tab_button;
1251 case RC_SINGLE_INSTANCE:
1252 lexrc >> single_instance;
1253 if (run_mode == PREFERRED)
1254 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1256 case RC_FORWARD_SEARCH_DVI:
1257 if (lexrc.next(true))
1258 forward_search_dvi = lexrc.getString();
1260 case RC_FORWARD_SEARCH_PDF:
1261 if (lexrc.next(true))
1262 forward_search_pdf = lexrc.getString();
1264 case RC_EXPORT_OVERWRITE:
1266 string const tmp = lexrc.getString();
1267 if (tmp == "all" || tmp == "true")
1268 export_overwrite = ALL_FILES;
1269 else if (tmp == "main")
1270 export_overwrite = MAIN_FILE;
1272 export_overwrite = NO_FILES;
1273 if (tmp != "ask" && tmp != "false")
1274 LYXERR0("Unrecognized export_overwrite status \""
1279 case RC_SCROLL_WHEEL_ZOOM:
1281 string const tmp = lexrc.getString();
1283 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1284 else if (tmp == "shift")
1285 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1286 else if (tmp == "alt")
1287 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1289 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1290 if (tmp != "off" && tmp != "false")
1291 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1297 case RC_MOUSE_MIDDLEBUTTON_PASTE:
1298 lexrc >> mouse_middlebutton_paste;
1302 break; // this is just a dummy
1305 // This is triggered the first time through the loop unless
1306 // we hit a format tag.
1307 if (check_format && format != LYXRC_FILEFORMAT)
1308 return FormatMismatch;
1311 /// Update converters data-structures
1312 theConverters().update(formats);
1313 theConverters().buildGraph();
1319 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1321 ofstream ofs(filename.toFilesystemEncoding().c_str());
1323 write(ofs, ignore_system_lyxrc);
1327 void LyXRC::print() const
1329 if (lyxerr.debugging())
1330 write(lyxerr, false);
1338 typedef pair<string, SpecialisedMover> Data;
1340 SameMover(Data const & comparison)
1341 : comparison_(comparison) {}
1343 bool operator()(Data const & data) const
1345 return data.first == comparison_.first &&
1346 data.second.command() == comparison_.second.command();
1356 // Escape \ and " so that LyXLex can read the string later
1357 string escapeCommand(string const & str) {
1358 return subst(subst(str , "\\", "\\\\"),
1365 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1367 LyXRCTags tag = RC_LAST;
1369 if (!name.empty()) {
1370 for (int i = 0; i != lyxrcCount; ++i)
1371 if ("\\" + name == lyxrcTags[i].tag)
1372 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1376 os << "# LyX " << lyx_version
1377 << " generated this file. If you want to make your own\n"
1378 << "# modifications you should do them from inside LyX and save.\n\n"
1379 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1381 // Why the switch you might ask. It is a trick to ensure that all
1382 // the elements in the LyXRCTags enum are handled. As you can see
1383 // there are no breaks at all. So it is just a huge fall-through.
1384 // The nice thing is that we will get a warning from the compiler
1385 // if we forget an element.
1389 // input/include files are not done here
1390 case RC_LYXRCFORMAT:
1392 if (ignore_system_lyxrc ||
1393 bind_file != system_lyxrc.bind_file) {
1394 string const path = os::external_path(bind_file);
1395 os << "\\bind_file \"" << path << "\"\n";
1401 if (ignore_system_lyxrc ||
1402 def_file != system_lyxrc.def_file) {
1403 string const path = os::external_path(def_file);
1404 os << "\\def_file \"" << path << "\"\n";
1413 << "# MISC SECTION ######################################\n"
1415 // bind files are not done here.
1417 case RC_PATH_PREFIX:
1418 if (ignore_system_lyxrc ||
1419 path_prefix != system_lyxrc.path_prefix) {
1420 os << "\\path_prefix \"" << path_prefix << "\"\n";
1425 if (ignore_system_lyxrc ||
1426 ui_file != system_lyxrc.ui_file) {
1427 string const path = os::external_path(ui_file);
1428 os << "\\ui_file \"" << path << "\"\n";
1432 case RC_AUTOREGIONDELETE:
1433 if (ignore_system_lyxrc ||
1434 auto_region_delete != system_lyxrc.auto_region_delete) {
1435 os << "# Set to false to inhibit automatic replacement of\n"
1436 << "# the current selection.\n"
1437 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1442 case RC_AUTORESET_OPTIONS:
1443 if (ignore_system_lyxrc ||
1444 auto_reset_options != system_lyxrc.auto_reset_options) {
1445 os << "# Set to false to inhibit automatic reset of\n"
1446 << "# the class options to defaults on class change.\n"
1447 << "\\auto_reset_options "
1448 << convert<string>(auto_reset_options)
1454 if (ignore_system_lyxrc ||
1455 autosave != system_lyxrc.autosave) {
1456 os << "# The time interval between auto-saves in seconds.\n"
1457 << "\\autosave " << autosave << '\n';
1461 case RC_DISPLAY_GRAPHICS:
1462 if (ignore_system_lyxrc ||
1463 display_graphics != system_lyxrc.display_graphics) {
1464 os << "# Display graphics within LyX\n"
1466 << "\\display_graphics "
1467 << (display_graphics ? "true" : "false")
1472 case RC_SORT_LAYOUTS:
1473 if (ignore_system_lyxrc ||
1474 sort_layouts != system_lyxrc.sort_layouts) {
1475 os << "# Sort layouts alphabetically.\n"
1476 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1480 case RC_GROUP_LAYOUTS:
1481 if (ignore_system_lyxrc ||
1482 group_layouts != system_lyxrc.group_layouts) {
1483 os << "# Group layouts by their category.\n"
1484 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1488 case RC_VIEWDVI_PAPEROPTION:
1489 if (ignore_system_lyxrc ||
1490 view_dvi_paper_option
1491 != system_lyxrc.view_dvi_paper_option) {
1492 os << "# Options used to specify paper size to the\n"
1493 << "# view_dvi_command (e.g. -paper)\n"
1494 << "\\view_dvi_paper_option \""
1495 << view_dvi_paper_option << "\"\n";
1499 case RC_CHKTEX_COMMAND:
1500 if (ignore_system_lyxrc ||
1501 chktex_command != system_lyxrc.chktex_command) {
1502 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1506 case RC_BIBTEX_ALTERNATIVES: {
1507 CommandSet::const_iterator it = bibtex_alternatives.begin();
1508 CommandSet::const_iterator end = bibtex_alternatives.end();
1509 for ( ; it != end; ++it) {
1510 if (ignore_system_lyxrc
1511 || !system_lyxrc.bibtex_alternatives.count(*it))
1512 os << "\\bibtex_alternatives \""
1518 case RC_BIBTEX_COMMAND:
1519 if (ignore_system_lyxrc ||
1520 bibtex_command != system_lyxrc.bibtex_command) {
1521 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1525 case RC_JBIBTEX_COMMAND:
1526 if (ignore_system_lyxrc ||
1527 jbibtex_command != system_lyxrc.jbibtex_command) {
1528 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1532 case RC_INDEX_ALTERNATIVES: {
1533 CommandSet::const_iterator it = index_alternatives.begin();
1534 CommandSet::const_iterator end = index_alternatives.end();
1535 for ( ; it != end; ++it) {
1536 if (ignore_system_lyxrc
1537 || !system_lyxrc.index_alternatives.count(*it))
1538 os << "\\index_alternatives \""
1544 case RC_INDEX_COMMAND:
1545 if (ignore_system_lyxrc ||
1546 index_command != system_lyxrc.index_command) {
1547 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1551 case RC_JINDEX_COMMAND:
1552 if (ignore_system_lyxrc ||
1553 jindex_command != system_lyxrc.jindex_command) {
1554 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1558 case RC_SPLITINDEX_COMMAND:
1559 if (ignore_system_lyxrc ||
1560 splitindex_command != system_lyxrc.splitindex_command) {
1561 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1565 case RC_NOMENCL_COMMAND:
1566 if (ignore_system_lyxrc ||
1567 nomencl_command != system_lyxrc.nomencl_command) {
1568 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1572 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1573 // Don't write this setting to the preferences file,
1574 // but allow temporary changes (bug 7557).
1575 if (ignore_system_lyxrc) {
1576 os << "\\tex_expects_windows_paths "
1577 << convert<string>(windows_style_tex_paths) << '\n';
1581 case RC_TEX_ALLOWS_SPACES:
1582 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1583 os << "\\tex_allows_spaces "
1584 << convert<string>(tex_allows_spaces) << '\n';
1589 if (ignore_system_lyxrc ||
1590 use_kbmap != system_lyxrc.use_kbmap) {
1591 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1595 case RC_KBMAP_PRIMARY:
1596 if (ignore_system_lyxrc ||
1597 primary_kbmap != system_lyxrc.primary_kbmap) {
1598 string const path = os::external_path(primary_kbmap);
1599 os << "\\kbmap_primary \"" << path << "\"\n";
1603 case RC_KBMAP_SECONDARY:
1604 if (ignore_system_lyxrc ||
1605 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1606 string const path = os::external_path(secondary_kbmap);
1607 os << "\\kbmap_secondary \"" << path << "\"\n";
1612 if (ignore_system_lyxrc ||
1613 lyxpipes != system_lyxrc.lyxpipes) {
1614 string const path = os::external_path(lyxpipes);
1615 os << "\\serverpipe \"" << path << "\"\n";
1619 case RC_DATE_INSERT_FORMAT:
1620 if (ignore_system_lyxrc ||
1621 date_insert_format != system_lyxrc.date_insert_format) {
1622 os << "\\date_insert_format \"" << date_insert_format
1629 os << "\\user_name \"" << user_name << "\"\n";
1634 os << "\\user_email \"" << user_email << "\"\n";
1638 case RC_SHOW_BANNER:
1639 if (ignore_system_lyxrc ||
1640 show_banner != system_lyxrc.show_banner) {
1641 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1647 if (ignore_system_lyxrc ||
1648 preview != system_lyxrc.preview) {
1654 case PREVIEW_NO_MATH:
1661 os << "\\preview " << status << '\n';
1666 case RC_PREVIEW_HASHED_LABELS:
1667 if (ignore_system_lyxrc ||
1668 preview_hashed_labels !=
1669 system_lyxrc.preview_hashed_labels) {
1670 os << "\\preview_hashed_labels "
1671 << convert<string>(preview_hashed_labels) << '\n';
1676 case RC_PREVIEW_SCALE_FACTOR:
1677 if (ignore_system_lyxrc ||
1678 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1679 os << "\\preview_scale_factor "
1680 << preview_scale_factor << '\n';
1685 case RC_USE_CONVERTER_CACHE:
1686 if (ignore_system_lyxrc ||
1687 use_converter_cache != system_lyxrc.use_converter_cache) {
1688 os << "\\use_converter_cache "
1689 << convert<string>(use_converter_cache) << '\n';
1694 case RC_CONVERTER_CACHE_MAXAGE:
1695 if (ignore_system_lyxrc ||
1696 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1697 os << "\\converter_cache_maxage "
1698 << converter_cache_maxage << '\n';
1704 << "# SCREEN & FONTS SECTION ############################\n"
1708 if (ignore_system_lyxrc ||
1709 icon_set != system_lyxrc.icon_set) {
1710 os << "\\icon_set \"" << icon_set
1716 case RC_USE_SYSTEM_THEME_ICONS:
1717 if (ignore_system_lyxrc ||
1718 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1719 os << "\\use_system_theme_icons "
1720 << convert<string>(use_system_theme_icons)
1727 if (ignore_system_lyxrc ||
1728 dpi != system_lyxrc.dpi) {
1729 os << "\\screen_dpi " << dpi << '\n';
1733 case RC_SCREEN_ZOOM:
1734 if (ignore_system_lyxrc ||
1735 zoom != system_lyxrc.zoom) {
1736 os << "\\screen_zoom " << zoom << '\n';
1740 case RC_GEOMETRY_SESSION:
1741 if (ignore_system_lyxrc ||
1742 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1743 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1748 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1749 if (ignore_system_lyxrc ||
1750 cursor_follows_scrollbar
1751 != system_lyxrc.cursor_follows_scrollbar) {
1752 os << "\\cursor_follows_scrollbar "
1753 << convert<string>(cursor_follows_scrollbar) << '\n';
1757 case RC_CURSOR_WIDTH:
1758 if (ignore_system_lyxrc ||
1760 != system_lyxrc.cursor_width) {
1761 os << "\\cursor_width "
1762 << cursor_width << '\n';
1766 case RC_SCROLL_BELOW_DOCUMENT:
1767 if (ignore_system_lyxrc ||
1768 scroll_below_document
1769 != system_lyxrc.scroll_below_document) {
1770 os << "\\scroll_below_document "
1771 << convert<string>(scroll_below_document) << '\n';
1775 case RC_PARAGRAPH_MARKERS:
1776 if (ignore_system_lyxrc ||
1778 != system_lyxrc.paragraph_markers) {
1779 os << "\\paragraph_markers "
1780 << convert<string>(paragraph_markers) << '\n';
1784 case RC_MAC_DONTSWAP_CTRL_META:
1785 if (ignore_system_lyxrc ||
1786 mac_dontswap_ctrl_meta
1787 != system_lyxrc.mac_dontswap_ctrl_meta) {
1788 os << "\\mac_dontswap_ctrl_meta "
1789 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1793 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1794 if (ignore_system_lyxrc ||
1795 mac_like_cursor_movement
1796 != system_lyxrc.mac_like_cursor_movement) {
1797 os << "\\mac_like_cursor_movement "
1798 << convert<string>(mac_like_cursor_movement) << '\n';
1802 case RC_MACRO_EDIT_STYLE:
1803 if (ignore_system_lyxrc ||
1805 != system_lyxrc.macro_edit_style) {
1806 os << "\\macro_edit_style ";
1807 switch (macro_edit_style) {
1808 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1809 case MACRO_EDIT_INLINE: os << "1\n"; break;
1810 case MACRO_EDIT_LIST: os << "2\n"; break;
1815 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1816 if (ignore_system_lyxrc ||
1817 dialogs_iconify_with_main
1818 != system_lyxrc.dialogs_iconify_with_main) {
1819 os << "\\dialogs_iconify_with_main "
1820 << convert<string>(dialogs_iconify_with_main) << '\n';
1824 case RC_SCREEN_FONT_ROMAN:
1825 if (ignore_system_lyxrc ||
1826 roman_font_name != system_lyxrc.roman_font_name) {
1827 os << "\\screen_font_roman \"" << roman_font_name
1832 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1833 if (ignore_system_lyxrc ||
1834 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1835 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1840 case RC_SCREEN_FONT_SANS:
1841 if (ignore_system_lyxrc ||
1842 sans_font_name != system_lyxrc.sans_font_name) {
1843 os << "\\screen_font_sans \"" << sans_font_name
1848 case RC_SCREEN_FONT_SANS_FOUNDRY:
1849 if (ignore_system_lyxrc ||
1850 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1851 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1856 case RC_SCREEN_FONT_TYPEWRITER:
1857 if (ignore_system_lyxrc ||
1858 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1859 os << "\\screen_font_typewriter \""
1860 << typewriter_font_name << "\"\n";
1864 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1865 if (ignore_system_lyxrc ||
1866 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1867 os << "\\screen_font_typewriter_foundry \""
1868 << typewriter_font_foundry << "\"\n";
1873 case RC_SCREEN_FONT_SCALABLE:
1874 if (ignore_system_lyxrc ||
1875 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1876 os << "\\screen_font_scalable "
1877 << convert<string>(use_scalable_fonts)
1882 case RC_SCREEN_FONT_SIZES:
1883 if (ignore_system_lyxrc ||
1884 font_sizes[FONT_SIZE_TINY]
1885 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1886 font_sizes[FONT_SIZE_SCRIPT]
1887 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1888 font_sizes[FONT_SIZE_FOOTNOTE]
1889 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1890 font_sizes[FONT_SIZE_SMALL]
1891 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1892 font_sizes[FONT_SIZE_NORMAL]
1893 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1894 font_sizes[FONT_SIZE_LARGE]
1895 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1896 font_sizes[FONT_SIZE_LARGER]
1897 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1898 font_sizes[FONT_SIZE_LARGEST]
1899 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1900 font_sizes[FONT_SIZE_HUGE]
1901 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1902 font_sizes[FONT_SIZE_HUGER]
1903 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1904 streamsize old_prec = os.precision();
1905 os.setf(ios::fixed);
1907 os << "\\screen_font_sizes"
1908 << ' ' << font_sizes[FONT_SIZE_TINY]
1909 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1910 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1911 << ' ' << font_sizes[FONT_SIZE_SMALL]
1912 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1913 << ' ' << font_sizes[FONT_SIZE_LARGE]
1914 << ' ' << font_sizes[FONT_SIZE_LARGER]
1915 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1916 << ' ' << font_sizes[FONT_SIZE_HUGE]
1917 << ' ' << font_sizes[FONT_SIZE_HUGER]
1919 os.precision(old_prec);
1920 os.unsetf(ios::fixed);
1924 case RC_FULL_SCREEN_LIMIT:
1925 if (ignore_system_lyxrc ||
1926 full_screen_limit != system_lyxrc.full_screen_limit) {
1927 os << "\\fullscreen_limit "
1928 << convert<string>(full_screen_limit)
1933 case RC_FULL_SCREEN_TOOLBARS:
1934 if (ignore_system_lyxrc ||
1935 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1936 os << "\\fullscreen_toolbars "
1937 << convert<string>(full_screen_toolbars)
1942 case RC_FULL_SCREEN_SCROLLBAR:
1943 if (ignore_system_lyxrc ||
1944 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1945 os << "\\fullscreen_scrollbar "
1946 << convert<string>(full_screen_scrollbar)
1951 case RC_FULL_SCREEN_STATUSBAR:
1952 if (ignore_system_lyxrc ||
1953 full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
1954 os << "\\fullscreen_statusbar "
1955 << convert<string>(full_screen_statusbar)
1960 case RC_FULL_SCREEN_TABBAR:
1961 if (ignore_system_lyxrc ||
1962 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1963 os << "\\fullscreen_tabbar "
1964 << convert<string>(full_screen_tabbar)
1969 case RC_FULL_SCREEN_MENUBAR:
1970 if (ignore_system_lyxrc ||
1971 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1972 os << "\\fullscreen_menubar "
1973 << convert<string>(full_screen_menubar)
1978 case RC_FULL_SCREEN_WIDTH:
1979 if (ignore_system_lyxrc ||
1980 full_screen_width != system_lyxrc.full_screen_width) {
1981 os << "\\fullscreen_width "
1982 << convert<string>(full_screen_width)
1987 case RC_OPEN_BUFFERS_IN_TABS:
1988 if (ignore_system_lyxrc ||
1989 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1990 os << "\\open_buffers_in_tabs "
1991 << convert<string>(open_buffers_in_tabs)
1996 case RC_SINGLE_CLOSE_TAB_BUTTON:
1997 if (ignore_system_lyxrc ||
1998 single_close_tab_button != system_lyxrc.single_close_tab_button) {
1999 os << "\\single_close_tab_button "
2000 << convert<string>(single_close_tab_button)
2005 case RC_SINGLE_INSTANCE:
2006 if (ignore_system_lyxrc ||
2007 single_instance != system_lyxrc.single_instance) {
2008 os << "\\single_instance "
2009 << convert<string>(single_instance)
2014 case RC_FORWARD_SEARCH_DVI:
2015 if (ignore_system_lyxrc ||
2016 forward_search_dvi != system_lyxrc.forward_search_dvi) {
2017 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
2021 case RC_FORWARD_SEARCH_PDF:
2022 if (ignore_system_lyxrc ||
2023 forward_search_pdf != system_lyxrc.forward_search_pdf) {
2024 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
2030 << "# COLOR SECTION ###################################\n"
2034 for (int i = 0; i < Color_ignore; ++i) {
2035 ColorCode lc = static_cast<ColorCode>(i);
2036 string const col = lcolor.getX11Name(lc);
2037 if (ignore_system_lyxrc
2038 || col != system_lcolor.getX11Name(lc)) {
2039 os << "\\set_color \""
2040 << lcolor.getLyXName(lc) << "\" \""
2048 << "# PRINTER SECTION ###################################\n"
2052 if (ignore_system_lyxrc ||
2053 printer != system_lyxrc.printer) {
2054 os << "\\printer \"" << printer << "\"\n";
2058 case RC_PRINT_ADAPTOUTPUT:
2059 if (ignore_system_lyxrc ||
2060 print_adapt_output != system_lyxrc.print_adapt_output) {
2061 os << "\\print_adapt_output "
2062 << convert<string>(print_adapt_output)
2067 case RC_PRINT_COMMAND:
2068 if (ignore_system_lyxrc ||
2069 print_command != system_lyxrc.print_command) {
2070 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
2074 case RC_PRINTEXSTRAOPTIONS:
2075 if (ignore_system_lyxrc ||
2076 print_extra_options != system_lyxrc.print_extra_options) {
2077 os << "\\print_extra_options \"" << print_extra_options
2082 case RC_PRINTSPOOL_COMMAND:
2083 if (ignore_system_lyxrc ||
2084 print_spool_command != system_lyxrc.print_spool_command) {
2085 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
2090 case RC_PRINTSPOOL_PRINTERPREFIX:
2091 if (ignore_system_lyxrc ||
2092 print_spool_printerprefix
2093 != system_lyxrc.print_spool_printerprefix) {
2094 os << "\\print_spool_printerprefix \""
2095 << print_spool_printerprefix << "\"\n";
2099 case RC_PRINTEVENPAGEFLAG:
2100 if (ignore_system_lyxrc ||
2101 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
2102 os << "\\print_evenpage_flag \"" << print_evenpage_flag
2107 case RC_PRINTODDPAGEFLAG:
2108 if (ignore_system_lyxrc ||
2109 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
2110 os << "\\print_oddpage_flag \"" << print_oddpage_flag
2115 case RC_PRINTREVERSEFLAG:
2116 if (ignore_system_lyxrc ||
2117 print_reverse_flag != system_lyxrc.print_reverse_flag) {
2118 os << "\\print_reverse_flag \"" << print_reverse_flag
2123 case RC_PRINTLANDSCAPEFLAG:
2124 if (ignore_system_lyxrc ||
2125 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2126 os << "\\print_landscape_flag \"" << print_landscape_flag
2131 case RC_PRINTPAGERANGEFLAG:
2132 if (ignore_system_lyxrc ||
2133 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
2134 os << "\\print_pagerange_flag \"" << print_pagerange_flag
2139 case RC_PRINTCOPIESFLAG:
2140 if (ignore_system_lyxrc ||
2141 print_copies_flag != system_lyxrc.print_copies_flag) {
2142 os << "\\print_copies_flag \"" << print_copies_flag
2147 case RC_PRINTCOLLCOPIESFLAG:
2148 if (ignore_system_lyxrc ||
2149 print_collcopies_flag
2150 != system_lyxrc.print_collcopies_flag) {
2151 os << "\\print_collcopies_flag \""
2152 << print_collcopies_flag
2157 case RC_PRINTPAPERFLAG:
2158 if (ignore_system_lyxrc ||
2159 print_paper_flag != system_lyxrc.print_paper_flag) {
2160 os << "\\print_paper_flag \"" << print_paper_flag
2165 case RC_PRINTPAPERDIMENSIONFLAG:
2166 if (ignore_system_lyxrc ||
2167 print_paper_dimension_flag
2168 != system_lyxrc.print_paper_dimension_flag) {
2169 os << "\\print_paper_dimension_flag \""
2170 << print_paper_dimension_flag << "\"\n";
2174 case RC_PRINTTOPRINTER:
2175 if (ignore_system_lyxrc ||
2176 print_to_printer != system_lyxrc.print_to_printer) {
2177 os << "\\print_to_printer \"" << print_to_printer
2182 case RC_PRINTTOFILE:
2183 if (ignore_system_lyxrc ||
2184 print_to_file != system_lyxrc.print_to_file) {
2185 string const path = os::external_path(print_to_file);
2186 os << "\\print_to_file \"" << path << "\"\n";
2190 case RC_PRINTFILEEXTENSION:
2191 if (ignore_system_lyxrc ||
2192 print_file_extension != system_lyxrc.print_file_extension) {
2193 os << "\\print_file_extension \""
2194 << print_file_extension
2201 << "# TEX SECTION #######################################\n"
2204 case RC_TEXINPUTS_PREFIX:
2205 if (ignore_system_lyxrc ||
2206 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2207 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2212 case RC_FONT_ENCODING:
2213 if (ignore_system_lyxrc ||
2214 fontenc != system_lyxrc.fontenc) {
2215 os << "\\font_encoding \"" << fontenc << "\"\n";
2221 << "# FILE SECTION ######################################\n"
2224 case RC_DOCUMENTPATH:
2225 if (ignore_system_lyxrc ||
2226 document_path != system_lyxrc.document_path) {
2227 string const path = os::external_path(document_path);
2228 os << "\\document_path \"" << path << "\"\n";
2232 case RC_USELASTFILEPOS:
2233 if (ignore_system_lyxrc ||
2234 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2235 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2240 case RC_LOADSESSION:
2241 if (ignore_system_lyxrc ||
2242 load_session != system_lyxrc.load_session) {
2243 os << "\\load_session " << convert<string>(load_session)
2248 case RC_MOUSE_WHEEL_SPEED:
2249 if (ignore_system_lyxrc ||
2250 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2251 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2255 case RC_MOUSE_MIDDLEBUTTON_PASTE:
2256 if (ignore_system_lyxrc ||
2257 mouse_middlebutton_paste != system_lyxrc.mouse_middlebutton_paste) {
2258 os << "\\mouse_middlebutton_paste "
2259 << convert<string>(mouse_middlebutton_paste) << '\n';
2263 case RC_COMPLETION_INLINE_DELAY:
2264 if (ignore_system_lyxrc ||
2265 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2266 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2270 case RC_COMPLETION_INLINE_MATH:
2271 if (ignore_system_lyxrc ||
2272 completion_inline_math != system_lyxrc.completion_inline_math) {
2273 os << "\\completion_inline_math "
2274 << convert<string>(completion_inline_math) << '\n';
2278 case RC_COMPLETION_INLINE_TEXT:
2279 if (ignore_system_lyxrc ||
2280 completion_inline_text != system_lyxrc.completion_inline_text) {
2281 os << "\\completion_inline_text "
2282 << convert<string>(completion_inline_text) << '\n';
2286 case RC_COMPLETION_INLINE_DOTS:
2287 if (ignore_system_lyxrc ||
2288 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2289 os << "\\completion_inline_dots "
2290 << convert<string>(completion_inline_dots) << '\n';
2294 case RC_AUTOCORRECTION_MATH:
2295 if (ignore_system_lyxrc ||
2296 autocorrection_math != system_lyxrc.autocorrection_math) {
2297 os << "\\autocorrection_math "
2298 << convert<string>(autocorrection_math) << '\n';
2302 case RC_COMPLETION_POPUP_DELAY:
2303 if (ignore_system_lyxrc ||
2304 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2305 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2309 case RC_COMPLETION_POPUP_MATH:
2310 if (ignore_system_lyxrc ||
2311 completion_popup_math != system_lyxrc.completion_popup_math) {
2312 os << "\\completion_popup_math "
2313 << convert<string>(completion_popup_math) << '\n';
2317 case RC_COMPLETION_POPUP_TEXT:
2318 if (ignore_system_lyxrc ||
2319 completion_popup_text != system_lyxrc.completion_popup_text) {
2320 os << "\\completion_popup_text "
2321 << convert<string>(completion_popup_text) << '\n';
2325 case RC_COMPLETION_CURSOR_TEXT:
2326 if (ignore_system_lyxrc ||
2327 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2328 os << "\\completion_cursor_text "
2329 << convert<string>(completion_cursor_text) << '\n';
2333 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2334 if (ignore_system_lyxrc ||
2335 completion_popup_after_complete
2336 != system_lyxrc.completion_popup_after_complete) {
2337 os << "\\completion_popup_after_complete "
2338 << convert<string>(completion_popup_after_complete) << '\n';
2342 case RC_COMPLETION_MINLENGTH:
2343 if (ignore_system_lyxrc ||
2344 completion_minlength != system_lyxrc.completion_minlength) {
2345 os << "\\completion_minlength " << convert<string>(completion_minlength)
2351 case RC_NUMLASTFILES:
2352 if (ignore_system_lyxrc ||
2353 num_lastfiles != system_lyxrc.num_lastfiles) {
2354 os << "\\num_lastfiles " << num_lastfiles << '\n';
2358 case RC_CHECKLASTFILES:
2359 if (ignore_system_lyxrc ||
2360 check_lastfiles != system_lyxrc.check_lastfiles) {
2361 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2366 case RC_EXAMPLEPATH:
2367 if (ignore_system_lyxrc ||
2368 example_path != system_lyxrc.example_path) {
2369 string const path = os::external_path(example_path);
2370 os << "\\example_path \"" << path << "\"\n";
2374 case RC_TEMPLATEPATH:
2375 if (ignore_system_lyxrc ||
2376 template_path != system_lyxrc.template_path) {
2377 string const path = os::external_path(template_path);
2378 os << "\\template_path \"" << path << "\"\n";
2382 case RC_TEMPDIRPATH:
2383 if (ignore_system_lyxrc ||
2384 tempdir_path != system_lyxrc.tempdir_path) {
2385 string const path = os::external_path(tempdir_path);
2386 os << "\\tempdir_path \"" << path << "\"\n";
2390 case RC_THESAURUSDIRPATH:
2391 if (ignore_system_lyxrc ||
2392 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2393 string const path = os::external_path(thesaurusdir_path);
2394 os << "\\thesaurusdir_path \"" << path << "\"\n";
2398 case RC_HUNSPELLDIR_PATH:
2399 if (ignore_system_lyxrc ||
2400 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2401 string const path = os::external_path(hunspelldir_path);
2402 os << "\\hunspelldir_path \"" << path << "\"\n";
2406 case RC_PLAINTEXT_LINELEN:
2407 if (ignore_system_lyxrc ||
2408 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2409 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2413 case RC_MAKE_BACKUP:
2414 if (ignore_system_lyxrc ||
2415 make_backup != system_lyxrc.make_backup) {
2416 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2420 case RC_SAVE_COMPRESSED:
2421 if (ignore_system_lyxrc ||
2422 save_compressed != system_lyxrc.save_compressed) {
2423 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2427 case RC_BACKUPDIR_PATH:
2428 if (ignore_system_lyxrc ||
2429 backupdir_path != system_lyxrc.backupdir_path) {
2430 string const path = os::external_path(backupdir_path);
2431 os << "\\backupdir_path \"" << path << "\"\n";
2437 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2441 << "# SPELLCHECKER SECTION ##############################\n"
2444 case RC_ACCEPT_COMPOUND:
2445 if (ignore_system_lyxrc ||
2446 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2447 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2453 if (ignore_system_lyxrc ||
2454 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2455 os << "\\alternate_language \"" << spellchecker_alt_lang
2461 if (ignore_system_lyxrc ||
2462 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2463 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2467 case RC_USE_SYSTEM_COLORS:
2468 if (ignore_system_lyxrc ||
2469 use_system_colors != system_lyxrc.use_system_colors) {
2470 os << "\\use_system_colors "
2471 << convert<string>(use_system_colors)
2476 case RC_USE_TOOLTIP:
2477 if (ignore_system_lyxrc ||
2478 use_tooltip != system_lyxrc.use_tooltip) {
2479 os << "\\use_tooltip "
2480 << convert<string>(use_tooltip)
2485 case RC_USE_PIXMAP_CACHE:
2486 if (ignore_system_lyxrc ||
2487 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2488 os << "\\use_pixmap_cache "
2489 << convert<string>(use_pixmap_cache)
2495 if (ignore_system_lyxrc ||
2496 use_qimage != system_lyxrc.use_qimage) {
2497 os << "\\use_qimage "
2498 << convert<string>(use_qimage)
2505 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2510 case RC_DEFAULT_DECIMAL_POINT:
2511 if (ignore_system_lyxrc ||
2512 default_decimal_point != system_lyxrc.default_decimal_point) {
2513 os << "\\default_decimal_point " << default_decimal_point << '\n';
2518 case RC_DEFAULT_LENGTH_UNIT:
2519 if (ignore_system_lyxrc ||
2520 default_length_unit != system_lyxrc.default_length_unit) {
2521 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2526 case RC_SPELLCHECKER:
2527 if (ignore_system_lyxrc ||
2528 spellchecker != system_lyxrc.spellchecker) {
2529 os << "\\spellchecker " << spellchecker << '\n';
2534 case RC_SPELLCHECK_CONTINUOUSLY:
2535 if (ignore_system_lyxrc ||
2536 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2537 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2543 case RC_SPELLCHECK_NOTES:
2544 if (ignore_system_lyxrc ||
2545 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2546 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2552 case RC_VISUAL_CURSOR:
2553 if (ignore_system_lyxrc ||
2554 visual_cursor != system_lyxrc.visual_cursor) {
2555 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2559 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2560 if (ignore_system_lyxrc ||
2561 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2562 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2563 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2567 case RC_LANGUAGE_CUSTOM_PACKAGE:
2568 if (ignore_system_lyxrc ||
2569 language_custom_package != system_lyxrc.language_custom_package) {
2570 os << "\\language_custom_package \"" << language_custom_package
2575 case RC_LANGUAGE_GLOBAL_OPTIONS:
2576 if (ignore_system_lyxrc ||
2577 language_global_options
2578 != system_lyxrc.language_global_options) {
2579 os << "\\language_global_options \""
2580 << convert<string>(language_global_options)
2585 case RC_LANGUAGE_PACKAGE_SELECTION:
2586 if (ignore_system_lyxrc ||
2587 language_package_selection != system_lyxrc.language_package_selection) {
2588 os << "\\language_package_selection ";
2589 switch (language_package_selection) {
2606 case RC_LANGUAGE_COMMAND_BEGIN:
2607 if (ignore_system_lyxrc ||
2608 language_command_begin
2609 != system_lyxrc.language_command_begin) {
2610 os << "\\language_command_begin \""
2611 << language_command_begin
2616 case RC_LANGUAGE_COMMAND_END:
2617 if (ignore_system_lyxrc ||
2618 language_command_end
2619 != system_lyxrc.language_command_end) {
2620 os << "\\language_command_end \"" << language_command_end
2625 case RC_LANGUAGE_COMMAND_LOCAL:
2626 if (ignore_system_lyxrc ||
2627 language_command_local
2628 != system_lyxrc.language_command_local) {
2629 os << "\\language_command_local \""
2630 << language_command_local
2635 case RC_LANGUAGE_AUTO_BEGIN:
2636 if (ignore_system_lyxrc ||
2637 language_auto_begin != system_lyxrc.language_auto_begin) {
2638 os << "\\language_auto_begin "
2639 << convert<string>(language_auto_begin) << '\n';
2643 case RC_LANGUAGE_AUTO_END:
2644 if (ignore_system_lyxrc ||
2645 language_auto_end != system_lyxrc.language_auto_end) {
2646 os << "\\language_auto_end "
2647 << convert<string>(language_auto_end) << '\n';
2651 case RC_MARK_FOREIGN_LANGUAGE:
2652 if (ignore_system_lyxrc ||
2653 mark_foreign_language
2654 != system_lyxrc.mark_foreign_language) {
2655 os << "\\mark_foreign_language " <<
2656 convert<string>(mark_foreign_language) << '\n';
2662 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2665 case RC_AUTO_NUMBER:
2666 if (ignore_system_lyxrc ||
2667 auto_number != system_lyxrc.auto_number) {
2668 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2672 case RC_GUI_LANGUAGE:
2673 if (ignore_system_lyxrc ||
2674 gui_language != system_lyxrc.gui_language) {
2675 os << "\\gui_language " << gui_language << '\n';
2679 case RC_EXPORT_OVERWRITE:
2680 if (ignore_system_lyxrc ||
2681 export_overwrite != system_lyxrc.export_overwrite) {
2683 switch (export_overwrite) {
2694 os << "\\export_overwrite " << status << '\n';
2699 case RC_SCROLL_WHEEL_ZOOM:
2700 if (ignore_system_lyxrc ||
2701 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2703 switch (scroll_wheel_zoom) {
2704 case SCROLL_WHEEL_ZOOM_OFF:
2707 case SCROLL_WHEEL_ZOOM_CTRL:
2710 case SCROLL_WHEEL_ZOOM_SHIFT:
2713 case SCROLL_WHEEL_ZOOM_ALT:
2717 os << "\\scroll_wheel_zoom " << status << '\n';
2723 << "# FORMATS SECTION ##########################\n"
2727 // New/modified formats
2728 for (Formats::const_iterator cit = formats.begin();
2729 cit != formats.end(); ++cit) {
2730 Format const * format =
2731 system_formats.getFormat(cit->name());
2733 format->extensions() != cit->extensions() ||
2734 format->prettyname() != cit->prettyname() ||
2735 format->shortcut() != cit->shortcut() ||
2736 format->viewer() != cit->viewer() ||
2737 format->editor() != cit->editor() ||
2738 format->documentFormat() != cit->documentFormat() ||
2739 format->vectorFormat() != cit->vectorFormat() ||
2740 format->inExportMenu() != cit->inExportMenu() ||
2741 format->mime() != cit->mime()) {
2742 os << "\\format \"" << cit->name() << "\" \""
2743 << cit->extensions() << "\" \""
2744 << cit->prettyname() << "\" \""
2745 << cit->shortcut() << "\" \""
2746 << escapeCommand(cit->viewer()) << "\" \""
2747 << escapeCommand(cit->editor()) << "\" \"";
2748 vector<string> flags;
2749 if (cit->documentFormat())
2750 flags.push_back("document");
2751 if (cit->vectorFormat())
2752 flags.push_back("vector");
2753 if (cit->zippedNative())
2754 flags.push_back("zipped=native");
2755 if (cit->inExportMenu())
2756 flags.push_back("menu=export");
2758 os << getStringFromVector(flags);
2759 os << "\" \"" << cit->mime() << "\"\n";
2763 // Look for deleted formats
2764 for (Formats::const_iterator cit = system_formats.begin();
2765 cit != system_formats.end(); ++cit)
2766 if (!formats.getFormat(cit->name()))
2767 os << "\\format \"" << cit->name()
2768 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2771 case RC_VIEWER_ALTERNATIVES: {
2772 Alternatives::const_iterator it = viewer_alternatives.begin();
2773 Alternatives::const_iterator const en = viewer_alternatives.end();
2774 Alternatives::const_iterator const sysend =
2775 system_lyxrc.viewer_alternatives.end();
2776 for (; it != en; ++it) {
2777 string const & fmt = it->first;
2778 CommandSet const & cmd = it->second;
2779 CommandSet::const_iterator sit = cmd.begin();
2780 CommandSet::const_iterator const sen = cmd.end();
2781 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2782 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2783 system_lyxrc.viewer_alternatives.find(fmt);
2784 for (; sit != sen; ++sit) {
2785 string const & cmd = *sit;
2786 if (ignore_system_lyxrc
2787 || sysfmt == sysend // format not found
2788 || sysfmt->second.count(cmd) == 0 // this command not found
2790 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2796 case RC_EDITOR_ALTERNATIVES: {
2797 Alternatives::const_iterator it = editor_alternatives.begin();
2798 Alternatives::const_iterator const en = editor_alternatives.end();
2799 Alternatives::const_iterator const sysend =
2800 system_lyxrc.editor_alternatives.end();
2801 for (; it != en; ++it) {
2802 string const & fmt = it->first;
2803 CommandSet const & cmd = it->second;
2804 CommandSet::const_iterator sit = cmd.begin();
2805 CommandSet::const_iterator const sen = cmd.end();
2806 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2807 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2808 system_lyxrc.editor_alternatives.find(fmt);
2809 for (; sit != sen; ++sit) {
2810 string const & cmd = *sit;
2811 if (ignore_system_lyxrc
2812 || sysfmt == sysend // format not found
2813 || sysfmt->second.count(cmd) == 0 // this command not found
2815 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2821 case RC_DEFAULT_OTF_VIEW_FORMAT:
2822 if ((ignore_system_lyxrc ||
2823 default_otf_view_format != system_lyxrc.default_otf_view_format)
2824 && !default_otf_view_format.empty()) {
2825 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2829 case RC_DEFAULT_VIEW_FORMAT:
2830 if (ignore_system_lyxrc ||
2831 default_view_format != system_lyxrc.default_view_format) {
2832 os << "\\default_view_format " << default_view_format << '\n';
2842 << "# CONVERTERS SECTION ##########################\n"
2846 // Look for new converters
2847 for (Converters::const_iterator cit = theConverters().begin();
2848 cit != theConverters().end(); ++cit) {
2849 Converter const * converter =
2850 theSystemConverters().getConverter(cit->from(),
2853 converter->command() != cit->command() ||
2854 converter->flags() != cit->flags())
2855 os << "\\converter \"" << cit->from() << "\" \""
2856 << cit->to() << "\" \""
2857 << escapeCommand(cit->command()) << "\" \""
2858 << cit->flags() << "\"\n";
2861 // New/modifed converters
2862 for (Converters::const_iterator cit = theSystemConverters().begin();
2863 cit != theSystemConverters().end(); ++cit)
2864 if (!theConverters().getConverter(cit->from(), cit->to()))
2865 os << "\\converter \"" << cit->from()
2866 << "\" \"" << cit->to() << "\" \"\" \"\"\n";
2873 << "# COPIERS SECTION ##########################\n"
2876 // Look for new movers
2877 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2878 Movers::const_iterator const sysend = theSystemMovers().end();
2879 Movers::const_iterator it = theMovers().begin();
2880 Movers::const_iterator end = theMovers().end();
2882 for (; it != end; ++it) {
2883 Movers::const_iterator const sysit =
2884 find_if(sysbegin, sysend, SameMover(*it));
2885 if (sysit == sysend) {
2886 string const & fmt = it->first;
2887 string const & command =
2888 it->second.command();
2890 os << "\\copier " << fmt
2891 << " \"" << escapeCommand(command) << "\"\n";
2897 // We don't actually delete SpecialisedMover(s) from the
2898 // map, just clear their 'command', so there's no need
2899 // to test for anything else.
2906 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2908 // Why the switch you might ask. It is a trick to ensure that all
2909 // the elements in the LyXRCTags enum is handled. As you can see
2910 // there are no breaks at all. So it is just a huge fall-through.
2911 // The nice thing is that we will get a warning from the compiler
2912 // if we forget an element.
2913 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2915 case LyXRC::RC_LAST:
2916 case LyXRC::RC_ACCEPT_COMPOUND:
2917 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2918 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2919 case LyXRC::RC_ALT_LANG:
2920 case LyXRC::RC_PLAINTEXT_LINELEN:
2921 case LyXRC::RC_AUTOCORRECTION_MATH:
2922 case LyXRC::RC_AUTOREGIONDELETE:
2923 case LyXRC::RC_AUTORESET_OPTIONS:
2924 case LyXRC::RC_AUTOSAVE:
2925 case LyXRC::RC_AUTO_NUMBER:
2926 case LyXRC::RC_BACKUPDIR_PATH:
2927 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2928 case LyXRC::RC_BIBTEX_COMMAND:
2929 case LyXRC::RC_BINDFILE:
2930 case LyXRC::RC_CHECKLASTFILES:
2931 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2932 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2933 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2934 case LyXRC::RC_COMPLETION_INLINE_MATH:
2935 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2936 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2937 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2938 case LyXRC::RC_COMPLETION_POPUP_MATH:
2939 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2940 case LyXRC::RC_COMPLETION_MINLENGTH:
2941 case LyXRC::RC_USELASTFILEPOS:
2942 case LyXRC::RC_LOADSESSION:
2943 case LyXRC::RC_CHKTEX_COMMAND:
2944 case LyXRC::RC_CONVERTER:
2945 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2946 case LyXRC::RC_COPIER:
2947 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2948 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2949 case LyXRC::RC_DATE_INSERT_FORMAT:
2950 case LyXRC::RC_GUI_LANGUAGE:
2951 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2952 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2953 case LyXRC::RC_DEFFILE:
2954 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2955 case LyXRC::RC_DISPLAY_GRAPHICS:
2956 case LyXRC::RC_DOCUMENTPATH:
2957 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2958 FileName path(lyxrc_new.document_path);
2959 if (path.exists() && path.isDirectory())
2960 package().document_dir() = FileName(lyxrc.document_path);
2962 case LyXRC::RC_EDITOR_ALTERNATIVES:
2963 case LyXRC::RC_ESC_CHARS:
2964 case LyXRC::RC_EXAMPLEPATH:
2965 case LyXRC::RC_FONT_ENCODING:
2966 case LyXRC::RC_FILEFORMAT:
2967 case LyXRC::RC_GROUP_LAYOUTS:
2968 case LyXRC::RC_HUNSPELLDIR_PATH:
2969 case LyXRC::RC_ICON_SET:
2970 case LyXRC::RC_INDEX_ALTERNATIVES:
2971 case LyXRC::RC_INDEX_COMMAND:
2972 case LyXRC::RC_JBIBTEX_COMMAND:
2973 case LyXRC::RC_JINDEX_COMMAND:
2974 case LyXRC::RC_NOMENCL_COMMAND:
2975 case LyXRC::RC_INPUT:
2976 case LyXRC::RC_KBMAP:
2977 case LyXRC::RC_KBMAP_PRIMARY:
2978 case LyXRC::RC_KBMAP_SECONDARY:
2979 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2980 case LyXRC::RC_LANGUAGE_AUTO_END:
2981 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2982 case LyXRC::RC_LANGUAGE_COMMAND_END:
2983 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2984 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2985 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2986 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2987 case LyXRC::RC_LYXRCFORMAT:
2988 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2989 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
2990 case LyXRC::RC_MACRO_EDIT_STYLE:
2991 case LyXRC::RC_MAKE_BACKUP:
2992 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2993 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2994 case LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE:
2995 case LyXRC::RC_NUMLASTFILES:
2996 case LyXRC::RC_PARAGRAPH_MARKERS:
2997 case LyXRC::RC_PATH_PREFIX:
2998 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2999 prependEnvPath("PATH", lyxrc_new.path_prefix);
3000 // Resets python path
3001 support::os::python(true);
3003 case LyXRC::RC_PREVIEW:
3004 case LyXRC::RC_PREVIEW_HASHED_LABELS:
3005 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
3006 case LyXRC::RC_PRINTCOLLCOPIESFLAG:
3007 case LyXRC::RC_PRINTCOPIESFLAG:
3008 case LyXRC::RC_PRINTER:
3009 case LyXRC::RC_PRINTEVENPAGEFLAG:
3010 case LyXRC::RC_PRINTEXSTRAOPTIONS:
3011 case LyXRC::RC_PRINTFILEEXTENSION:
3012 case LyXRC::RC_PRINTLANDSCAPEFLAG:
3013 case LyXRC::RC_PRINTODDPAGEFLAG:
3014 case LyXRC::RC_PRINTPAGERANGEFLAG:
3015 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
3016 case LyXRC::RC_PRINTPAPERFLAG:
3017 case LyXRC::RC_PRINTREVERSEFLAG:
3018 case LyXRC::RC_PRINTSPOOL_COMMAND:
3019 case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
3020 case LyXRC::RC_PRINTTOFILE:
3021 case LyXRC::RC_PRINTTOPRINTER:
3022 case LyXRC::RC_PRINT_ADAPTOUTPUT:
3023 case LyXRC::RC_PRINT_COMMAND:
3024 case LyXRC::RC_SAVE_COMPRESSED:
3025 case LyXRC::RC_SCREEN_DPI:
3026 case LyXRC::RC_SCREEN_FONT_ROMAN:
3027 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
3028 case LyXRC::RC_SCREEN_FONT_SANS:
3029 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
3030 case LyXRC::RC_SCREEN_FONT_SCALABLE:
3031 case LyXRC::RC_SCREEN_FONT_SIZES:
3032 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
3033 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3034 case LyXRC::RC_GEOMETRY_SESSION:
3035 case LyXRC::RC_SCREEN_ZOOM:
3036 case LyXRC::RC_SERVERPIPE:
3037 case LyXRC::RC_SET_COLOR:
3038 case LyXRC::RC_SHOW_BANNER:
3039 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
3040 case LyXRC::RC_SPELLCHECKER:
3041 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
3043 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
3044 case LyXRC::RC_SPELLCHECK_NOTES:
3045 case LyXRC::RC_SPLITINDEX_COMMAND:
3046 case LyXRC::RC_TEMPDIRPATH:
3047 case LyXRC::RC_TEMPLATEPATH:
3048 case LyXRC::RC_TEX_ALLOWS_SPACES:
3049 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
3050 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
3051 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
3053 case LyXRC::RC_TEXINPUTS_PREFIX:
3054 case LyXRC::RC_THESAURUSDIRPATH:
3055 case LyXRC::RC_UIFILE:
3056 case LyXRC::RC_USER_EMAIL:
3057 case LyXRC::RC_USER_NAME:
3058 case LyXRC::RC_USE_CONVERTER_CACHE:
3059 case LyXRC::RC_USE_SYSTEM_COLORS:
3060 case LyXRC::RC_USE_TOOLTIP:
3061 case LyXRC::RC_USE_PIXMAP_CACHE:
3062 case LyXRC::RC_USE_QIMAGE:
3063 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
3064 case LyXRC::RC_VIEWDVI_PAPEROPTION:
3065 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
3066 case LyXRC::RC_SINGLE_INSTANCE:
3067 case LyXRC::RC_SORT_LAYOUTS:
3068 case LyXRC::RC_FULL_SCREEN_LIMIT:
3069 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
3070 case LyXRC::RC_FULL_SCREEN_MENUBAR:
3071 case LyXRC::RC_FULL_SCREEN_STATUSBAR:
3072 case LyXRC::RC_FULL_SCREEN_TABBAR:
3073 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
3074 case LyXRC::RC_FULL_SCREEN_WIDTH:
3075 case LyXRC::RC_VISUAL_CURSOR:
3076 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3077 case LyXRC::RC_VIEWER:
3078 case LyXRC::RC_VIEWER_ALTERNATIVES:
3079 case LyXRC::RC_FORWARD_SEARCH_DVI:
3080 case LyXRC::RC_FORWARD_SEARCH_PDF:
3081 case LyXRC::RC_EXPORT_OVERWRITE:
3082 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
3083 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
3084 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3085 case LyXRC::RC_CURSOR_WIDTH:
3092 string const LyXRC::getDescription(LyXRCTags tag)
3097 case RC_ACCEPT_COMPOUND:
3098 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3102 str = _("Specify an alternate language. The default is to use the language of the document.");
3105 case RC_PLAINTEXT_LINELEN:
3106 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.");
3109 case RC_AUTOREGIONDELETE:
3110 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3113 case RC_AUTORESET_OPTIONS:
3114 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3118 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3121 case RC_AUTO_NUMBER:
3124 case RC_BACKUPDIR_PATH:
3125 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.");
3128 case RC_BIBTEX_COMMAND:
3129 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3132 case RC_JBIBTEX_COMMAND:
3133 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3137 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3140 case RC_CHECKLASTFILES:
3141 str = _("Select to check whether the lastfiles still exist.");
3144 case RC_CHKTEX_COMMAND:
3145 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3154 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3155 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.");
3158 case RC_CURSOR_WIDTH:
3159 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3162 case RC_SCROLL_BELOW_DOCUMENT:
3163 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");
3166 case RC_MAC_DONTSWAP_CTRL_META:
3167 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3170 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3171 str = _("Use the Mac OS X conventions for cursor movement");
3174 case RC_SHOW_MACRO_LABEL:
3175 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3178 case RC_DATE_INSERT_FORMAT:
3179 //xgettext:no-c-format
3180 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3184 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3187 case RC_DEFAULT_OTF_VIEW_FORMAT:
3188 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3191 case RC_DEFAULT_VIEW_FORMAT:
3192 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3195 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3196 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3199 case RC_DISPLAY_GRAPHICS:
3200 str = _("Select how LyX will display any graphics.");
3203 case RC_DOCUMENTPATH:
3204 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3208 str = _("Specify additional chars that can be part of a word.");
3211 case RC_EXAMPLEPATH:
3212 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3215 case RC_FONT_ENCODING:
3216 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3222 case RC_INDEX_COMMAND:
3223 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\".");
3226 case RC_JINDEX_COMMAND:
3227 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3230 case RC_NOMENCL_COMMAND:
3231 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3238 case RC_KBMAP_PRIMARY:
3239 case RC_KBMAP_SECONDARY:
3240 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.");
3243 case RC_LANGUAGE_AUTO_BEGIN:
3244 str = _("Select if a language switching command is needed at the beginning of the document.");
3247 case RC_LANGUAGE_AUTO_END:
3248 str = _("Select if a language switching command is needed at the end of the document.");
3251 case RC_LANGUAGE_COMMAND_BEGIN:
3252 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.");
3255 case RC_LANGUAGE_COMMAND_END:
3256 str = _("The LaTeX command for changing back to the language of the document.");
3259 case RC_LANGUAGE_COMMAND_LOCAL:
3260 str = _("The LaTeX command for local changing of the language.");
3263 case RC_LANGUAGE_GLOBAL_OPTIONS:
3264 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3267 case RC_LANGUAGE_CUSTOM_PACKAGE:
3268 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3271 case RC_LANGUAGE_PACKAGE_SELECTION:
3272 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3275 case RC_USELASTFILEPOS:
3276 str = _("De-select if you do not want LyX to scroll to saved position.");
3279 case RC_LOADSESSION:
3280 str = _("De-select to prevent loading files opened from the last LyX session.");
3283 case RC_MAKE_BACKUP:
3284 str = _("De-select if you don't want LyX to create backup files.");
3287 case RC_MARK_FOREIGN_LANGUAGE:
3288 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3291 case RC_MOUSE_WHEEL_SPEED:
3292 str = bformat(_("The scrolling speed of the mouse wheel."),
3296 case RC_COMPLETION_POPUP_DELAY:
3297 str = _("The completion popup delay.");
3300 case RC_COMPLETION_POPUP_MATH:
3301 str = _("Select to display the completion popup in math mode.");
3304 case RC_COMPLETION_POPUP_TEXT:
3305 str = _("Select to display the completion popup in text mode.");
3308 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3309 str = _("Show the completion popup without delay after non-unique completion attempt.");
3312 case RC_COMPLETION_POPUP_TEXT:
3313 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3316 case RC_COMPLETION_POPUP_DELAY:
3317 str = _("The inline completion delay.");
3320 case RC_COMPLETION_INLINE_MATH:
3321 str = _("Select to display the inline completion in math mode.");
3324 case RC_COMPLETION_INLINE_TEXT:
3325 str = _("Select to display the inline completion in text mode.");
3328 case RC_COMPLETION_INLINE_DOTS:
3329 str = _("Use \"...\" to shorten long completions.");
3332 case RC_AUTOCORRECTION_MATH:
3333 str = _("Allow TeXMacs shorthand, like => converting to \\Rightarrow.");
3336 case RC_NUMLASTFILES:
3337 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3341 case RC_PATH_PREFIX:
3342 str = _("Specify those directories which should be "
3343 "prepended to the PATH environment variable.\n"
3344 "Use the OS native format.");
3348 str = _("Shows a typeset preview of things such as math");
3351 case RC_PREVIEW_HASHED_LABELS:
3352 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3355 case RC_PREVIEW_SCALE_FACTOR:
3356 str = _("Scale the preview size to suit.");
3359 case RC_PRINTCOLLCOPIESFLAG:
3360 str = _("The option for specifying whether the copies should be collated.");
3363 case RC_PRINTCOPIESFLAG:
3364 str = _("The option for specifying the number of copies to print.");
3368 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
3371 case RC_PRINTEVENPAGEFLAG:
3372 str = _("The option to print only even pages.");
3375 case RC_PRINTEXSTRAOPTIONS:
3376 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
3379 case RC_PRINTFILEEXTENSION:
3380 str = _("Extension of printer program output file. Usually \".ps\".");
3383 case RC_PRINTLANDSCAPEFLAG:
3384 str = _("The option to print out in landscape.");
3387 case RC_PRINTODDPAGEFLAG:
3388 str = _("The option to print only odd pages.");
3391 case RC_PRINTPAGERANGEFLAG:
3392 str = _("The option for specifying a comma-separated list of pages to print.");
3395 case RC_PRINTPAPERDIMENSIONFLAG:
3396 str = _("Option to specify the dimensions of the print paper.");
3399 case RC_PRINTPAPERFLAG:
3400 str = _("The option to specify paper type.");
3403 case RC_PRINTREVERSEFLAG:
3404 str = _("The option to reverse the order of the pages printed.");
3407 case RC_PRINTSPOOL_COMMAND:
3408 str = _("When set, this printer option automatically prints to a file and then calls a separate print spooling program on that file with the given name and arguments.");
3411 case RC_PRINTSPOOL_PRINTERPREFIX:
3412 str = _("If you specify a printer name in the print dialog, the following argument is prepended along with the printer name after the spool command.");
3415 case RC_PRINTTOFILE:
3416 str = _("Option to pass to the print program to print to a file.");
3419 case RC_PRINTTOPRINTER:
3420 str = _("Option to pass to the print program to print on a specific printer.");
3423 case RC_PRINT_ADAPTOUTPUT:
3424 str = _("Select for LyX to pass the name of the destination printer to your print command.");
3427 case RC_PRINT_COMMAND:
3428 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
3431 case RC_VISUAL_CURSOR:
3432 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3435 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3436 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).");
3440 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3443 case RC_SCREEN_FONT_ROMAN:
3444 case RC_SCREEN_FONT_SANS:
3445 case RC_SCREEN_FONT_TYPEWRITER:
3446 str = _("The screen fonts used to display the text while editing.");
3449 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3450 case RC_SCREEN_FONT_SANS_FOUNDRY:
3451 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3454 case RC_SCREEN_FONT_SCALABLE:
3455 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.");
3458 case RC_SCREEN_FONT_SIZES:
3459 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3462 case RC_SCREEN_ZOOM:
3463 //xgettext:no-c-format
3464 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3467 case RC_GEOMETRY_SESSION:
3468 str = _("Allow session manager to save and restore windows geometry.");
3472 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3478 case RC_SHOW_BANNER:
3479 str = _("De-select if you don't want the startup banner.");
3482 case RC_TEMPDIRPATH:
3483 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3486 case RC_THESAURUSDIRPATH:
3487 str = _("This is the place where the files of the thesaurus library reside.");
3490 case RC_TEMPLATEPATH:
3491 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3494 case RC_TEX_ALLOWS_SPACES:
3497 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3500 case RC_TEXINPUTS_PREFIX:
3501 str = _("Specify those directories which should be "
3502 "prepended to the TEXINPUTS environment variable.\n"
3503 "A '.' represents the current document directory. "
3504 "Use the OS native format.");
3508 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3517 case RC_USE_USE_SYSTEM_COLORS:
3518 str = _("Enable use the system colors for some things like main window background and selection.");
3521 case RC_USE_TOOLTIP:
3522 str = _("Enable the automatic appearance of tool tips in the work area.");
3525 case RC_USE_PIXMAP_CACHE:
3526 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3529 case RC_VIEWDVI_PAPEROPTION:
3530 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3545 // The global instance
3548 // The global copy of the system lyxrc entries (everything except preferences)