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 = 16; // lasgouttes: remove \\force_paint_single_char
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_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
146 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
147 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
148 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
149 { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS },
150 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
151 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
152 { "\\preview", LyXRC::RC_PREVIEW },
153 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
154 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
155 { "\\print_adapt_output", LyXRC::RC_PRINT_ADAPTOUTPUT },
156 { "\\print_collcopies_flag", LyXRC::RC_PRINTCOLLCOPIESFLAG },
157 { "\\print_command", LyXRC::RC_PRINT_COMMAND },
158 { "\\print_copies_flag", LyXRC::RC_PRINTCOPIESFLAG },
159 { "\\print_evenpage_flag", LyXRC::RC_PRINTEVENPAGEFLAG },
160 { "\\print_extra_options", LyXRC::RC_PRINTEXSTRAOPTIONS },
161 { "\\print_file_extension", LyXRC::RC_PRINTFILEEXTENSION },
162 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
163 { "\\print_oddpage_flag", LyXRC::RC_PRINTODDPAGEFLAG },
164 { "\\print_pagerange_flag", LyXRC::RC_PRINTPAGERANGEFLAG },
165 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
166 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
167 { "\\print_reverse_flag", LyXRC::RC_PRINTREVERSEFLAG },
168 { "\\print_spool_command", LyXRC::RC_PRINTSPOOL_COMMAND },
169 { "\\print_spool_printerprefix", LyXRC::RC_PRINTSPOOL_PRINTERPREFIX },
170 { "\\print_to_file", LyXRC::RC_PRINTTOFILE },
171 { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER },
172 { "\\printer", LyXRC::RC_PRINTER },
173 { "\\rtl", LyXRC::RC_RTL_SUPPORT },
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;
317 visual_cursor = false;
319 mark_foreign_language = true;
320 language_auto_begin = true;
321 language_auto_end = true;
322 language_global_options = true;
323 language_package_selection = LP_AUTO;
324 language_custom_package = "\\usepackage{babel}";
325 language_command_begin = "\\selectlanguage{$$lang}";
326 language_command_local = "\\foreignlanguage{$$lang}{";
327 sort_layouts = false;
328 group_layouts = true;
329 gui_language = "auto";
331 windows_style_tex_paths = false;
332 tex_allows_spaces = false;
333 date_insert_format = "%x";
334 cursor_follows_scrollbar = false;
335 scroll_below_document = false;
336 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
337 paragraph_markers = false;
338 mac_dontswap_ctrl_meta = false;
339 mac_like_cursor_movement = false;
340 macro_edit_style = MACRO_EDIT_INLINE_BOX;
341 dialogs_iconify_with_main = false;
342 preview = PREVIEW_OFF;
343 preview_hashed_labels = false;
344 preview_scale_factor = 1.0;
345 use_converter_cache = true;
346 use_system_colors = false;
348 use_pixmap_cache = false;
350 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
351 user_name = to_utf8(support::user_name());
352 user_email = to_utf8(support::user_email());
353 open_buffers_in_tabs = true;
354 single_close_tab_button = false;
355 single_instance = true;
356 forward_search_dvi = string();
357 forward_search_pdf = string();
358 export_overwrite = NO_FILES;
360 // Fullscreen settings
361 full_screen_limit = false;
362 full_screen_toolbars = true;
363 full_screen_tabbar = true;
364 full_screen_menubar = true;
365 full_screen_scrollbar = true;
366 full_screen_width = 700;
368 completion_cursor_text = true;
369 completion_popup_math = true;
370 completion_popup_text = false;
371 completion_popup_delay = 2.0;
372 completion_popup_after_complete = true;
373 autocorrection_math = false;
374 completion_inline_math = true;
375 completion_inline_text = false;
376 completion_inline_dots = -1;
377 completion_inline_delay = 0.2;
378 default_decimal_point = ".";
379 default_length_unit = Length::CM;
381 close_buffer_with_last_view = "yes";
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_RTL_SUPPORT:
1046 lexrc >> rtl_support;
1048 case RC_VISUAL_CURSOR:
1049 lexrc >> visual_cursor;
1051 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
1052 lexrc >> close_buffer_with_last_view;
1054 case RC_AUTO_NUMBER:
1055 lexrc >> auto_number;
1057 case RC_MARK_FOREIGN_LANGUAGE:
1058 lexrc >> mark_foreign_language;
1062 string fmt, command;
1064 fmt = lexrc.getString();
1065 if (lexrc.next(true))
1066 command = lexrc.getString();
1067 setMover(fmt, command);
1071 case RC_CONVERTER: {
1072 string from, to, command, flags;
1074 from = lexrc.getString();
1076 to = lexrc.getString();
1077 if (lexrc.next(true))
1078 command = lexrc.getString();
1080 flags = lexrc.getString();
1081 if (command.empty())
1082 theConverters().erase(from, to);
1084 theConverters().add(from, to, command, flags);
1087 // compatibility with versions older than 1.4.0 only
1089 string format, command;
1090 lexrc >> format >> command;
1091 formats.setViewer(format, command);
1094 case RC_FILEFORMAT: {
1096 string format, extensions, prettyname, shortcut;
1097 if (!(lexrc >> format >> extensions))
1099 if (ok && lexrc.next(true))
1100 prettyname = lexrc.getString();
1104 if(!(lexrc >> shortcut))
1106 string viewer, editor;
1107 if (ok && lexrc.next(true))
1108 viewer = lexrc.getString();
1111 if (ok && lexrc.next(true))
1112 editor = lexrc.getString();
1116 if (!(lexrc >> flags >> mime))
1118 int flgs = Format::none;
1119 while (!flags.empty()) {
1121 flags = split(flags, flag, ',');
1122 if (flag == "document")
1123 flgs |= Format::document;
1124 else if (flag == "vector")
1125 flgs |= Format::vector;
1126 else if (flag == "zipped=native")
1127 flgs |= Format::zipped_native;
1128 else if (flag == "menu=export")
1129 flgs |= Format::export_menu;
1131 LYXERR0("Ignoring unknown flag `"
1132 << flag << "' for format `"
1136 LYXERR0("Syntax error in format " << format);
1137 else if (prettyname.empty()) {
1138 if (theConverters().formatIsUsed(format))
1139 LYXERR0("Can't delete format " << format);
1141 formats.erase(format);
1143 formats.add(format, extensions, prettyname,
1144 shortcut, viewer, editor, mime, flgs);
1148 case RC_VIEWER_ALTERNATIVES: {
1149 string format, command;
1152 viewer_alternatives[format].insert(command);
1155 case RC_EDITOR_ALTERNATIVES: {
1156 string format, command;
1159 editor_alternatives[format].insert(command);
1163 case RC_DEFAULT_OTF_VIEW_FORMAT:
1164 lexrc >> default_otf_view_format;
1167 case RC_DEFAULT_VIEW_FORMAT:
1168 lexrc >> default_view_format;
1171 case RC_GUI_LANGUAGE:
1172 lexrc >> gui_language;
1175 case RC_SHOW_BANNER:
1176 lexrc >> show_banner;
1181 string const tmp = lexrc.getString();
1182 if (tmp == "true" || tmp == "on")
1183 preview = PREVIEW_ON;
1184 else if (tmp == "no_math")
1185 preview = PREVIEW_NO_MATH;
1187 preview = PREVIEW_OFF;
1188 if (tmp != "false" && tmp != "off")
1189 LYXERR0("Unrecognized preview status \""
1195 case RC_PREVIEW_HASHED_LABELS:
1196 lexrc >> preview_hashed_labels;
1199 case RC_PREVIEW_SCALE_FACTOR:
1200 lexrc >> preview_scale_factor;
1207 lexrc >> user_email;
1210 case RC_PATH_PREFIX:
1211 lexrc >> path_prefix;
1214 case RC_USE_CONVERTER_CACHE:
1215 lexrc >> use_converter_cache;
1217 case RC_CONVERTER_CACHE_MAXAGE:
1218 lexrc >> converter_cache_maxage;
1221 case RC_SORT_LAYOUTS:
1222 lexrc >> sort_layouts;
1224 case RC_GROUP_LAYOUTS:
1225 lexrc >> group_layouts;
1227 case RC_FULL_SCREEN_LIMIT:
1228 lexrc >> full_screen_limit;
1230 case RC_FULL_SCREEN_TOOLBARS:
1231 lexrc >> full_screen_toolbars;
1233 case RC_FULL_SCREEN_SCROLLBAR:
1234 lexrc >> full_screen_scrollbar;
1236 case RC_FULL_SCREEN_STATUSBAR:
1237 lexrc >> full_screen_statusbar;
1239 case RC_FULL_SCREEN_TABBAR:
1240 lexrc >> full_screen_tabbar;
1242 case RC_FULL_SCREEN_MENUBAR:
1243 lexrc >> full_screen_menubar;
1245 case RC_FULL_SCREEN_WIDTH:
1246 lexrc >> full_screen_width;
1248 case RC_OPEN_BUFFERS_IN_TABS:
1249 lexrc >> open_buffers_in_tabs;
1251 case RC_SINGLE_CLOSE_TAB_BUTTON:
1252 lexrc >> single_close_tab_button;
1254 case RC_SINGLE_INSTANCE:
1255 lexrc >> single_instance;
1256 if (run_mode == PREFERRED)
1257 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1259 case RC_FORWARD_SEARCH_DVI:
1260 if (lexrc.next(true))
1261 forward_search_dvi = lexrc.getString();
1263 case RC_FORWARD_SEARCH_PDF:
1264 if (lexrc.next(true))
1265 forward_search_pdf = lexrc.getString();
1267 case RC_EXPORT_OVERWRITE:
1269 string const tmp = lexrc.getString();
1270 if (tmp == "all" || tmp == "true")
1271 export_overwrite = ALL_FILES;
1272 else if (tmp == "main")
1273 export_overwrite = MAIN_FILE;
1275 export_overwrite = NO_FILES;
1276 if (tmp != "ask" && tmp != "false")
1277 LYXERR0("Unrecognized export_overwrite status \""
1282 case RC_SCROLL_WHEEL_ZOOM:
1284 string const tmp = lexrc.getString();
1286 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1287 else if (tmp == "shift")
1288 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1289 else if (tmp == "alt")
1290 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1292 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1293 if (tmp != "off" && tmp != "false")
1294 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1301 break; // this is just a dummy
1304 // This is triggered the first time through the loop unless
1305 // we hit a format tag.
1306 if (check_format && format != LYXRC_FILEFORMAT)
1307 return FormatMismatch;
1310 /// Update converters data-structures
1311 theConverters().update(formats);
1312 theConverters().buildGraph();
1318 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1320 ofstream ofs(filename.toFilesystemEncoding().c_str());
1322 write(ofs, ignore_system_lyxrc);
1326 void LyXRC::print() const
1328 if (lyxerr.debugging())
1329 write(lyxerr, false);
1337 typedef pair<string, SpecialisedMover> Data;
1339 SameMover(Data const & comparison)
1340 : comparison_(comparison) {}
1342 bool operator()(Data const & data) const
1344 return data.first == comparison_.first &&
1345 data.second.command() == comparison_.second.command();
1355 // Escape \ and " so that LyXLex can read the string later
1356 string escapeCommand(string const & str) {
1357 return subst(subst(str , "\\", "\\\\"),
1364 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1366 LyXRCTags tag = RC_LAST;
1368 if (!name.empty()) {
1369 for (int i = 0; i != lyxrcCount; ++i)
1370 if ("\\" + name == lyxrcTags[i].tag)
1371 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1375 os << "# LyX " << lyx_version
1376 << " generated this file. If you want to make your own\n"
1377 << "# modifications you should do them from inside LyX and save.\n\n"
1378 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1380 // Why the switch you might ask. It is a trick to ensure that all
1381 // the elements in the LyXRCTags enum are handled. As you can see
1382 // there are no breaks at all. So it is just a huge fall-through.
1383 // The nice thing is that we will get a warning from the compiler
1384 // if we forget an element.
1388 // input/include files are not done here
1389 case RC_LYXRCFORMAT:
1391 if (ignore_system_lyxrc ||
1392 bind_file != system_lyxrc.bind_file) {
1393 string const path = os::external_path(bind_file);
1394 os << "\\bind_file \"" << path << "\"\n";
1400 if (ignore_system_lyxrc ||
1401 def_file != system_lyxrc.def_file) {
1402 string const path = os::external_path(def_file);
1403 os << "\\def_file \"" << path << "\"\n";
1412 << "# MISC SECTION ######################################\n"
1414 // bind files are not done here.
1416 case RC_PATH_PREFIX:
1417 if (ignore_system_lyxrc ||
1418 path_prefix != system_lyxrc.path_prefix) {
1419 os << "\\path_prefix \"" << path_prefix << "\"\n";
1424 if (ignore_system_lyxrc ||
1425 ui_file != system_lyxrc.ui_file) {
1426 string const path = os::external_path(ui_file);
1427 os << "\\ui_file \"" << path << "\"\n";
1431 case RC_AUTOREGIONDELETE:
1432 if (ignore_system_lyxrc ||
1433 auto_region_delete != system_lyxrc.auto_region_delete) {
1434 os << "# Set to false to inhibit automatic replacement of\n"
1435 << "# the current selection.\n"
1436 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1441 case RC_AUTORESET_OPTIONS:
1442 if (ignore_system_lyxrc ||
1443 auto_reset_options != system_lyxrc.auto_reset_options) {
1444 os << "# Set to false to inhibit automatic reset of\n"
1445 << "# the class options to defaults on class change.\n"
1446 << "\\auto_reset_options "
1447 << convert<string>(auto_reset_options)
1453 if (ignore_system_lyxrc ||
1454 autosave != system_lyxrc.autosave) {
1455 os << "# The time interval between auto-saves in seconds.\n"
1456 << "\\autosave " << autosave << '\n';
1460 case RC_DISPLAY_GRAPHICS:
1461 if (ignore_system_lyxrc ||
1462 display_graphics != system_lyxrc.display_graphics) {
1463 os << "# Display graphics within LyX\n"
1465 << "\\display_graphics "
1466 << (display_graphics ? "true" : "false")
1471 case RC_SORT_LAYOUTS:
1472 if (ignore_system_lyxrc ||
1473 sort_layouts != system_lyxrc.sort_layouts) {
1474 os << "# Sort layouts alphabetically.\n"
1475 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1479 case RC_GROUP_LAYOUTS:
1480 if (ignore_system_lyxrc ||
1481 group_layouts != system_lyxrc.group_layouts) {
1482 os << "# Group layouts by their category.\n"
1483 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1487 case RC_VIEWDVI_PAPEROPTION:
1488 if (ignore_system_lyxrc ||
1489 view_dvi_paper_option
1490 != system_lyxrc.view_dvi_paper_option) {
1491 os << "# Options used to specify paper size to the\n"
1492 << "# view_dvi_command (e.g. -paper)\n"
1493 << "\\view_dvi_paper_option \""
1494 << view_dvi_paper_option << "\"\n";
1498 case RC_CHKTEX_COMMAND:
1499 if (ignore_system_lyxrc ||
1500 chktex_command != system_lyxrc.chktex_command) {
1501 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1505 case RC_BIBTEX_ALTERNATIVES: {
1506 CommandSet::const_iterator it = bibtex_alternatives.begin();
1507 CommandSet::const_iterator end = bibtex_alternatives.end();
1508 for ( ; it != end; ++it) {
1509 if (ignore_system_lyxrc
1510 || !system_lyxrc.bibtex_alternatives.count(*it))
1511 os << "\\bibtex_alternatives \""
1517 case RC_BIBTEX_COMMAND:
1518 if (ignore_system_lyxrc ||
1519 bibtex_command != system_lyxrc.bibtex_command) {
1520 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1524 case RC_JBIBTEX_COMMAND:
1525 if (ignore_system_lyxrc ||
1526 jbibtex_command != system_lyxrc.jbibtex_command) {
1527 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1531 case RC_INDEX_ALTERNATIVES: {
1532 CommandSet::const_iterator it = index_alternatives.begin();
1533 CommandSet::const_iterator end = index_alternatives.end();
1534 for ( ; it != end; ++it) {
1535 if (ignore_system_lyxrc
1536 || !system_lyxrc.index_alternatives.count(*it))
1537 os << "\\index_alternatives \""
1543 case RC_INDEX_COMMAND:
1544 if (ignore_system_lyxrc ||
1545 index_command != system_lyxrc.index_command) {
1546 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1550 case RC_JINDEX_COMMAND:
1551 if (ignore_system_lyxrc ||
1552 jindex_command != system_lyxrc.jindex_command) {
1553 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1557 case RC_SPLITINDEX_COMMAND:
1558 if (ignore_system_lyxrc ||
1559 splitindex_command != system_lyxrc.splitindex_command) {
1560 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1564 case RC_NOMENCL_COMMAND:
1565 if (ignore_system_lyxrc ||
1566 nomencl_command != system_lyxrc.nomencl_command) {
1567 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1571 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1572 // Don't write this setting to the preferences file,
1573 // but allow temporary changes (bug 7557).
1574 if (ignore_system_lyxrc) {
1575 os << "\\tex_expects_windows_paths "
1576 << convert<string>(windows_style_tex_paths) << '\n';
1580 case RC_TEX_ALLOWS_SPACES:
1581 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1582 os << "\\tex_allows_spaces "
1583 << convert<string>(tex_allows_spaces) << '\n';
1588 if (ignore_system_lyxrc ||
1589 use_kbmap != system_lyxrc.use_kbmap) {
1590 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1594 case RC_KBMAP_PRIMARY:
1595 if (ignore_system_lyxrc ||
1596 primary_kbmap != system_lyxrc.primary_kbmap) {
1597 string const path = os::external_path(primary_kbmap);
1598 os << "\\kbmap_primary \"" << path << "\"\n";
1602 case RC_KBMAP_SECONDARY:
1603 if (ignore_system_lyxrc ||
1604 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1605 string const path = os::external_path(secondary_kbmap);
1606 os << "\\kbmap_secondary \"" << path << "\"\n";
1611 if (ignore_system_lyxrc ||
1612 lyxpipes != system_lyxrc.lyxpipes) {
1613 string const path = os::external_path(lyxpipes);
1614 os << "\\serverpipe \"" << path << "\"\n";
1618 case RC_DATE_INSERT_FORMAT:
1619 if (ignore_system_lyxrc ||
1620 date_insert_format != system_lyxrc.date_insert_format) {
1621 os << "\\date_insert_format \"" << date_insert_format
1628 os << "\\user_name \"" << user_name << "\"\n";
1633 os << "\\user_email \"" << user_email << "\"\n";
1637 case RC_SHOW_BANNER:
1638 if (ignore_system_lyxrc ||
1639 show_banner != system_lyxrc.show_banner) {
1640 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1646 if (ignore_system_lyxrc ||
1647 preview != system_lyxrc.preview) {
1653 case PREVIEW_NO_MATH:
1660 os << "\\preview " << status << '\n';
1665 case RC_PREVIEW_HASHED_LABELS:
1666 if (ignore_system_lyxrc ||
1667 preview_hashed_labels !=
1668 system_lyxrc.preview_hashed_labels) {
1669 os << "\\preview_hashed_labels "
1670 << convert<string>(preview_hashed_labels) << '\n';
1675 case RC_PREVIEW_SCALE_FACTOR:
1676 if (ignore_system_lyxrc ||
1677 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1678 os << "\\preview_scale_factor "
1679 << preview_scale_factor << '\n';
1684 case RC_USE_CONVERTER_CACHE:
1685 if (ignore_system_lyxrc ||
1686 use_converter_cache != system_lyxrc.use_converter_cache) {
1687 os << "\\use_converter_cache "
1688 << convert<string>(use_converter_cache) << '\n';
1693 case RC_CONVERTER_CACHE_MAXAGE:
1694 if (ignore_system_lyxrc ||
1695 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1696 os << "\\converter_cache_maxage "
1697 << converter_cache_maxage << '\n';
1703 << "# SCREEN & FONTS SECTION ############################\n"
1707 if (ignore_system_lyxrc ||
1708 icon_set != system_lyxrc.icon_set) {
1709 os << "\\icon_set \"" << icon_set
1715 case RC_USE_SYSTEM_THEME_ICONS:
1716 if (ignore_system_lyxrc ||
1717 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1718 os << "\\use_system_theme_icons "
1719 << convert<string>(use_system_theme_icons)
1726 if (ignore_system_lyxrc ||
1727 dpi != system_lyxrc.dpi) {
1728 os << "\\screen_dpi " << dpi << '\n';
1732 case RC_SCREEN_ZOOM:
1733 if (ignore_system_lyxrc ||
1734 zoom != system_lyxrc.zoom) {
1735 os << "\\screen_zoom " << zoom << '\n';
1739 case RC_GEOMETRY_SESSION:
1740 if (ignore_system_lyxrc ||
1741 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1742 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1747 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1748 if (ignore_system_lyxrc ||
1749 cursor_follows_scrollbar
1750 != system_lyxrc.cursor_follows_scrollbar) {
1751 os << "\\cursor_follows_scrollbar "
1752 << convert<string>(cursor_follows_scrollbar) << '\n';
1756 case RC_CURSOR_WIDTH:
1757 if (ignore_system_lyxrc ||
1759 != system_lyxrc.cursor_width) {
1760 os << "\\cursor_width "
1761 << cursor_width << '\n';
1765 case RC_SCROLL_BELOW_DOCUMENT:
1766 if (ignore_system_lyxrc ||
1767 scroll_below_document
1768 != system_lyxrc.scroll_below_document) {
1769 os << "\\scroll_below_document "
1770 << convert<string>(scroll_below_document) << '\n';
1774 case RC_PARAGRAPH_MARKERS:
1775 if (ignore_system_lyxrc ||
1777 != system_lyxrc.paragraph_markers) {
1778 os << "\\paragraph_markers "
1779 << convert<string>(paragraph_markers) << '\n';
1783 case RC_MAC_DONTSWAP_CTRL_META:
1784 if (ignore_system_lyxrc ||
1785 mac_dontswap_ctrl_meta
1786 != system_lyxrc.mac_dontswap_ctrl_meta) {
1787 os << "\\mac_dontswap_ctrl_meta "
1788 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1792 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1793 if (ignore_system_lyxrc ||
1794 mac_like_cursor_movement
1795 != system_lyxrc.mac_like_cursor_movement) {
1796 os << "\\mac_like_cursor_movement "
1797 << convert<string>(mac_like_cursor_movement) << '\n';
1801 case RC_MACRO_EDIT_STYLE:
1802 if (ignore_system_lyxrc ||
1804 != system_lyxrc.macro_edit_style) {
1805 os << "\\macro_edit_style ";
1806 switch (macro_edit_style) {
1807 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1808 case MACRO_EDIT_INLINE: os << "1\n"; break;
1809 case MACRO_EDIT_LIST: os << "2\n"; break;
1814 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1815 if (ignore_system_lyxrc ||
1816 dialogs_iconify_with_main
1817 != system_lyxrc.dialogs_iconify_with_main) {
1818 os << "\\dialogs_iconify_with_main "
1819 << convert<string>(dialogs_iconify_with_main) << '\n';
1823 case RC_SCREEN_FONT_ROMAN:
1824 if (ignore_system_lyxrc ||
1825 roman_font_name != system_lyxrc.roman_font_name) {
1826 os << "\\screen_font_roman \"" << roman_font_name
1831 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1832 if (ignore_system_lyxrc ||
1833 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1834 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1839 case RC_SCREEN_FONT_SANS:
1840 if (ignore_system_lyxrc ||
1841 sans_font_name != system_lyxrc.sans_font_name) {
1842 os << "\\screen_font_sans \"" << sans_font_name
1847 case RC_SCREEN_FONT_SANS_FOUNDRY:
1848 if (ignore_system_lyxrc ||
1849 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1850 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1855 case RC_SCREEN_FONT_TYPEWRITER:
1856 if (ignore_system_lyxrc ||
1857 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1858 os << "\\screen_font_typewriter \""
1859 << typewriter_font_name << "\"\n";
1863 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1864 if (ignore_system_lyxrc ||
1865 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1866 os << "\\screen_font_typewriter_foundry \""
1867 << typewriter_font_foundry << "\"\n";
1872 case RC_SCREEN_FONT_SCALABLE:
1873 if (ignore_system_lyxrc ||
1874 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1875 os << "\\screen_font_scalable "
1876 << convert<string>(use_scalable_fonts)
1881 case RC_SCREEN_FONT_SIZES:
1882 if (ignore_system_lyxrc ||
1883 font_sizes[FONT_SIZE_TINY]
1884 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1885 font_sizes[FONT_SIZE_SCRIPT]
1886 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1887 font_sizes[FONT_SIZE_FOOTNOTE]
1888 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1889 font_sizes[FONT_SIZE_SMALL]
1890 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1891 font_sizes[FONT_SIZE_NORMAL]
1892 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1893 font_sizes[FONT_SIZE_LARGE]
1894 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1895 font_sizes[FONT_SIZE_LARGER]
1896 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1897 font_sizes[FONT_SIZE_LARGEST]
1898 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1899 font_sizes[FONT_SIZE_HUGE]
1900 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1901 font_sizes[FONT_SIZE_HUGER]
1902 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1903 os.setf(ios::fixed);
1905 os << "\\screen_font_sizes"
1906 << ' ' << font_sizes[FONT_SIZE_TINY]
1907 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1908 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1909 << ' ' << font_sizes[FONT_SIZE_SMALL]
1910 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1911 << ' ' << font_sizes[FONT_SIZE_LARGE]
1912 << ' ' << font_sizes[FONT_SIZE_LARGER]
1913 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1914 << ' ' << font_sizes[FONT_SIZE_HUGE]
1915 << ' ' << font_sizes[FONT_SIZE_HUGER]
1920 case RC_FULL_SCREEN_LIMIT:
1921 if (ignore_system_lyxrc ||
1922 full_screen_limit != system_lyxrc.full_screen_limit) {
1923 os << "\\fullscreen_limit "
1924 << convert<string>(full_screen_limit)
1929 case RC_FULL_SCREEN_TOOLBARS:
1930 if (ignore_system_lyxrc ||
1931 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1932 os << "\\fullscreen_toolbars "
1933 << convert<string>(full_screen_toolbars)
1938 case RC_FULL_SCREEN_SCROLLBAR:
1939 if (ignore_system_lyxrc ||
1940 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1941 os << "\\fullscreen_scrollbar "
1942 << convert<string>(full_screen_scrollbar)
1947 case RC_FULL_SCREEN_STATUSBAR:
1948 if (ignore_system_lyxrc ||
1949 full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
1950 os << "\\fullscreen_statusbar "
1951 << convert<string>(full_screen_statusbar)
1956 case RC_FULL_SCREEN_TABBAR:
1957 if (ignore_system_lyxrc ||
1958 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1959 os << "\\fullscreen_tabbar "
1960 << convert<string>(full_screen_tabbar)
1965 case RC_FULL_SCREEN_MENUBAR:
1966 if (ignore_system_lyxrc ||
1967 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1968 os << "\\fullscreen_menubar "
1969 << convert<string>(full_screen_menubar)
1974 case RC_FULL_SCREEN_WIDTH:
1975 if (ignore_system_lyxrc ||
1976 full_screen_width != system_lyxrc.full_screen_width) {
1977 os << "\\fullscreen_width "
1978 << convert<string>(full_screen_width)
1983 case RC_OPEN_BUFFERS_IN_TABS:
1984 if (ignore_system_lyxrc ||
1985 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1986 os << "\\open_buffers_in_tabs "
1987 << convert<string>(open_buffers_in_tabs)
1992 case RC_SINGLE_CLOSE_TAB_BUTTON:
1993 if (ignore_system_lyxrc ||
1994 single_close_tab_button != system_lyxrc.single_close_tab_button) {
1995 os << "\\single_close_tab_button "
1996 << convert<string>(single_close_tab_button)
2001 case RC_SINGLE_INSTANCE:
2002 if (ignore_system_lyxrc ||
2003 single_instance != system_lyxrc.single_instance) {
2004 os << "\\single_instance "
2005 << convert<string>(single_instance)
2010 case RC_FORWARD_SEARCH_DVI:
2011 if (ignore_system_lyxrc ||
2012 forward_search_dvi != system_lyxrc.forward_search_dvi) {
2013 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
2017 case RC_FORWARD_SEARCH_PDF:
2018 if (ignore_system_lyxrc ||
2019 forward_search_pdf != system_lyxrc.forward_search_pdf) {
2020 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
2026 << "# COLOR SECTION ###################################\n"
2030 for (int i = 0; i < Color_ignore; ++i) {
2031 ColorCode lc = static_cast<ColorCode>(i);
2032 string const col = lcolor.getX11Name(lc);
2033 if (ignore_system_lyxrc
2034 || col != system_lcolor.getX11Name(lc)) {
2035 os << "\\set_color \""
2036 << lcolor.getLyXName(lc) << "\" \""
2044 << "# PRINTER SECTION ###################################\n"
2048 if (ignore_system_lyxrc ||
2049 printer != system_lyxrc.printer) {
2050 os << "\\printer \"" << printer << "\"\n";
2054 case RC_PRINT_ADAPTOUTPUT:
2055 if (ignore_system_lyxrc ||
2056 print_adapt_output != system_lyxrc.print_adapt_output) {
2057 os << "\\print_adapt_output "
2058 << convert<string>(print_adapt_output)
2063 case RC_PRINT_COMMAND:
2064 if (ignore_system_lyxrc ||
2065 print_command != system_lyxrc.print_command) {
2066 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
2070 case RC_PRINTEXSTRAOPTIONS:
2071 if (ignore_system_lyxrc ||
2072 print_extra_options != system_lyxrc.print_extra_options) {
2073 os << "\\print_extra_options \"" << print_extra_options
2078 case RC_PRINTSPOOL_COMMAND:
2079 if (ignore_system_lyxrc ||
2080 print_spool_command != system_lyxrc.print_spool_command) {
2081 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
2086 case RC_PRINTSPOOL_PRINTERPREFIX:
2087 if (ignore_system_lyxrc ||
2088 print_spool_printerprefix
2089 != system_lyxrc.print_spool_printerprefix) {
2090 os << "\\print_spool_printerprefix \""
2091 << print_spool_printerprefix << "\"\n";
2095 case RC_PRINTEVENPAGEFLAG:
2096 if (ignore_system_lyxrc ||
2097 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
2098 os << "\\print_evenpage_flag \"" << print_evenpage_flag
2103 case RC_PRINTODDPAGEFLAG:
2104 if (ignore_system_lyxrc ||
2105 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
2106 os << "\\print_oddpage_flag \"" << print_oddpage_flag
2111 case RC_PRINTREVERSEFLAG:
2112 if (ignore_system_lyxrc ||
2113 print_reverse_flag != system_lyxrc.print_reverse_flag) {
2114 os << "\\print_reverse_flag \"" << print_reverse_flag
2119 case RC_PRINTLANDSCAPEFLAG:
2120 if (ignore_system_lyxrc ||
2121 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2122 os << "\\print_landscape_flag \"" << print_landscape_flag
2127 case RC_PRINTPAGERANGEFLAG:
2128 if (ignore_system_lyxrc ||
2129 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
2130 os << "\\print_pagerange_flag \"" << print_pagerange_flag
2135 case RC_PRINTCOPIESFLAG:
2136 if (ignore_system_lyxrc ||
2137 print_copies_flag != system_lyxrc.print_copies_flag) {
2138 os << "\\print_copies_flag \"" << print_copies_flag
2143 case RC_PRINTCOLLCOPIESFLAG:
2144 if (ignore_system_lyxrc ||
2145 print_collcopies_flag
2146 != system_lyxrc.print_collcopies_flag) {
2147 os << "\\print_collcopies_flag \""
2148 << print_collcopies_flag
2153 case RC_PRINTPAPERFLAG:
2154 if (ignore_system_lyxrc ||
2155 print_paper_flag != system_lyxrc.print_paper_flag) {
2156 os << "\\print_paper_flag \"" << print_paper_flag
2161 case RC_PRINTPAPERDIMENSIONFLAG:
2162 if (ignore_system_lyxrc ||
2163 print_paper_dimension_flag
2164 != system_lyxrc.print_paper_dimension_flag) {
2165 os << "\\print_paper_dimension_flag \""
2166 << print_paper_dimension_flag << "\"\n";
2170 case RC_PRINTTOPRINTER:
2171 if (ignore_system_lyxrc ||
2172 print_to_printer != system_lyxrc.print_to_printer) {
2173 os << "\\print_to_printer \"" << print_to_printer
2178 case RC_PRINTTOFILE:
2179 if (ignore_system_lyxrc ||
2180 print_to_file != system_lyxrc.print_to_file) {
2181 string const path = os::external_path(print_to_file);
2182 os << "\\print_to_file \"" << path << "\"\n";
2186 case RC_PRINTFILEEXTENSION:
2187 if (ignore_system_lyxrc ||
2188 print_file_extension != system_lyxrc.print_file_extension) {
2189 os << "\\print_file_extension \""
2190 << print_file_extension
2197 << "# TEX SECTION #######################################\n"
2200 case RC_TEXINPUTS_PREFIX:
2201 if (ignore_system_lyxrc ||
2202 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2203 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2208 case RC_FONT_ENCODING:
2209 if (ignore_system_lyxrc ||
2210 fontenc != system_lyxrc.fontenc) {
2211 os << "\\font_encoding \"" << fontenc << "\"\n";
2217 << "# FILE SECTION ######################################\n"
2220 case RC_DOCUMENTPATH:
2221 if (ignore_system_lyxrc ||
2222 document_path != system_lyxrc.document_path) {
2223 string const path = os::external_path(document_path);
2224 os << "\\document_path \"" << path << "\"\n";
2228 case RC_USELASTFILEPOS:
2229 if (ignore_system_lyxrc ||
2230 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2231 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2236 case RC_LOADSESSION:
2237 if (ignore_system_lyxrc ||
2238 load_session != system_lyxrc.load_session) {
2239 os << "\\load_session " << convert<string>(load_session)
2244 case RC_MOUSE_WHEEL_SPEED:
2245 if (ignore_system_lyxrc ||
2246 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2247 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2251 case RC_COMPLETION_INLINE_DELAY:
2252 if (ignore_system_lyxrc ||
2253 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2254 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2258 case RC_COMPLETION_INLINE_MATH:
2259 if (ignore_system_lyxrc ||
2260 completion_inline_math != system_lyxrc.completion_inline_math) {
2261 os << "\\completion_inline_math "
2262 << convert<string>(completion_inline_math) << '\n';
2266 case RC_COMPLETION_INLINE_TEXT:
2267 if (ignore_system_lyxrc ||
2268 completion_inline_text != system_lyxrc.completion_inline_text) {
2269 os << "\\completion_inline_text "
2270 << convert<string>(completion_inline_text) << '\n';
2274 case RC_COMPLETION_INLINE_DOTS:
2275 if (ignore_system_lyxrc ||
2276 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2277 os << "\\completion_inline_dots "
2278 << convert<string>(completion_inline_dots) << '\n';
2282 case RC_AUTOCORRECTION_MATH:
2283 if (ignore_system_lyxrc ||
2284 autocorrection_math != system_lyxrc.autocorrection_math) {
2285 os << "\\autocorrection_math "
2286 << convert<string>(autocorrection_math) << '\n';
2290 case RC_COMPLETION_POPUP_DELAY:
2291 if (ignore_system_lyxrc ||
2292 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2293 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2297 case RC_COMPLETION_POPUP_MATH:
2298 if (ignore_system_lyxrc ||
2299 completion_popup_math != system_lyxrc.completion_popup_math) {
2300 os << "\\completion_popup_math "
2301 << convert<string>(completion_popup_math) << '\n';
2305 case RC_COMPLETION_POPUP_TEXT:
2306 if (ignore_system_lyxrc ||
2307 completion_popup_text != system_lyxrc.completion_popup_text) {
2308 os << "\\completion_popup_text "
2309 << convert<string>(completion_popup_text) << '\n';
2313 case RC_COMPLETION_CURSOR_TEXT:
2314 if (ignore_system_lyxrc ||
2315 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2316 os << "\\completion_cursor_text "
2317 << convert<string>(completion_cursor_text) << '\n';
2321 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2322 if (ignore_system_lyxrc ||
2323 completion_popup_after_complete
2324 != system_lyxrc.completion_popup_after_complete) {
2325 os << "\\completion_popup_after_complete "
2326 << convert<string>(completion_popup_after_complete) << '\n';
2330 case RC_COMPLETION_MINLENGTH:
2331 if (ignore_system_lyxrc ||
2332 completion_minlength != system_lyxrc.completion_minlength) {
2333 os << "\\completion_minlength " << convert<string>(completion_minlength)
2339 case RC_NUMLASTFILES:
2340 if (ignore_system_lyxrc ||
2341 num_lastfiles != system_lyxrc.num_lastfiles) {
2342 os << "\\num_lastfiles " << num_lastfiles << '\n';
2346 case RC_CHECKLASTFILES:
2347 if (ignore_system_lyxrc ||
2348 check_lastfiles != system_lyxrc.check_lastfiles) {
2349 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2354 case RC_EXAMPLEPATH:
2355 if (ignore_system_lyxrc ||
2356 example_path != system_lyxrc.example_path) {
2357 string const path = os::external_path(example_path);
2358 os << "\\example_path \"" << path << "\"\n";
2362 case RC_TEMPLATEPATH:
2363 if (ignore_system_lyxrc ||
2364 template_path != system_lyxrc.template_path) {
2365 string const path = os::external_path(template_path);
2366 os << "\\template_path \"" << path << "\"\n";
2370 case RC_TEMPDIRPATH:
2371 if (ignore_system_lyxrc ||
2372 tempdir_path != system_lyxrc.tempdir_path) {
2373 string const path = os::external_path(tempdir_path);
2374 os << "\\tempdir_path \"" << path << "\"\n";
2378 case RC_THESAURUSDIRPATH:
2379 if (ignore_system_lyxrc ||
2380 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2381 string const path = os::external_path(thesaurusdir_path);
2382 os << "\\thesaurusdir_path \"" << path << "\"\n";
2386 case RC_HUNSPELLDIR_PATH:
2387 if (ignore_system_lyxrc ||
2388 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2389 string const path = os::external_path(hunspelldir_path);
2390 os << "\\hunspelldir_path \"" << path << "\"\n";
2394 case RC_PLAINTEXT_LINELEN:
2395 if (ignore_system_lyxrc ||
2396 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2397 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2401 case RC_MAKE_BACKUP:
2402 if (ignore_system_lyxrc ||
2403 make_backup != system_lyxrc.make_backup) {
2404 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2408 case RC_SAVE_COMPRESSED:
2409 if (ignore_system_lyxrc ||
2410 save_compressed != system_lyxrc.save_compressed) {
2411 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2415 case RC_BACKUPDIR_PATH:
2416 if (ignore_system_lyxrc ||
2417 backupdir_path != system_lyxrc.backupdir_path) {
2418 string const path = os::external_path(backupdir_path);
2419 os << "\\backupdir_path \"" << path << "\"\n";
2425 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2429 << "# SPELLCHECKER SECTION ##############################\n"
2432 case RC_ACCEPT_COMPOUND:
2433 if (ignore_system_lyxrc ||
2434 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2435 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2441 if (ignore_system_lyxrc ||
2442 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2443 os << "\\alternate_language \"" << spellchecker_alt_lang
2449 if (ignore_system_lyxrc ||
2450 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2451 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2455 case RC_USE_SYSTEM_COLORS:
2456 if (ignore_system_lyxrc ||
2457 use_system_colors != system_lyxrc.use_system_colors) {
2458 os << "\\use_system_colors "
2459 << convert<string>(use_system_colors)
2464 case RC_USE_TOOLTIP:
2465 if (ignore_system_lyxrc ||
2466 use_tooltip != system_lyxrc.use_tooltip) {
2467 os << "\\use_tooltip "
2468 << convert<string>(use_tooltip)
2473 case RC_USE_PIXMAP_CACHE:
2474 if (ignore_system_lyxrc ||
2475 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2476 os << "\\use_pixmap_cache "
2477 << convert<string>(use_pixmap_cache)
2483 if (ignore_system_lyxrc ||
2484 use_qimage != system_lyxrc.use_qimage) {
2485 os << "\\use_qimage "
2486 << convert<string>(use_qimage)
2493 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2498 case RC_DEFAULT_DECIMAL_POINT:
2499 if (ignore_system_lyxrc ||
2500 default_decimal_point != system_lyxrc.default_decimal_point) {
2501 os << "\\default_decimal_point " << default_decimal_point << '\n';
2506 case RC_DEFAULT_LENGTH_UNIT:
2507 if (ignore_system_lyxrc ||
2508 default_length_unit != system_lyxrc.default_length_unit) {
2509 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2514 case RC_SPELLCHECKER:
2515 if (ignore_system_lyxrc ||
2516 spellchecker != system_lyxrc.spellchecker) {
2517 os << "\\spellchecker " << spellchecker << '\n';
2522 case RC_SPELLCHECK_CONTINUOUSLY:
2523 if (ignore_system_lyxrc ||
2524 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2525 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2531 case RC_SPELLCHECK_NOTES:
2532 if (ignore_system_lyxrc ||
2533 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2534 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2540 case RC_RTL_SUPPORT:
2541 if (ignore_system_lyxrc ||
2542 rtl_support != system_lyxrc.rtl_support) {
2543 os << "\\rtl " << convert<string>(rtl_support) << '\n';
2547 case RC_VISUAL_CURSOR:
2548 if (ignore_system_lyxrc ||
2549 visual_cursor != system_lyxrc.visual_cursor) {
2550 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2554 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2555 if (ignore_system_lyxrc ||
2556 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2557 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2558 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2562 case RC_LANGUAGE_CUSTOM_PACKAGE:
2563 if (ignore_system_lyxrc ||
2564 language_custom_package != system_lyxrc.language_custom_package) {
2565 os << "\\language_custom_package \"" << language_custom_package
2570 case RC_LANGUAGE_GLOBAL_OPTIONS:
2571 if (ignore_system_lyxrc ||
2572 language_global_options
2573 != system_lyxrc.language_global_options) {
2574 os << "\\language_global_options \""
2575 << convert<string>(language_global_options)
2580 case RC_LANGUAGE_PACKAGE_SELECTION:
2581 if (ignore_system_lyxrc ||
2582 language_package_selection != system_lyxrc.language_package_selection) {
2583 os << "\\language_package_selection ";
2584 switch (language_package_selection) {
2601 case RC_LANGUAGE_COMMAND_BEGIN:
2602 if (ignore_system_lyxrc ||
2603 language_command_begin
2604 != system_lyxrc.language_command_begin) {
2605 os << "\\language_command_begin \""
2606 << language_command_begin
2611 case RC_LANGUAGE_COMMAND_END:
2612 if (ignore_system_lyxrc ||
2613 language_command_end
2614 != system_lyxrc.language_command_end) {
2615 os << "\\language_command_end \"" << language_command_end
2620 case RC_LANGUAGE_COMMAND_LOCAL:
2621 if (ignore_system_lyxrc ||
2622 language_command_local
2623 != system_lyxrc.language_command_local) {
2624 os << "\\language_command_local \""
2625 << language_command_local
2630 case RC_LANGUAGE_AUTO_BEGIN:
2631 if (ignore_system_lyxrc ||
2632 language_auto_begin != system_lyxrc.language_auto_begin) {
2633 os << "\\language_auto_begin "
2634 << convert<string>(language_auto_begin) << '\n';
2638 case RC_LANGUAGE_AUTO_END:
2639 if (ignore_system_lyxrc ||
2640 language_auto_end != system_lyxrc.language_auto_end) {
2641 os << "\\language_auto_end "
2642 << convert<string>(language_auto_end) << '\n';
2646 case RC_MARK_FOREIGN_LANGUAGE:
2647 if (ignore_system_lyxrc ||
2648 mark_foreign_language
2649 != system_lyxrc.mark_foreign_language) {
2650 os << "\\mark_foreign_language " <<
2651 convert<string>(mark_foreign_language) << '\n';
2657 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2660 case RC_AUTO_NUMBER:
2661 if (ignore_system_lyxrc ||
2662 auto_number != system_lyxrc.auto_number) {
2663 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2667 case RC_GUI_LANGUAGE:
2668 if (ignore_system_lyxrc ||
2669 gui_language != system_lyxrc.gui_language) {
2670 os << "\\gui_language " << gui_language << '\n';
2674 case RC_EXPORT_OVERWRITE:
2675 if (ignore_system_lyxrc ||
2676 export_overwrite != system_lyxrc.export_overwrite) {
2678 switch (export_overwrite) {
2689 os << "\\export_overwrite " << status << '\n';
2694 case RC_SCROLL_WHEEL_ZOOM:
2695 if (ignore_system_lyxrc ||
2696 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2698 switch (scroll_wheel_zoom) {
2699 case SCROLL_WHEEL_ZOOM_OFF:
2702 case SCROLL_WHEEL_ZOOM_CTRL:
2705 case SCROLL_WHEEL_ZOOM_SHIFT:
2708 case SCROLL_WHEEL_ZOOM_ALT:
2712 os << "\\scroll_wheel_zoom " << status << '\n';
2718 << "# FORMATS SECTION ##########################\n"
2722 // New/modified formats
2723 for (Formats::const_iterator cit = formats.begin();
2724 cit != formats.end(); ++cit) {
2725 Format const * format =
2726 system_formats.getFormat(cit->name());
2728 format->extensions() != cit->extensions() ||
2729 format->prettyname() != cit->prettyname() ||
2730 format->shortcut() != cit->shortcut() ||
2731 format->viewer() != cit->viewer() ||
2732 format->editor() != cit->editor() ||
2733 format->documentFormat() != cit->documentFormat() ||
2734 format->vectorFormat() != cit->vectorFormat() ||
2735 format->inExportMenu() != cit->inExportMenu() ||
2736 format->mime() != cit->mime()) {
2737 os << "\\format \"" << cit->name() << "\" \""
2738 << cit->extensions() << "\" \""
2739 << cit->prettyname() << "\" \""
2740 << cit->shortcut() << "\" \""
2741 << escapeCommand(cit->viewer()) << "\" \""
2742 << escapeCommand(cit->editor()) << "\" \"";
2743 vector<string> flags;
2744 if (cit->documentFormat())
2745 flags.push_back("document");
2746 if (cit->vectorFormat())
2747 flags.push_back("vector");
2748 if (cit->zippedNative())
2749 flags.push_back("zipped=native");
2750 if (cit->inExportMenu())
2751 flags.push_back("menu=export");
2753 os << getStringFromVector(flags);
2754 os << "\" \"" << cit->mime() << "\"\n";
2758 // Look for deleted formats
2759 for (Formats::const_iterator cit = system_formats.begin();
2760 cit != system_formats.end(); ++cit)
2761 if (!formats.getFormat(cit->name()))
2762 os << "\\format \"" << cit->name()
2763 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2766 case RC_VIEWER_ALTERNATIVES: {
2767 Alternatives::const_iterator it = viewer_alternatives.begin();
2768 Alternatives::const_iterator const en = viewer_alternatives.end();
2769 Alternatives::const_iterator const sysend =
2770 system_lyxrc.viewer_alternatives.end();
2771 for (; it != en; ++it) {
2772 string const & fmt = it->first;
2773 CommandSet const & cmd = it->second;
2774 CommandSet::const_iterator sit = cmd.begin();
2775 CommandSet::const_iterator const sen = cmd.end();
2776 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2777 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2778 system_lyxrc.viewer_alternatives.find(fmt);
2779 for (; sit != sen; ++sit) {
2780 string const & cmd = *sit;
2781 if (ignore_system_lyxrc
2782 || sysfmt == sysend // format not found
2783 || sysfmt->second.count(cmd) == 0 // this command not found
2785 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2791 case RC_EDITOR_ALTERNATIVES: {
2792 Alternatives::const_iterator it = editor_alternatives.begin();
2793 Alternatives::const_iterator const en = editor_alternatives.end();
2794 Alternatives::const_iterator const sysend =
2795 system_lyxrc.editor_alternatives.end();
2796 for (; it != en; ++it) {
2797 string const & fmt = it->first;
2798 CommandSet const & cmd = it->second;
2799 CommandSet::const_iterator sit = cmd.begin();
2800 CommandSet::const_iterator const sen = cmd.end();
2801 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2802 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2803 system_lyxrc.editor_alternatives.find(fmt);
2804 for (; sit != sen; ++sit) {
2805 string const & cmd = *sit;
2806 if (ignore_system_lyxrc
2807 || sysfmt == sysend // format not found
2808 || sysfmt->second.count(cmd) == 0 // this command not found
2810 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2816 case RC_DEFAULT_OTF_VIEW_FORMAT:
2817 if ((ignore_system_lyxrc ||
2818 default_otf_view_format != system_lyxrc.default_otf_view_format)
2819 && !default_otf_view_format.empty()) {
2820 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2824 case RC_DEFAULT_VIEW_FORMAT:
2825 if (ignore_system_lyxrc ||
2826 default_view_format != system_lyxrc.default_view_format) {
2827 os << "\\default_view_format " << default_view_format << '\n';
2837 << "# CONVERTERS SECTION ##########################\n"
2841 // Look for new converters
2842 for (Converters::const_iterator cit = theConverters().begin();
2843 cit != theConverters().end(); ++cit) {
2844 Converter const * converter =
2845 theSystemConverters().getConverter(cit->from,
2848 converter->command != cit->command ||
2849 converter->flags != cit->flags)
2850 os << "\\converter \"" << cit->from << "\" \""
2851 << cit->to << "\" \""
2852 << escapeCommand(cit->command) << "\" \""
2853 << cit->flags << "\"\n";
2856 // New/modifed converters
2857 for (Converters::const_iterator cit = theSystemConverters().begin();
2858 cit != theSystemConverters().end(); ++cit)
2859 if (!theConverters().getConverter(cit->from, cit->to))
2860 os << "\\converter \"" << cit->from
2861 << "\" \"" << cit->to << "\" \"\" \"\"\n";
2868 << "# COPIERS SECTION ##########################\n"
2871 // Look for new movers
2872 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2873 Movers::const_iterator const sysend = theSystemMovers().end();
2874 Movers::const_iterator it = theMovers().begin();
2875 Movers::const_iterator end = theMovers().end();
2877 for (; it != end; ++it) {
2878 Movers::const_iterator const sysit =
2879 find_if(sysbegin, sysend, SameMover(*it));
2880 if (sysit == sysend) {
2881 string const & fmt = it->first;
2882 string const & command =
2883 it->second.command();
2885 os << "\\copier " << fmt
2886 << " \"" << escapeCommand(command) << "\"\n";
2892 // We don't actually delete SpecialisedMover(s) from the
2893 // map, just clear their 'command', so there's no need
2894 // to test for anything else.
2901 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2903 // Why the switch you might ask. It is a trick to ensure that all
2904 // the elements in the LyXRCTags enum is handled. As you can see
2905 // there are no breaks at all. So it is just a huge fall-through.
2906 // The nice thing is that we will get a warning from the compiler
2907 // if we forget an element.
2908 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2910 case LyXRC::RC_LAST:
2911 case LyXRC::RC_ACCEPT_COMPOUND:
2912 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2913 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2914 case LyXRC::RC_ALT_LANG:
2915 case LyXRC::RC_PLAINTEXT_LINELEN:
2916 case LyXRC::RC_AUTOCORRECTION_MATH:
2917 case LyXRC::RC_AUTOREGIONDELETE:
2918 case LyXRC::RC_AUTORESET_OPTIONS:
2919 case LyXRC::RC_AUTOSAVE:
2920 case LyXRC::RC_AUTO_NUMBER:
2921 case LyXRC::RC_BACKUPDIR_PATH:
2922 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2923 case LyXRC::RC_BIBTEX_COMMAND:
2924 case LyXRC::RC_BINDFILE:
2925 case LyXRC::RC_CHECKLASTFILES:
2926 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2927 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2928 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2929 case LyXRC::RC_COMPLETION_INLINE_MATH:
2930 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2931 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2932 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2933 case LyXRC::RC_COMPLETION_POPUP_MATH:
2934 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2935 case LyXRC::RC_COMPLETION_MINLENGTH:
2936 case LyXRC::RC_USELASTFILEPOS:
2937 case LyXRC::RC_LOADSESSION:
2938 case LyXRC::RC_CHKTEX_COMMAND:
2939 case LyXRC::RC_CONVERTER:
2940 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2941 case LyXRC::RC_COPIER:
2942 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2943 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2944 case LyXRC::RC_DATE_INSERT_FORMAT:
2945 case LyXRC::RC_GUI_LANGUAGE:
2946 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2947 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2948 case LyXRC::RC_DEFFILE:
2949 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2950 case LyXRC::RC_DISPLAY_GRAPHICS:
2951 case LyXRC::RC_DOCUMENTPATH:
2952 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2953 FileName path(lyxrc_new.document_path);
2954 if (path.exists() && path.isDirectory())
2955 package().document_dir() = FileName(lyxrc.document_path);
2957 case LyXRC::RC_EDITOR_ALTERNATIVES:
2958 case LyXRC::RC_ESC_CHARS:
2959 case LyXRC::RC_EXAMPLEPATH:
2960 case LyXRC::RC_FONT_ENCODING:
2961 case LyXRC::RC_FILEFORMAT:
2962 case LyXRC::RC_GROUP_LAYOUTS:
2963 case LyXRC::RC_HUNSPELLDIR_PATH:
2964 case LyXRC::RC_ICON_SET:
2965 case LyXRC::RC_INDEX_ALTERNATIVES:
2966 case LyXRC::RC_INDEX_COMMAND:
2967 case LyXRC::RC_JBIBTEX_COMMAND:
2968 case LyXRC::RC_JINDEX_COMMAND:
2969 case LyXRC::RC_NOMENCL_COMMAND:
2970 case LyXRC::RC_INPUT:
2971 case LyXRC::RC_KBMAP:
2972 case LyXRC::RC_KBMAP_PRIMARY:
2973 case LyXRC::RC_KBMAP_SECONDARY:
2974 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2975 case LyXRC::RC_LANGUAGE_AUTO_END:
2976 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2977 case LyXRC::RC_LANGUAGE_COMMAND_END:
2978 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2979 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2980 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2981 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2982 case LyXRC::RC_LYXRCFORMAT:
2983 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2984 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
2985 case LyXRC::RC_MACRO_EDIT_STYLE:
2986 case LyXRC::RC_MAKE_BACKUP:
2987 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2988 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2989 case LyXRC::RC_NUMLASTFILES:
2990 case LyXRC::RC_PARAGRAPH_MARKERS:
2991 case LyXRC::RC_PATH_PREFIX:
2992 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2993 prependEnvPath("PATH", lyxrc_new.path_prefix);
2994 // Resets python path
2995 support::os::python(true);
2997 case LyXRC::RC_PREVIEW:
2998 case LyXRC::RC_PREVIEW_HASHED_LABELS:
2999 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
3000 case LyXRC::RC_PRINTCOLLCOPIESFLAG:
3001 case LyXRC::RC_PRINTCOPIESFLAG:
3002 case LyXRC::RC_PRINTER:
3003 case LyXRC::RC_PRINTEVENPAGEFLAG:
3004 case LyXRC::RC_PRINTEXSTRAOPTIONS:
3005 case LyXRC::RC_PRINTFILEEXTENSION:
3006 case LyXRC::RC_PRINTLANDSCAPEFLAG:
3007 case LyXRC::RC_PRINTODDPAGEFLAG:
3008 case LyXRC::RC_PRINTPAGERANGEFLAG:
3009 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
3010 case LyXRC::RC_PRINTPAPERFLAG:
3011 case LyXRC::RC_PRINTREVERSEFLAG:
3012 case LyXRC::RC_PRINTSPOOL_COMMAND:
3013 case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
3014 case LyXRC::RC_PRINTTOFILE:
3015 case LyXRC::RC_PRINTTOPRINTER:
3016 case LyXRC::RC_PRINT_ADAPTOUTPUT:
3017 case LyXRC::RC_PRINT_COMMAND:
3018 case LyXRC::RC_RTL_SUPPORT:
3019 case LyXRC::RC_SAVE_COMPRESSED:
3020 case LyXRC::RC_SCREEN_DPI:
3021 case LyXRC::RC_SCREEN_FONT_ROMAN:
3022 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
3023 case LyXRC::RC_SCREEN_FONT_SANS:
3024 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
3025 case LyXRC::RC_SCREEN_FONT_SCALABLE:
3026 case LyXRC::RC_SCREEN_FONT_SIZES:
3027 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
3028 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3029 case LyXRC::RC_GEOMETRY_SESSION:
3030 case LyXRC::RC_SCREEN_ZOOM:
3031 case LyXRC::RC_SERVERPIPE:
3032 case LyXRC::RC_SET_COLOR:
3033 case LyXRC::RC_SHOW_BANNER:
3034 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
3035 case LyXRC::RC_SPELLCHECKER:
3036 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
3038 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
3039 case LyXRC::RC_SPELLCHECK_NOTES:
3040 case LyXRC::RC_SPLITINDEX_COMMAND:
3041 case LyXRC::RC_TEMPDIRPATH:
3042 case LyXRC::RC_TEMPLATEPATH:
3043 case LyXRC::RC_TEX_ALLOWS_SPACES:
3044 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
3045 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
3046 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
3048 case LyXRC::RC_TEXINPUTS_PREFIX:
3049 case LyXRC::RC_THESAURUSDIRPATH:
3050 case LyXRC::RC_UIFILE:
3051 case LyXRC::RC_USER_EMAIL:
3052 case LyXRC::RC_USER_NAME:
3053 case LyXRC::RC_USE_CONVERTER_CACHE:
3054 case LyXRC::RC_USE_SYSTEM_COLORS:
3055 case LyXRC::RC_USE_TOOLTIP:
3056 case LyXRC::RC_USE_PIXMAP_CACHE:
3057 case LyXRC::RC_USE_QIMAGE:
3058 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
3059 case LyXRC::RC_VIEWDVI_PAPEROPTION:
3060 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
3061 case LyXRC::RC_SINGLE_INSTANCE:
3062 case LyXRC::RC_SORT_LAYOUTS:
3063 case LyXRC::RC_FULL_SCREEN_LIMIT:
3064 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
3065 case LyXRC::RC_FULL_SCREEN_MENUBAR:
3066 case LyXRC::RC_FULL_SCREEN_STATUSBAR:
3067 case LyXRC::RC_FULL_SCREEN_TABBAR:
3068 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
3069 case LyXRC::RC_FULL_SCREEN_WIDTH:
3070 case LyXRC::RC_VISUAL_CURSOR:
3071 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3072 case LyXRC::RC_VIEWER:
3073 case LyXRC::RC_VIEWER_ALTERNATIVES:
3074 case LyXRC::RC_FORWARD_SEARCH_DVI:
3075 case LyXRC::RC_FORWARD_SEARCH_PDF:
3076 case LyXRC::RC_EXPORT_OVERWRITE:
3077 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
3078 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
3079 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3080 case LyXRC::RC_CURSOR_WIDTH:
3087 string const LyXRC::getDescription(LyXRCTags tag)
3092 case RC_ACCEPT_COMPOUND:
3093 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3097 str = _("Specify an alternate language. The default is to use the language of the document.");
3100 case RC_PLAINTEXT_LINELEN:
3101 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.");
3104 case RC_AUTOREGIONDELETE:
3105 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3108 case RC_AUTORESET_OPTIONS:
3109 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3113 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3116 case RC_AUTO_NUMBER:
3119 case RC_BACKUPDIR_PATH:
3120 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.");
3123 case RC_BIBTEX_COMMAND:
3124 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3127 case RC_JBIBTEX_COMMAND:
3128 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3132 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3135 case RC_CHECKLASTFILES:
3136 str = _("Select to check whether the lastfiles still exist.");
3139 case RC_CHKTEX_COMMAND:
3140 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3149 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3150 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.");
3153 case RC_CURSOR_WIDTH:
3154 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3157 case RC_SCROLL_BELOW_DOCUMENT:
3158 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");
3161 case RC_MAC_DONTSWAP_CTRL_META:
3162 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3165 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3166 str = _("Use the Mac OS X conventions for cursor movement");
3169 case RC_SHOW_MACRO_LABEL:
3170 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3173 case RC_DATE_INSERT_FORMAT:
3174 //xgettext:no-c-format
3175 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3179 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3182 case RC_DEFAULT_OTF_VIEW_FORMAT:
3183 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3186 case RC_DEFAULT_VIEW_FORMAT:
3187 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3190 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3191 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3194 case RC_DISPLAY_GRAPHICS:
3195 str = _("Select how LyX will display any graphics.");
3198 case RC_DOCUMENTPATH:
3199 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3203 str = _("Specify additional chars that can be part of a word.");
3206 case RC_EXAMPLEPATH:
3207 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3210 case RC_FONT_ENCODING:
3211 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3217 case RC_INDEX_COMMAND:
3218 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\".");
3221 case RC_JINDEX_COMMAND:
3222 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3225 case RC_NOMENCL_COMMAND:
3226 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3233 case RC_KBMAP_PRIMARY:
3234 case RC_KBMAP_SECONDARY:
3235 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.");
3238 case RC_LANGUAGE_AUTO_BEGIN:
3239 str = _("Select if a language switching command is needed at the beginning of the document.");
3242 case RC_LANGUAGE_AUTO_END:
3243 str = _("Select if a language switching command is needed at the end of the document.");
3246 case RC_LANGUAGE_COMMAND_BEGIN:
3247 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.");
3250 case RC_LANGUAGE_COMMAND_END:
3251 str = _("The LaTeX command for changing back to the language of the document.");
3254 case RC_LANGUAGE_COMMAND_LOCAL:
3255 str = _("The LaTeX command for local changing of the language.");
3258 case RC_LANGUAGE_GLOBAL_OPTIONS:
3259 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3262 case RC_LANGUAGE_CUSTOM_PACKAGE:
3263 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3266 case RC_LANGUAGE_PACKAGE_SELECTION:
3267 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3270 case RC_USELASTFILEPOS:
3271 str = _("De-select if you do not want LyX to scroll to saved position.");
3274 case RC_LOADSESSION:
3275 str = _("De-select to prevent loading files opened from the last LyX session.");
3278 case RC_MAKE_BACKUP:
3279 str = _("De-select if you don't want LyX to create backup files.");
3282 case RC_MARK_FOREIGN_LANGUAGE:
3283 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3286 case RC_MOUSE_WHEEL_SPEED:
3287 str = bformat(_("The scrolling speed of the mouse wheel."),
3291 case RC_COMPLETION_POPUP_DELAY:
3292 str = _("The completion popup delay.");
3295 case RC_COMPLETION_POPUP_MATH:
3296 str = _("Select to display the completion popup in math mode.");
3299 case RC_COMPLETION_POPUP_TEXT:
3300 str = _("Select to display the completion popup in text mode.");
3303 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3304 str = _("Show the completion popup without delay after non-unique completion attempt.");
3307 case RC_COMPLETION_POPUP_TEXT:
3308 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3311 case RC_COMPLETION_POPUP_DELAY:
3312 str = _("The inline completion delay.");
3315 case RC_COMPLETION_INLINE_MATH:
3316 str = _("Select to display the inline completion in math mode.");
3319 case RC_COMPLETION_INLINE_TEXT:
3320 str = _("Select to display the inline completion in text mode.");
3323 case RC_COMPLETION_INLINE_DOTS:
3324 str = _("Use \"...\" to shorten long completions.");
3327 case RC_AUTOCORRECTION_MATH:
3328 str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
3331 case RC_NUMLASTFILES:
3332 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3336 case RC_PATH_PREFIX:
3337 str = _("Specify those directories which should be "
3338 "prepended to the PATH environment variable.\n"
3339 "Use the OS native format.");
3343 str = _("Shows a typeset preview of things such as math");
3346 case RC_PREVIEW_HASHED_LABELS:
3347 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3350 case RC_PREVIEW_SCALE_FACTOR:
3351 str = _("Scale the preview size to suit.");
3354 case RC_PRINTCOLLCOPIESFLAG:
3355 str = _("The option for specifying whether the copies should be collated.");
3358 case RC_PRINTCOPIESFLAG:
3359 str = _("The option for specifying the number of copies to print.");
3363 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
3366 case RC_PRINTEVENPAGEFLAG:
3367 str = _("The option to print only even pages.");
3370 case RC_PRINTEXSTRAOPTIONS:
3371 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
3374 case RC_PRINTFILEEXTENSION:
3375 str = _("Extension of printer program output file. Usually \".ps\".");
3378 case RC_PRINTLANDSCAPEFLAG:
3379 str = _("The option to print out in landscape.");
3382 case RC_PRINTODDPAGEFLAG:
3383 str = _("The option to print only odd pages.");
3386 case RC_PRINTPAGERANGEFLAG:
3387 str = _("The option for specifying a comma-separated list of pages to print.");
3390 case RC_PRINTPAPERDIMENSIONFLAG:
3391 str = _("Option to specify the dimensions of the print paper.");
3394 case RC_PRINTPAPERFLAG:
3395 str = _("The option to specify paper type.");
3398 case RC_PRINTREVERSEFLAG:
3399 str = _("The option to reverse the order of the pages printed.");
3402 case RC_PRINTSPOOL_COMMAND:
3403 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.");
3406 case RC_PRINTSPOOL_PRINTERPREFIX:
3407 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.");
3410 case RC_PRINTTOFILE:
3411 str = _("Option to pass to the print program to print to a file.");
3414 case RC_PRINTTOPRINTER:
3415 str = _("Option to pass to the print program to print on a specific printer.");
3418 case RC_PRINT_ADAPTOUTPUT:
3419 str = _("Select for LyX to pass the name of the destination printer to your print command.");
3422 case RC_PRINT_COMMAND:
3423 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
3426 case RC_RTL_SUPPORT:
3427 str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
3430 case RC_VISUAL_CURSOR:
3431 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3434 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3435 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).");
3439 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3442 case RC_SCREEN_FONT_ROMAN:
3443 case RC_SCREEN_FONT_SANS:
3444 case RC_SCREEN_FONT_TYPEWRITER:
3445 str = _("The screen fonts used to display the text while editing.");
3448 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3449 case RC_SCREEN_FONT_SANS_FOUNDRY:
3450 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3453 case RC_SCREEN_FONT_SCALABLE:
3454 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.");
3457 case RC_SCREEN_FONT_SIZES:
3458 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3461 case RC_SCREEN_ZOOM:
3462 //xgettext:no-c-format
3463 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3466 case RC_GEOMETRY_SESSION:
3467 str = _("Allow session manager to save and restore windows geometry.");
3471 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3477 case RC_SHOW_BANNER:
3478 str = _("De-select if you don't want the startup banner.");
3481 case RC_TEMPDIRPATH:
3482 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3485 case RC_THESAURUSDIRPATH:
3486 str = _("This is the place where the files of the thesaurus library reside.");
3489 case RC_TEMPLATEPATH:
3490 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3493 case RC_TEX_ALLOWS_SPACES:
3496 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3499 case RC_TEXINPUTS_PREFIX:
3500 str = _("Specify those directories which should be "
3501 "prepended to the TEXINPUTS environment variable.\n"
3502 "A '.' represents the current document directory. "
3503 "Use the OS native format.");
3507 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3516 case RC_USE_USE_SYSTEM_COLORS:
3517 str = _("Enable use the system colors for some things like main window background and selection.");
3520 case RC_USE_TOOLTIP:
3521 str = _("Enable the automatic appearance of tool tips in the work area.");
3524 case RC_USE_PIXMAP_CACHE:
3525 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3528 case RC_VIEWDVI_PAPEROPTION:
3529 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3544 // The global instance
3547 // The global copy of the system lyxrc entries (everything except preferences)