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 = 18; // ef: save_origin
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 { "\\save_origin", LyXRC::RC_SAVE_ORIGIN },
176 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
177 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
178 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
179 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
180 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
181 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
182 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
183 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
184 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
185 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
186 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
187 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
188 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
189 { "\\set_color", LyXRC::RC_SET_COLOR },
190 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
191 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
192 { "\\single_instance", LyXRC::RC_SINGLE_INSTANCE },
193 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
194 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
195 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
196 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
197 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
198 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
199 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
200 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
201 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
202 { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
203 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
204 { "\\ui_file", LyXRC::RC_UIFILE },
205 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
206 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
207 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
208 { "\\use_qimage", LyXRC::RC_USE_QIMAGE },
209 // compatibility with versions older than 1.4.0 only
210 { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
211 { "\\use_system_theme_icons", LyXRC::RC_USE_SYSTEM_THEME_ICONS },
212 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
213 { "\\user_email", LyXRC::RC_USER_EMAIL },
214 { "\\user_name", LyXRC::RC_USER_NAME },
215 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
216 // compatibility with versions older than 1.4.0 only
217 { "\\viewer", LyXRC::RC_VIEWER},
218 { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
219 { "\\visual_cursor", LyXRC::RC_VISUAL_CURSOR },
220 { "format", LyXRC::RC_LYXRCFORMAT }
223 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
234 void LyXRC::setDefaults()
237 use_system_theme_icons = false;
239 def_file = "default";
241 // The current document directory
242 texinputs_prefix = ".";
243 // Get printer from the environment. If fail, use default "",
244 // assuming that everything is set up correctly.
245 printer = getEnv("PRINTER");
246 print_adapt_output = false;
247 print_command = "dvips";
248 print_evenpage_flag = "-B";
249 print_oddpage_flag = "-A";
250 print_pagerange_flag = "-pp";
251 print_copies_flag = "-c";
252 print_collcopies_flag = "-C";
253 print_reverse_flag = "-r";
254 print_landscape_flag = "-t landscape";
255 print_to_printer = "-P";
256 print_to_file = "-o ";
257 print_file_extension = ".ps";
258 print_paper_flag = "-t";
259 print_paper_dimension_flag = "-T";
260 document_path.erase();
261 view_dvi_paper_option.erase();
262 default_view_format = "pdf2";
263 default_otf_view_format = "pdf4";
264 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
265 bibtex_command = "bibtex";
267 index_command = "makeindex -c -q";
268 nomencl_command = "makeindex -s nomencl.ist";
270 // Because a screen is typically wider than a piece of paper:
272 allow_geometry_session = true;
273 // Default LaTeX font size:
274 font_sizes[FONT_SIZE_TINY] = "5.0";
275 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
276 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
277 font_sizes[FONT_SIZE_SMALL] = "9.0";
278 font_sizes[FONT_SIZE_NORMAL] = "10.0";
279 font_sizes[FONT_SIZE_LARGE] = "12.0";
280 font_sizes[FONT_SIZE_LARGER] = "14.4";
281 font_sizes[FONT_SIZE_LARGEST] = "17.26";
282 font_sizes[FONT_SIZE_HUGE] = "20.74";
283 font_sizes[FONT_SIZE_HUGER] = "24.88";
284 use_scalable_fonts = true;
285 roman_font_name = "";
287 typewriter_font_name = "";
289 auto_region_delete = true;
290 auto_reset_options = false;
291 plaintext_linelen = 65;
292 mouse_wheel_speed = 1.0;
293 num_lastfiles = maxlastfiles;
294 check_lastfiles = true;
295 use_lastfilepos = true;
296 load_session = false;
298 save_compressed = false;
300 backupdir_path.erase();
301 display_graphics = true;
302 // Spellchecker settings:
303 // FIXME: this check should test the target platform (darwin)
304 #if defined(USE_MACOSX_PACKAGING)
305 spellchecker = "native";
306 #elif defined(USE_ASPELL)
307 spellchecker = "aspell";
308 #elif defined(USE_HUNSPELL)
309 spellchecker = "hunspell";
311 spellchecker = "aspell";
313 spellchecker_accept_compound = false;
314 spellcheck_continuously = false;
315 completion_minlength = 6;
316 spellcheck_notes = true;
318 visual_cursor = false;
320 mark_foreign_language = true;
321 language_auto_begin = true;
322 language_auto_end = true;
323 language_global_options = true;
324 language_package_selection = LP_AUTO;
325 language_custom_package = "\\usepackage{babel}";
326 language_command_begin = "\\selectlanguage{$$lang}";
327 language_command_local = "\\foreignlanguage{$$lang}{";
328 sort_layouts = false;
329 group_layouts = true;
330 gui_language = "auto";
332 windows_style_tex_paths = false;
333 tex_allows_spaces = false;
334 date_insert_format = "%x";
335 cursor_follows_scrollbar = false;
336 scroll_below_document = false;
337 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
338 paragraph_markers = false;
339 mac_dontswap_ctrl_meta = false;
340 mac_like_cursor_movement = false;
341 macro_edit_style = MACRO_EDIT_INLINE_BOX;
342 dialogs_iconify_with_main = false;
343 preview = PREVIEW_OFF;
344 preview_hashed_labels = false;
345 preview_scale_factor = 1.0;
346 use_converter_cache = true;
347 use_system_colors = false;
349 use_pixmap_cache = false;
351 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
352 user_name = to_utf8(support::user_name());
353 user_email = to_utf8(support::user_email());
354 open_buffers_in_tabs = true;
355 single_close_tab_button = false;
356 single_instance = true;
357 forward_search_dvi = string();
358 forward_search_pdf = string();
359 export_overwrite = NO_FILES;
361 // Fullscreen settings
362 full_screen_limit = false;
363 full_screen_toolbars = true;
364 full_screen_tabbar = true;
365 full_screen_menubar = true;
366 full_screen_scrollbar = true;
367 full_screen_width = 700;
369 completion_cursor_text = true;
370 completion_popup_math = true;
371 completion_popup_text = false;
372 completion_popup_delay = 2.0;
373 completion_popup_after_complete = true;
374 autocorrection_math = false;
375 completion_inline_math = true;
376 completion_inline_text = false;
377 completion_inline_dots = -1;
378 completion_inline_delay = 0.2;
379 default_decimal_point = ".";
380 default_length_unit = Length::CM;
382 close_buffer_with_last_view = "yes";
383 mouse_middlebutton_paste = true;
389 void oldFontFormat(string & family, string & foundry)
391 if (family.empty() || family[0] != '-')
393 foundry = token(family, '-', 1);
394 family = token(family, '-', 2);
402 bool LyXRC::read(FileName const & filename, bool check_format)
404 Lexer lexrc(lyxrcTags);
405 lexrc.setFile(filename);
406 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
407 ReturnValues retval = read(lexrc, check_format);
408 if (!check_format || retval != FormatMismatch)
409 return retval == ReadOK;
411 LYXERR(Debug::FILES, "Converting LyXRC file to " << LYXRC_FILEFORMAT);
412 TempFile tmp("convert_lyxrc");
413 FileName const tempfile = tmp.name();
414 bool const success = prefs2prefs(filename, tempfile, false);
416 LYXERR0 ("Unable to convert " << filename.absFileName() <<
417 " to format " << LYXRC_FILEFORMAT);
420 // Keep this in the else branch, such that lexrc2 goes out
421 // of scope and releases the lock on tempfile before we
422 // attempt to remove it. This matters on Windows.
423 Lexer lexrc2(lyxrcTags);
424 lexrc2.setFile(tempfile);
425 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
426 retval = read(lexrc2, check_format);
428 return retval == ReadOK;
432 // don't need to worry about conversion, because this is always
433 // from an internal source
434 bool LyXRC::read(istream & is)
436 Lexer lexrc(lyxrcTags);
438 LYXERR(Debug::LYXRC, "Reading istream...");
439 return read(lexrc, false) == ReadOK;
443 LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
445 if (lyxerr.debugging(Debug::PARSER))
446 lexrc.printTable(lyxerr);
451 // format prior to 2.0 and introduction of format tag
452 unsigned int format = 0;
454 while (lexrc.isOK()) {
455 // By using two switches we take advantage of the compiler
456 // telling us if we have missed a LyXRCTags element in
457 // the second switch.
458 // Note that this also shows a problem with Lexer since it
459 // helps us avoid taking advantage of the strictness of the
462 int le = lexrc.lex();
464 case Lexer::LEX_UNDEF:
465 lexrc.printError("Unknown tag `$$Token'");
467 case Lexer::LEX_FEOF:
472 switch (static_cast<LyXRCTags>(le)) {
475 format = lexrc.getInteger();
477 case RC_INPUT: // Include file
480 libFileSearch(string(),
482 if (read(tmp, check_format)) {
484 "Error reading included file: " + tmp.absFileName());
490 bind_file = os::internal_path(lexrc.getString());
495 def_file = os::internal_path(lexrc.getString());
500 ui_file = os::internal_path(lexrc.getString());
503 case RC_AUTORESET_OPTIONS:
504 lexrc >> auto_reset_options;
507 case RC_DISPLAY_GRAPHICS:
509 display_graphics = lexrc.getString() == "true";
512 case RC_TEX_EXPECTS_WINDOWS_PATHS:
513 lexrc >> windows_style_tex_paths;
516 case RC_TEX_ALLOWS_SPACES:
517 lexrc >> tex_allows_spaces;
520 case RC_TEXINPUTS_PREFIX:
521 lexrc >> texinputs_prefix;
528 case RC_KBMAP_PRIMARY:
530 string const kmap(os::internal_path(lexrc.getString()));
531 if (!libFileSearch("kbd", kmap, "kmap").empty()
533 primary_kbmap = kmap;
535 lexrc.printError("LyX: Keymap `$$Token' not found");
540 case RC_KBMAP_SECONDARY:
542 string const kmap(os::internal_path(lexrc.getString()));
543 if (!libFileSearch("kbd", kmap, "kmap").empty()
545 secondary_kbmap = kmap;
547 lexrc.printError("LyX: Keymap `$$Token' not found");
552 case RC_FONT_ENCODING:
560 case RC_PRINT_COMMAND:
561 if (lexrc.next(true)) {
562 print_command = lexrc.getString();
566 case RC_PRINTEVENPAGEFLAG:
567 lexrc >> print_evenpage_flag;
570 case RC_PRINTODDPAGEFLAG:
571 lexrc >> print_oddpage_flag;
574 case RC_PRINTPAGERANGEFLAG:
575 lexrc >> print_pagerange_flag;
578 case RC_PRINTCOPIESFLAG:
579 lexrc >> print_copies_flag;
582 case RC_PRINTCOLLCOPIESFLAG:
583 lexrc >> print_collcopies_flag;
586 case RC_PRINTREVERSEFLAG:
587 lexrc >> print_reverse_flag;
590 case RC_PRINTLANDSCAPEFLAG:
591 lexrc >> print_landscape_flag;
594 case RC_PRINTTOPRINTER:
595 lexrc >> print_to_printer;
598 case RC_PRINT_ADAPTOUTPUT:
599 lexrc >> print_adapt_output;
604 print_to_file = os::internal_path(lexrc.getString());
608 case RC_PRINTFILEEXTENSION:
609 lexrc >> print_file_extension;
612 case RC_PRINTEXSTRAOPTIONS:
613 lexrc >> print_extra_options;
616 case RC_PRINTSPOOL_COMMAND:
617 if (lexrc.next(true)) {
618 print_spool_command = lexrc.getString();
622 case RC_PRINTSPOOL_PRINTERPREFIX:
623 lexrc >> print_spool_printerprefix;
626 case RC_PRINTPAPERDIMENSIONFLAG:
627 lexrc >> print_paper_dimension_flag;
630 case RC_PRINTPAPERFLAG:
631 lexrc >> print_paper_flag;
634 case RC_VIEWDVI_PAPEROPTION:
636 view_dvi_paper_option = lexrc.getString();
638 view_dvi_paper_option.erase();
641 case RC_CHKTEX_COMMAND:
642 if (lexrc.next(true)) {
643 chktex_command = lexrc.getString();
647 case RC_BIBTEX_ALTERNATIVES:
648 if (lexrc.next(true)) {
649 bibtex_alternatives.insert(lexrc.getString());
653 case RC_BIBTEX_COMMAND:
654 if (lexrc.next(true)) {
655 bibtex_command = lexrc.getString();
659 case RC_JBIBTEX_COMMAND:
660 if (lexrc.next(true)) {
661 jbibtex_command = lexrc.getString();
665 case RC_INDEX_ALTERNATIVES:
666 if (lexrc.next(true)) {
667 index_alternatives.insert(lexrc.getString());
671 case RC_INDEX_COMMAND:
672 if (lexrc.next(true)) {
673 index_command = lexrc.getString();
677 case RC_JINDEX_COMMAND:
678 if (lexrc.next(true)) {
679 jindex_command = lexrc.getString();
683 case RC_SPLITINDEX_COMMAND:
684 if (lexrc.next(true)) {
685 splitindex_command = lexrc.getString();
689 case RC_NOMENCL_COMMAND:
690 if (lexrc.next(true)) {
691 nomencl_command = lexrc.getString();
703 case RC_GEOMETRY_SESSION:
704 lexrc >> allow_geometry_session;
707 case RC_SCREEN_FONT_SIZES:
708 lexrc >> font_sizes[FONT_SIZE_TINY];
709 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
710 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
711 lexrc >> font_sizes[FONT_SIZE_SMALL];
712 lexrc >> font_sizes[FONT_SIZE_NORMAL];
713 lexrc >> font_sizes[FONT_SIZE_LARGE];
714 lexrc >> font_sizes[FONT_SIZE_LARGER];
715 lexrc >> font_sizes[FONT_SIZE_LARGEST];
716 lexrc >> font_sizes[FONT_SIZE_HUGE];
717 lexrc >> font_sizes[FONT_SIZE_HUGER];
720 case RC_SCREEN_FONT_SCALABLE:
721 lexrc >> use_scalable_fonts;
728 case RC_DOCUMENTPATH:
730 document_path = os::internal_path(lexrc.getString());
731 document_path = expandPath(document_path);
737 example_path = os::internal_path(lexrc.getString());
738 example_path = expandPath(example_path);
742 case RC_TEMPLATEPATH:
744 template_path = os::internal_path(lexrc.getString());
745 template_path = expandPath(template_path);
751 tempdir_path = os::internal_path(lexrc.getString());
752 tempdir_path = expandPath(tempdir_path);
756 case RC_THESAURUSDIRPATH:
758 thesaurusdir_path = os::internal_path(lexrc.getString());
759 thesaurusdir_path = expandPath(thesaurusdir_path);
763 case RC_HUNSPELLDIR_PATH:
765 hunspelldir_path = os::internal_path(lexrc.getString());
766 hunspelldir_path = expandPath(hunspelldir_path);
770 case RC_USELASTFILEPOS:
771 lexrc >> use_lastfilepos;
775 lexrc >> load_session;
778 case RC_MOUSE_WHEEL_SPEED:
779 lexrc >> mouse_wheel_speed;
782 case RC_COMPLETION_INLINE_DELAY:
783 lexrc >> completion_inline_delay;
786 case RC_COMPLETION_INLINE_MATH:
787 lexrc >> completion_inline_math;
790 case RC_COMPLETION_INLINE_TEXT:
791 lexrc >> completion_inline_text;
794 case RC_COMPLETION_INLINE_DOTS:
795 lexrc >> completion_inline_dots;
798 case RC_AUTOCORRECTION_MATH:
799 lexrc >> autocorrection_math;
802 case RC_COMPLETION_POPUP_DELAY:
803 lexrc >> completion_popup_delay;
806 case RC_COMPLETION_POPUP_MATH:
807 lexrc >> completion_popup_math;
810 case RC_COMPLETION_POPUP_TEXT:
811 lexrc >> completion_popup_text;
814 case RC_COMPLETION_CURSOR_TEXT:
815 lexrc >> completion_cursor_text;
818 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
819 lexrc >> completion_popup_after_complete;
822 case RC_COMPLETION_MINLENGTH:
823 lexrc >> completion_minlength;
826 case RC_NUMLASTFILES:
827 lexrc >> num_lastfiles;
830 case RC_CHECKLASTFILES:
831 lexrc >> check_lastfiles;
838 case RC_USE_SYSTEM_THEME_ICONS:
839 lexrc >> use_system_theme_icons;
842 case RC_SCREEN_FONT_ROMAN:
844 roman_font_name = lexrc.getString();
845 oldFontFormat(roman_font_name,
850 case RC_SCREEN_FONT_SANS:
852 sans_font_name = lexrc.getString();
853 oldFontFormat(sans_font_name, sans_font_foundry);
857 case RC_SCREEN_FONT_TYPEWRITER:
859 typewriter_font_name = lexrc.getString();
860 oldFontFormat(typewriter_font_name,
861 typewriter_font_foundry);
865 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
866 lexrc >> roman_font_foundry;
869 case RC_SCREEN_FONT_SANS_FOUNDRY:
870 lexrc >> sans_font_foundry;
873 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
874 lexrc >> typewriter_font_foundry;
879 lexrc.printError("Missing color tag.");
882 string lyx_name = lexrc.getString();
885 lexrc.printError("Missing color name for color: `$$Token'");
888 string x11_name = lexrc.getString();
890 ColorCode const col =
891 lcolor.getFromLyXName(lyx_name);
892 if (col == Color_none ||
893 col == Color_inherit ||
897 if (!lcolor.setColor(col, x11_name))
898 LYXERR0("Bad lyxrc set_color for " << lyx_name);
902 case RC_AUTOREGIONDELETE:
903 // Auto region delete defaults to true
904 lexrc >> auto_region_delete;
909 lyxpipes = os::internal_path(lexrc.getString());
910 lyxpipes = expandPath(lyxpipes);
914 case RC_CURSOR_FOLLOWS_SCROLLBAR:
915 lexrc >> cursor_follows_scrollbar;
918 case RC_CURSOR_WIDTH:
919 lexrc >> cursor_width;
922 case RC_SCROLL_BELOW_DOCUMENT:
923 lexrc >> scroll_below_document;
926 case RC_PARAGRAPH_MARKERS:
927 lexrc >> paragraph_markers;
930 case RC_MAC_DONTSWAP_CTRL_META:
931 lexrc >> mac_dontswap_ctrl_meta;
934 case RC_MAC_LIKE_CURSOR_MOVEMENT:
935 lexrc >> mac_like_cursor_movement;
938 case RC_MACRO_EDIT_STYLE:
940 switch (lexrc.getInteger()) {
941 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
942 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
943 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
948 case RC_DIALOGS_ICONIFY_WITH_MAIN:
949 lexrc >> dialogs_iconify_with_main;
952 case RC_PLAINTEXT_LINELEN:
953 lexrc >> plaintext_linelen;
955 // Spellchecker settings:
956 case RC_ACCEPT_COMPOUND:
957 lexrc >> spellchecker_accept_compound;
959 case RC_USE_SYSTEM_COLORS:
960 lexrc >> use_system_colors;
963 lexrc >> use_tooltip;
965 case RC_USE_PIXMAP_CACHE:
966 lexrc >> use_pixmap_cache;
971 case RC_SPELLCHECKER:
972 lexrc >> spellchecker;
975 lexrc >> spellchecker_alt_lang;
978 lexrc >> spellchecker_esc_chars;
980 case RC_SPELLCHECK_CONTINUOUSLY:
981 lexrc >> spellcheck_continuously;
983 case RC_SPELLCHECK_NOTES:
984 lexrc >> spellcheck_notes;
987 lexrc >> make_backup;
989 case RC_SAVE_COMPRESSED:
990 lexrc >> save_compressed;
993 lexrc >> save_origin;
995 case RC_BACKUPDIR_PATH:
997 backupdir_path = os::internal_path(lexrc.getString());
998 backupdir_path = expandPath(backupdir_path);
1001 case RC_DEFAULT_DECIMAL_POINT:
1002 lexrc >> default_decimal_point;
1004 case RC_DEFAULT_LENGTH_UNIT:
1006 default_length_unit = (Length::UNIT) lexrc.getInteger();
1008 case RC_DATE_INSERT_FORMAT:
1009 lexrc >> date_insert_format;
1011 case RC_LANGUAGE_CUSTOM_PACKAGE:
1012 lexrc >> language_custom_package;
1014 case RC_LANGUAGE_AUTO_BEGIN:
1015 lexrc >> language_auto_begin;
1017 case RC_LANGUAGE_AUTO_END:
1018 lexrc >> language_auto_end;
1020 case RC_LANGUAGE_GLOBAL_OPTIONS:
1021 lexrc >> language_global_options;
1023 case RC_LANGUAGE_PACKAGE_SELECTION:
1025 switch (lexrc.getInteger()) {
1027 language_package_selection = LP_AUTO;
1030 language_package_selection = LP_BABEL;
1033 language_package_selection = LP_CUSTOM;
1036 language_package_selection = LP_NONE;
1041 case RC_LANGUAGE_COMMAND_BEGIN:
1042 lexrc >> language_command_begin;
1044 case RC_LANGUAGE_COMMAND_END:
1045 lexrc >> language_command_end;
1047 case RC_LANGUAGE_COMMAND_LOCAL:
1048 lexrc >> language_command_local;
1050 case RC_VISUAL_CURSOR:
1051 lexrc >> visual_cursor;
1053 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
1054 lexrc >> close_buffer_with_last_view;
1056 case RC_AUTO_NUMBER:
1057 lexrc >> auto_number;
1059 case RC_MARK_FOREIGN_LANGUAGE:
1060 lexrc >> mark_foreign_language;
1064 string fmt, command;
1066 fmt = lexrc.getString();
1067 if (lexrc.next(true))
1068 command = lexrc.getString();
1069 setMover(fmt, command);
1073 case RC_CONVERTER: {
1074 string from, to, command, flags;
1076 from = lexrc.getString();
1078 to = lexrc.getString();
1079 if (lexrc.next(true))
1080 command = lexrc.getString();
1082 flags = lexrc.getString();
1083 if (command.empty())
1084 theConverters().erase(from, to);
1086 theConverters().add(from, to, command, flags);
1089 // compatibility with versions older than 1.4.0 only
1091 string format, command;
1092 lexrc >> format >> command;
1093 formats.setViewer(format, command);
1096 case RC_FILEFORMAT: {
1098 string format, extensions, prettyname, shortcut;
1099 if (!(lexrc >> format >> extensions))
1101 if (ok && lexrc.next(true))
1102 prettyname = lexrc.getString();
1106 if(!(lexrc >> shortcut))
1108 string viewer, editor;
1109 if (ok && lexrc.next(true))
1110 viewer = lexrc.getString();
1113 if (ok && lexrc.next(true))
1114 editor = lexrc.getString();
1118 if (!(lexrc >> flags >> mime))
1120 int flgs = Format::none;
1121 while (!flags.empty()) {
1123 flags = split(flags, flag, ',');
1124 if (flag == "document")
1125 flgs |= Format::document;
1126 else if (flag == "vector")
1127 flgs |= Format::vector;
1128 else if (flag == "zipped=native")
1129 flgs |= Format::zipped_native;
1130 else if (flag == "menu=export")
1131 flgs |= Format::export_menu;
1133 LYXERR0("Ignoring unknown flag `"
1134 << flag << "' for format `"
1138 LYXERR0("Syntax error in format " << format);
1139 else if (prettyname.empty()) {
1140 if (theConverters().formatIsUsed(format))
1141 LYXERR0("Can't delete format " << format);
1143 formats.erase(format);
1145 formats.add(format, extensions, prettyname,
1146 shortcut, viewer, editor, mime, flgs);
1150 case RC_VIEWER_ALTERNATIVES: {
1151 string format, command;
1154 viewer_alternatives[format].insert(command);
1157 case RC_EDITOR_ALTERNATIVES: {
1158 string format, command;
1161 editor_alternatives[format].insert(command);
1165 case RC_DEFAULT_OTF_VIEW_FORMAT:
1166 lexrc >> default_otf_view_format;
1169 case RC_DEFAULT_VIEW_FORMAT:
1170 lexrc >> default_view_format;
1173 case RC_GUI_LANGUAGE:
1174 lexrc >> gui_language;
1177 case RC_SHOW_BANNER:
1178 lexrc >> show_banner;
1183 string const tmp = lexrc.getString();
1184 if (tmp == "true" || tmp == "on")
1185 preview = PREVIEW_ON;
1186 else if (tmp == "no_math")
1187 preview = PREVIEW_NO_MATH;
1189 preview = PREVIEW_OFF;
1190 if (tmp != "false" && tmp != "off")
1191 LYXERR0("Unrecognized preview status \""
1197 case RC_PREVIEW_HASHED_LABELS:
1198 lexrc >> preview_hashed_labels;
1201 case RC_PREVIEW_SCALE_FACTOR:
1202 lexrc >> preview_scale_factor;
1209 lexrc >> user_email;
1212 case RC_PATH_PREFIX:
1213 lexrc >> path_prefix;
1216 case RC_USE_CONVERTER_CACHE:
1217 lexrc >> use_converter_cache;
1219 case RC_CONVERTER_CACHE_MAXAGE:
1220 lexrc >> converter_cache_maxage;
1223 case RC_SORT_LAYOUTS:
1224 lexrc >> sort_layouts;
1226 case RC_GROUP_LAYOUTS:
1227 lexrc >> group_layouts;
1229 case RC_FULL_SCREEN_LIMIT:
1230 lexrc >> full_screen_limit;
1232 case RC_FULL_SCREEN_TOOLBARS:
1233 lexrc >> full_screen_toolbars;
1235 case RC_FULL_SCREEN_SCROLLBAR:
1236 lexrc >> full_screen_scrollbar;
1238 case RC_FULL_SCREEN_STATUSBAR:
1239 lexrc >> full_screen_statusbar;
1241 case RC_FULL_SCREEN_TABBAR:
1242 lexrc >> full_screen_tabbar;
1244 case RC_FULL_SCREEN_MENUBAR:
1245 lexrc >> full_screen_menubar;
1247 case RC_FULL_SCREEN_WIDTH:
1248 lexrc >> full_screen_width;
1250 case RC_OPEN_BUFFERS_IN_TABS:
1251 lexrc >> open_buffers_in_tabs;
1253 case RC_SINGLE_CLOSE_TAB_BUTTON:
1254 lexrc >> single_close_tab_button;
1256 case RC_SINGLE_INSTANCE:
1257 lexrc >> single_instance;
1258 if (run_mode == PREFERRED)
1259 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1261 case RC_FORWARD_SEARCH_DVI:
1262 if (lexrc.next(true))
1263 forward_search_dvi = lexrc.getString();
1265 case RC_FORWARD_SEARCH_PDF:
1266 if (lexrc.next(true))
1267 forward_search_pdf = lexrc.getString();
1269 case RC_EXPORT_OVERWRITE:
1271 string const tmp = lexrc.getString();
1272 if (tmp == "all" || tmp == "true")
1273 export_overwrite = ALL_FILES;
1274 else if (tmp == "main")
1275 export_overwrite = MAIN_FILE;
1277 export_overwrite = NO_FILES;
1278 if (tmp != "ask" && tmp != "false")
1279 LYXERR0("Unrecognized export_overwrite status \""
1284 case RC_SCROLL_WHEEL_ZOOM:
1286 string const tmp = lexrc.getString();
1288 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1289 else if (tmp == "shift")
1290 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1291 else if (tmp == "alt")
1292 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1294 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1295 if (tmp != "off" && tmp != "false")
1296 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1302 case RC_MOUSE_MIDDLEBUTTON_PASTE:
1303 lexrc >> mouse_middlebutton_paste;
1307 break; // this is just a dummy
1310 // This is triggered the first time through the loop unless
1311 // we hit a format tag.
1312 if (check_format && format != LYXRC_FILEFORMAT)
1313 return FormatMismatch;
1316 /// Update converters data-structures
1317 theConverters().update(formats);
1318 theConverters().buildGraph();
1324 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1326 ofstream ofs(filename.toFilesystemEncoding().c_str());
1328 write(ofs, ignore_system_lyxrc);
1332 void LyXRC::print() const
1334 if (lyxerr.debugging())
1335 write(lyxerr, false);
1343 typedef pair<string, SpecialisedMover> Data;
1345 SameMover(Data const & comparison)
1346 : comparison_(comparison) {}
1348 bool operator()(Data const & data) const
1350 return data.first == comparison_.first &&
1351 data.second.command() == comparison_.second.command();
1361 // Escape \ and " so that LyXLex can read the string later
1362 string escapeCommand(string const & str) {
1363 return subst(subst(str , "\\", "\\\\"),
1370 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1372 LyXRCTags tag = RC_LAST;
1374 if (!name.empty()) {
1375 for (int i = 0; i != lyxrcCount; ++i)
1376 if ("\\" + name == lyxrcTags[i].tag)
1377 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1381 os << "# LyX " << lyx_version
1382 << " generated this file. If you want to make your own\n"
1383 << "# modifications you should do them from inside LyX and save.\n\n"
1384 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1386 // Why the switch you might ask. It is a trick to ensure that all
1387 // the elements in the LyXRCTags enum are handled. As you can see
1388 // there are no breaks at all. So it is just a huge fall-through.
1389 // The nice thing is that we will get a warning from the compiler
1390 // if we forget an element.
1394 // input/include files are not done here
1395 case RC_LYXRCFORMAT:
1397 if (ignore_system_lyxrc ||
1398 bind_file != system_lyxrc.bind_file) {
1399 string const path = os::external_path(bind_file);
1400 os << "\\bind_file \"" << path << "\"\n";
1406 if (ignore_system_lyxrc ||
1407 def_file != system_lyxrc.def_file) {
1408 string const path = os::external_path(def_file);
1409 os << "\\def_file \"" << path << "\"\n";
1418 << "# MISC SECTION ######################################\n"
1420 // bind files are not done here.
1422 case RC_PATH_PREFIX:
1423 if (ignore_system_lyxrc ||
1424 path_prefix != system_lyxrc.path_prefix) {
1425 os << "\\path_prefix \"" << path_prefix << "\"\n";
1430 if (ignore_system_lyxrc ||
1431 ui_file != system_lyxrc.ui_file) {
1432 string const path = os::external_path(ui_file);
1433 os << "\\ui_file \"" << path << "\"\n";
1437 case RC_AUTOREGIONDELETE:
1438 if (ignore_system_lyxrc ||
1439 auto_region_delete != system_lyxrc.auto_region_delete) {
1440 os << "# Set to false to inhibit automatic replacement of\n"
1441 << "# the current selection.\n"
1442 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1447 case RC_AUTORESET_OPTIONS:
1448 if (ignore_system_lyxrc ||
1449 auto_reset_options != system_lyxrc.auto_reset_options) {
1450 os << "# Set to false to inhibit automatic reset of\n"
1451 << "# the class options to defaults on class change.\n"
1452 << "\\auto_reset_options "
1453 << convert<string>(auto_reset_options)
1459 if (ignore_system_lyxrc ||
1460 autosave != system_lyxrc.autosave) {
1461 os << "# The time interval between auto-saves in seconds.\n"
1462 << "\\autosave " << autosave << '\n';
1466 case RC_DISPLAY_GRAPHICS:
1467 if (ignore_system_lyxrc ||
1468 display_graphics != system_lyxrc.display_graphics) {
1469 os << "# Display graphics within LyX\n"
1471 << "\\display_graphics "
1472 << (display_graphics ? "true" : "false")
1477 case RC_SORT_LAYOUTS:
1478 if (ignore_system_lyxrc ||
1479 sort_layouts != system_lyxrc.sort_layouts) {
1480 os << "# Sort layouts alphabetically.\n"
1481 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1485 case RC_GROUP_LAYOUTS:
1486 if (ignore_system_lyxrc ||
1487 group_layouts != system_lyxrc.group_layouts) {
1488 os << "# Group layouts by their category.\n"
1489 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1493 case RC_VIEWDVI_PAPEROPTION:
1494 if (ignore_system_lyxrc ||
1495 view_dvi_paper_option
1496 != system_lyxrc.view_dvi_paper_option) {
1497 os << "# Options used to specify paper size to the\n"
1498 << "# view_dvi_command (e.g. -paper)\n"
1499 << "\\view_dvi_paper_option \""
1500 << view_dvi_paper_option << "\"\n";
1504 case RC_CHKTEX_COMMAND:
1505 if (ignore_system_lyxrc ||
1506 chktex_command != system_lyxrc.chktex_command) {
1507 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1511 case RC_BIBTEX_ALTERNATIVES: {
1512 CommandSet::const_iterator it = bibtex_alternatives.begin();
1513 CommandSet::const_iterator end = bibtex_alternatives.end();
1514 for ( ; it != end; ++it) {
1515 if (ignore_system_lyxrc
1516 || !system_lyxrc.bibtex_alternatives.count(*it))
1517 os << "\\bibtex_alternatives \""
1523 case RC_BIBTEX_COMMAND:
1524 if (ignore_system_lyxrc ||
1525 bibtex_command != system_lyxrc.bibtex_command) {
1526 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1530 case RC_JBIBTEX_COMMAND:
1531 if (ignore_system_lyxrc ||
1532 jbibtex_command != system_lyxrc.jbibtex_command) {
1533 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1537 case RC_INDEX_ALTERNATIVES: {
1538 CommandSet::const_iterator it = index_alternatives.begin();
1539 CommandSet::const_iterator end = index_alternatives.end();
1540 for ( ; it != end; ++it) {
1541 if (ignore_system_lyxrc
1542 || !system_lyxrc.index_alternatives.count(*it))
1543 os << "\\index_alternatives \""
1549 case RC_INDEX_COMMAND:
1550 if (ignore_system_lyxrc ||
1551 index_command != system_lyxrc.index_command) {
1552 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1556 case RC_JINDEX_COMMAND:
1557 if (ignore_system_lyxrc ||
1558 jindex_command != system_lyxrc.jindex_command) {
1559 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1563 case RC_SPLITINDEX_COMMAND:
1564 if (ignore_system_lyxrc ||
1565 splitindex_command != system_lyxrc.splitindex_command) {
1566 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1570 case RC_NOMENCL_COMMAND:
1571 if (ignore_system_lyxrc ||
1572 nomencl_command != system_lyxrc.nomencl_command) {
1573 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1577 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1578 // Don't write this setting to the preferences file,
1579 // but allow temporary changes (bug 7557).
1580 if (ignore_system_lyxrc) {
1581 os << "\\tex_expects_windows_paths "
1582 << convert<string>(windows_style_tex_paths) << '\n';
1586 case RC_TEX_ALLOWS_SPACES:
1587 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1588 os << "\\tex_allows_spaces "
1589 << convert<string>(tex_allows_spaces) << '\n';
1594 if (ignore_system_lyxrc ||
1595 use_kbmap != system_lyxrc.use_kbmap) {
1596 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1600 case RC_KBMAP_PRIMARY:
1601 if (ignore_system_lyxrc ||
1602 primary_kbmap != system_lyxrc.primary_kbmap) {
1603 string const path = os::external_path(primary_kbmap);
1604 os << "\\kbmap_primary \"" << path << "\"\n";
1608 case RC_KBMAP_SECONDARY:
1609 if (ignore_system_lyxrc ||
1610 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1611 string const path = os::external_path(secondary_kbmap);
1612 os << "\\kbmap_secondary \"" << path << "\"\n";
1617 if (ignore_system_lyxrc ||
1618 lyxpipes != system_lyxrc.lyxpipes) {
1619 string const path = os::external_path(lyxpipes);
1620 os << "\\serverpipe \"" << path << "\"\n";
1624 case RC_DATE_INSERT_FORMAT:
1625 if (ignore_system_lyxrc ||
1626 date_insert_format != system_lyxrc.date_insert_format) {
1627 os << "\\date_insert_format \"" << date_insert_format
1634 os << "\\user_name \"" << user_name << "\"\n";
1639 os << "\\user_email \"" << user_email << "\"\n";
1643 case RC_SHOW_BANNER:
1644 if (ignore_system_lyxrc ||
1645 show_banner != system_lyxrc.show_banner) {
1646 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1652 if (ignore_system_lyxrc ||
1653 preview != system_lyxrc.preview) {
1659 case PREVIEW_NO_MATH:
1666 os << "\\preview " << status << '\n';
1671 case RC_PREVIEW_HASHED_LABELS:
1672 if (ignore_system_lyxrc ||
1673 preview_hashed_labels !=
1674 system_lyxrc.preview_hashed_labels) {
1675 os << "\\preview_hashed_labels "
1676 << convert<string>(preview_hashed_labels) << '\n';
1681 case RC_PREVIEW_SCALE_FACTOR:
1682 if (ignore_system_lyxrc ||
1683 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1684 os << "\\preview_scale_factor "
1685 << preview_scale_factor << '\n';
1690 case RC_USE_CONVERTER_CACHE:
1691 if (ignore_system_lyxrc ||
1692 use_converter_cache != system_lyxrc.use_converter_cache) {
1693 os << "\\use_converter_cache "
1694 << convert<string>(use_converter_cache) << '\n';
1699 case RC_CONVERTER_CACHE_MAXAGE:
1700 if (ignore_system_lyxrc ||
1701 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1702 os << "\\converter_cache_maxage "
1703 << converter_cache_maxage << '\n';
1709 << "# SCREEN & FONTS SECTION ############################\n"
1713 if (ignore_system_lyxrc ||
1714 icon_set != system_lyxrc.icon_set) {
1715 os << "\\icon_set \"" << icon_set
1721 case RC_USE_SYSTEM_THEME_ICONS:
1722 if (ignore_system_lyxrc ||
1723 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1724 os << "\\use_system_theme_icons "
1725 << convert<string>(use_system_theme_icons)
1732 if (ignore_system_lyxrc ||
1733 dpi != system_lyxrc.dpi) {
1734 os << "\\screen_dpi " << dpi << '\n';
1738 case RC_SCREEN_ZOOM:
1739 if (ignore_system_lyxrc ||
1740 zoom != system_lyxrc.zoom) {
1741 os << "\\screen_zoom " << zoom << '\n';
1745 case RC_GEOMETRY_SESSION:
1746 if (ignore_system_lyxrc ||
1747 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1748 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1753 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1754 if (ignore_system_lyxrc ||
1755 cursor_follows_scrollbar
1756 != system_lyxrc.cursor_follows_scrollbar) {
1757 os << "\\cursor_follows_scrollbar "
1758 << convert<string>(cursor_follows_scrollbar) << '\n';
1762 case RC_CURSOR_WIDTH:
1763 if (ignore_system_lyxrc ||
1765 != system_lyxrc.cursor_width) {
1766 os << "\\cursor_width "
1767 << cursor_width << '\n';
1771 case RC_SCROLL_BELOW_DOCUMENT:
1772 if (ignore_system_lyxrc ||
1773 scroll_below_document
1774 != system_lyxrc.scroll_below_document) {
1775 os << "\\scroll_below_document "
1776 << convert<string>(scroll_below_document) << '\n';
1780 case RC_PARAGRAPH_MARKERS:
1781 if (ignore_system_lyxrc ||
1783 != system_lyxrc.paragraph_markers) {
1784 os << "\\paragraph_markers "
1785 << convert<string>(paragraph_markers) << '\n';
1789 case RC_MAC_DONTSWAP_CTRL_META:
1790 if (ignore_system_lyxrc ||
1791 mac_dontswap_ctrl_meta
1792 != system_lyxrc.mac_dontswap_ctrl_meta) {
1793 os << "\\mac_dontswap_ctrl_meta "
1794 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1798 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1799 if (ignore_system_lyxrc ||
1800 mac_like_cursor_movement
1801 != system_lyxrc.mac_like_cursor_movement) {
1802 os << "\\mac_like_cursor_movement "
1803 << convert<string>(mac_like_cursor_movement) << '\n';
1807 case RC_MACRO_EDIT_STYLE:
1808 if (ignore_system_lyxrc ||
1810 != system_lyxrc.macro_edit_style) {
1811 os << "\\macro_edit_style ";
1812 switch (macro_edit_style) {
1813 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1814 case MACRO_EDIT_INLINE: os << "1\n"; break;
1815 case MACRO_EDIT_LIST: os << "2\n"; break;
1820 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1821 if (ignore_system_lyxrc ||
1822 dialogs_iconify_with_main
1823 != system_lyxrc.dialogs_iconify_with_main) {
1824 os << "\\dialogs_iconify_with_main "
1825 << convert<string>(dialogs_iconify_with_main) << '\n';
1829 case RC_SCREEN_FONT_ROMAN:
1830 if (ignore_system_lyxrc ||
1831 roman_font_name != system_lyxrc.roman_font_name) {
1832 os << "\\screen_font_roman \"" << roman_font_name
1837 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1838 if (ignore_system_lyxrc ||
1839 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1840 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1845 case RC_SCREEN_FONT_SANS:
1846 if (ignore_system_lyxrc ||
1847 sans_font_name != system_lyxrc.sans_font_name) {
1848 os << "\\screen_font_sans \"" << sans_font_name
1853 case RC_SCREEN_FONT_SANS_FOUNDRY:
1854 if (ignore_system_lyxrc ||
1855 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1856 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1861 case RC_SCREEN_FONT_TYPEWRITER:
1862 if (ignore_system_lyxrc ||
1863 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1864 os << "\\screen_font_typewriter \""
1865 << typewriter_font_name << "\"\n";
1869 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1870 if (ignore_system_lyxrc ||
1871 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1872 os << "\\screen_font_typewriter_foundry \""
1873 << typewriter_font_foundry << "\"\n";
1878 case RC_SCREEN_FONT_SCALABLE:
1879 if (ignore_system_lyxrc ||
1880 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1881 os << "\\screen_font_scalable "
1882 << convert<string>(use_scalable_fonts)
1887 case RC_SCREEN_FONT_SIZES:
1888 if (ignore_system_lyxrc ||
1889 font_sizes[FONT_SIZE_TINY]
1890 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1891 font_sizes[FONT_SIZE_SCRIPT]
1892 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1893 font_sizes[FONT_SIZE_FOOTNOTE]
1894 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1895 font_sizes[FONT_SIZE_SMALL]
1896 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1897 font_sizes[FONT_SIZE_NORMAL]
1898 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1899 font_sizes[FONT_SIZE_LARGE]
1900 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1901 font_sizes[FONT_SIZE_LARGER]
1902 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1903 font_sizes[FONT_SIZE_LARGEST]
1904 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1905 font_sizes[FONT_SIZE_HUGE]
1906 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1907 font_sizes[FONT_SIZE_HUGER]
1908 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1909 streamsize old_prec = os.precision();
1910 os.setf(ios::fixed);
1912 os << "\\screen_font_sizes"
1913 << ' ' << font_sizes[FONT_SIZE_TINY]
1914 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1915 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1916 << ' ' << font_sizes[FONT_SIZE_SMALL]
1917 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1918 << ' ' << font_sizes[FONT_SIZE_LARGE]
1919 << ' ' << font_sizes[FONT_SIZE_LARGER]
1920 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1921 << ' ' << font_sizes[FONT_SIZE_HUGE]
1922 << ' ' << font_sizes[FONT_SIZE_HUGER]
1924 os.precision(old_prec);
1925 os.unsetf(ios::fixed);
1929 case RC_FULL_SCREEN_LIMIT:
1930 if (ignore_system_lyxrc ||
1931 full_screen_limit != system_lyxrc.full_screen_limit) {
1932 os << "\\fullscreen_limit "
1933 << convert<string>(full_screen_limit)
1938 case RC_FULL_SCREEN_TOOLBARS:
1939 if (ignore_system_lyxrc ||
1940 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1941 os << "\\fullscreen_toolbars "
1942 << convert<string>(full_screen_toolbars)
1947 case RC_FULL_SCREEN_SCROLLBAR:
1948 if (ignore_system_lyxrc ||
1949 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1950 os << "\\fullscreen_scrollbar "
1951 << convert<string>(full_screen_scrollbar)
1956 case RC_FULL_SCREEN_STATUSBAR:
1957 if (ignore_system_lyxrc ||
1958 full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
1959 os << "\\fullscreen_statusbar "
1960 << convert<string>(full_screen_statusbar)
1965 case RC_FULL_SCREEN_TABBAR:
1966 if (ignore_system_lyxrc ||
1967 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1968 os << "\\fullscreen_tabbar "
1969 << convert<string>(full_screen_tabbar)
1974 case RC_FULL_SCREEN_MENUBAR:
1975 if (ignore_system_lyxrc ||
1976 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1977 os << "\\fullscreen_menubar "
1978 << convert<string>(full_screen_menubar)
1983 case RC_FULL_SCREEN_WIDTH:
1984 if (ignore_system_lyxrc ||
1985 full_screen_width != system_lyxrc.full_screen_width) {
1986 os << "\\fullscreen_width "
1987 << convert<string>(full_screen_width)
1992 case RC_OPEN_BUFFERS_IN_TABS:
1993 if (ignore_system_lyxrc ||
1994 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1995 os << "\\open_buffers_in_tabs "
1996 << convert<string>(open_buffers_in_tabs)
2001 case RC_SINGLE_CLOSE_TAB_BUTTON:
2002 if (ignore_system_lyxrc ||
2003 single_close_tab_button != system_lyxrc.single_close_tab_button) {
2004 os << "\\single_close_tab_button "
2005 << convert<string>(single_close_tab_button)
2010 case RC_SINGLE_INSTANCE:
2011 if (ignore_system_lyxrc ||
2012 single_instance != system_lyxrc.single_instance) {
2013 os << "\\single_instance "
2014 << convert<string>(single_instance)
2019 case RC_FORWARD_SEARCH_DVI:
2020 if (ignore_system_lyxrc ||
2021 forward_search_dvi != system_lyxrc.forward_search_dvi) {
2022 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
2026 case RC_FORWARD_SEARCH_PDF:
2027 if (ignore_system_lyxrc ||
2028 forward_search_pdf != system_lyxrc.forward_search_pdf) {
2029 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
2035 << "# COLOR SECTION ###################################\n"
2039 for (int i = 0; i < Color_ignore; ++i) {
2040 ColorCode lc = static_cast<ColorCode>(i);
2041 string const col = lcolor.getX11Name(lc);
2042 if (ignore_system_lyxrc
2043 || col != system_lcolor.getX11Name(lc)) {
2044 os << "\\set_color \""
2045 << lcolor.getLyXName(lc) << "\" \""
2053 << "# PRINTER SECTION ###################################\n"
2057 if (ignore_system_lyxrc ||
2058 printer != system_lyxrc.printer) {
2059 os << "\\printer \"" << printer << "\"\n";
2063 case RC_PRINT_ADAPTOUTPUT:
2064 if (ignore_system_lyxrc ||
2065 print_adapt_output != system_lyxrc.print_adapt_output) {
2066 os << "\\print_adapt_output "
2067 << convert<string>(print_adapt_output)
2072 case RC_PRINT_COMMAND:
2073 if (ignore_system_lyxrc ||
2074 print_command != system_lyxrc.print_command) {
2075 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
2079 case RC_PRINTEXSTRAOPTIONS:
2080 if (ignore_system_lyxrc ||
2081 print_extra_options != system_lyxrc.print_extra_options) {
2082 os << "\\print_extra_options \"" << print_extra_options
2087 case RC_PRINTSPOOL_COMMAND:
2088 if (ignore_system_lyxrc ||
2089 print_spool_command != system_lyxrc.print_spool_command) {
2090 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
2095 case RC_PRINTSPOOL_PRINTERPREFIX:
2096 if (ignore_system_lyxrc ||
2097 print_spool_printerprefix
2098 != system_lyxrc.print_spool_printerprefix) {
2099 os << "\\print_spool_printerprefix \""
2100 << print_spool_printerprefix << "\"\n";
2104 case RC_PRINTEVENPAGEFLAG:
2105 if (ignore_system_lyxrc ||
2106 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
2107 os << "\\print_evenpage_flag \"" << print_evenpage_flag
2112 case RC_PRINTODDPAGEFLAG:
2113 if (ignore_system_lyxrc ||
2114 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
2115 os << "\\print_oddpage_flag \"" << print_oddpage_flag
2120 case RC_PRINTREVERSEFLAG:
2121 if (ignore_system_lyxrc ||
2122 print_reverse_flag != system_lyxrc.print_reverse_flag) {
2123 os << "\\print_reverse_flag \"" << print_reverse_flag
2128 case RC_PRINTLANDSCAPEFLAG:
2129 if (ignore_system_lyxrc ||
2130 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2131 os << "\\print_landscape_flag \"" << print_landscape_flag
2136 case RC_PRINTPAGERANGEFLAG:
2137 if (ignore_system_lyxrc ||
2138 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
2139 os << "\\print_pagerange_flag \"" << print_pagerange_flag
2144 case RC_PRINTCOPIESFLAG:
2145 if (ignore_system_lyxrc ||
2146 print_copies_flag != system_lyxrc.print_copies_flag) {
2147 os << "\\print_copies_flag \"" << print_copies_flag
2152 case RC_PRINTCOLLCOPIESFLAG:
2153 if (ignore_system_lyxrc ||
2154 print_collcopies_flag
2155 != system_lyxrc.print_collcopies_flag) {
2156 os << "\\print_collcopies_flag \""
2157 << print_collcopies_flag
2162 case RC_PRINTPAPERFLAG:
2163 if (ignore_system_lyxrc ||
2164 print_paper_flag != system_lyxrc.print_paper_flag) {
2165 os << "\\print_paper_flag \"" << print_paper_flag
2170 case RC_PRINTPAPERDIMENSIONFLAG:
2171 if (ignore_system_lyxrc ||
2172 print_paper_dimension_flag
2173 != system_lyxrc.print_paper_dimension_flag) {
2174 os << "\\print_paper_dimension_flag \""
2175 << print_paper_dimension_flag << "\"\n";
2179 case RC_PRINTTOPRINTER:
2180 if (ignore_system_lyxrc ||
2181 print_to_printer != system_lyxrc.print_to_printer) {
2182 os << "\\print_to_printer \"" << print_to_printer
2187 case RC_PRINTTOFILE:
2188 if (ignore_system_lyxrc ||
2189 print_to_file != system_lyxrc.print_to_file) {
2190 string const path = os::external_path(print_to_file);
2191 os << "\\print_to_file \"" << path << "\"\n";
2195 case RC_PRINTFILEEXTENSION:
2196 if (ignore_system_lyxrc ||
2197 print_file_extension != system_lyxrc.print_file_extension) {
2198 os << "\\print_file_extension \""
2199 << print_file_extension
2206 << "# TEX SECTION #######################################\n"
2209 case RC_TEXINPUTS_PREFIX:
2210 if (ignore_system_lyxrc ||
2211 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2212 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2217 case RC_FONT_ENCODING:
2218 if (ignore_system_lyxrc ||
2219 fontenc != system_lyxrc.fontenc) {
2220 os << "\\font_encoding \"" << fontenc << "\"\n";
2226 << "# FILE SECTION ######################################\n"
2229 case RC_DOCUMENTPATH:
2230 if (ignore_system_lyxrc ||
2231 document_path != system_lyxrc.document_path) {
2232 string const path = os::external_path(document_path);
2233 os << "\\document_path \"" << path << "\"\n";
2237 case RC_USELASTFILEPOS:
2238 if (ignore_system_lyxrc ||
2239 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2240 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2245 case RC_LOADSESSION:
2246 if (ignore_system_lyxrc ||
2247 load_session != system_lyxrc.load_session) {
2248 os << "\\load_session " << convert<string>(load_session)
2253 case RC_MOUSE_WHEEL_SPEED:
2254 if (ignore_system_lyxrc ||
2255 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2256 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2260 case RC_MOUSE_MIDDLEBUTTON_PASTE:
2261 if (ignore_system_lyxrc ||
2262 mouse_middlebutton_paste != system_lyxrc.mouse_middlebutton_paste) {
2263 os << "\\mouse_middlebutton_paste "
2264 << convert<string>(mouse_middlebutton_paste) << '\n';
2268 case RC_COMPLETION_INLINE_DELAY:
2269 if (ignore_system_lyxrc ||
2270 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2271 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2275 case RC_COMPLETION_INLINE_MATH:
2276 if (ignore_system_lyxrc ||
2277 completion_inline_math != system_lyxrc.completion_inline_math) {
2278 os << "\\completion_inline_math "
2279 << convert<string>(completion_inline_math) << '\n';
2283 case RC_COMPLETION_INLINE_TEXT:
2284 if (ignore_system_lyxrc ||
2285 completion_inline_text != system_lyxrc.completion_inline_text) {
2286 os << "\\completion_inline_text "
2287 << convert<string>(completion_inline_text) << '\n';
2291 case RC_COMPLETION_INLINE_DOTS:
2292 if (ignore_system_lyxrc ||
2293 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2294 os << "\\completion_inline_dots "
2295 << convert<string>(completion_inline_dots) << '\n';
2299 case RC_AUTOCORRECTION_MATH:
2300 if (ignore_system_lyxrc ||
2301 autocorrection_math != system_lyxrc.autocorrection_math) {
2302 os << "\\autocorrection_math "
2303 << convert<string>(autocorrection_math) << '\n';
2307 case RC_COMPLETION_POPUP_DELAY:
2308 if (ignore_system_lyxrc ||
2309 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2310 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2314 case RC_COMPLETION_POPUP_MATH:
2315 if (ignore_system_lyxrc ||
2316 completion_popup_math != system_lyxrc.completion_popup_math) {
2317 os << "\\completion_popup_math "
2318 << convert<string>(completion_popup_math) << '\n';
2322 case RC_COMPLETION_POPUP_TEXT:
2323 if (ignore_system_lyxrc ||
2324 completion_popup_text != system_lyxrc.completion_popup_text) {
2325 os << "\\completion_popup_text "
2326 << convert<string>(completion_popup_text) << '\n';
2330 case RC_COMPLETION_CURSOR_TEXT:
2331 if (ignore_system_lyxrc ||
2332 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2333 os << "\\completion_cursor_text "
2334 << convert<string>(completion_cursor_text) << '\n';
2338 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2339 if (ignore_system_lyxrc ||
2340 completion_popup_after_complete
2341 != system_lyxrc.completion_popup_after_complete) {
2342 os << "\\completion_popup_after_complete "
2343 << convert<string>(completion_popup_after_complete) << '\n';
2347 case RC_COMPLETION_MINLENGTH:
2348 if (ignore_system_lyxrc ||
2349 completion_minlength != system_lyxrc.completion_minlength) {
2350 os << "\\completion_minlength " << convert<string>(completion_minlength)
2356 case RC_NUMLASTFILES:
2357 if (ignore_system_lyxrc ||
2358 num_lastfiles != system_lyxrc.num_lastfiles) {
2359 os << "\\num_lastfiles " << num_lastfiles << '\n';
2363 case RC_CHECKLASTFILES:
2364 if (ignore_system_lyxrc ||
2365 check_lastfiles != system_lyxrc.check_lastfiles) {
2366 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2371 case RC_EXAMPLEPATH:
2372 if (ignore_system_lyxrc ||
2373 example_path != system_lyxrc.example_path) {
2374 string const path = os::external_path(example_path);
2375 os << "\\example_path \"" << path << "\"\n";
2379 case RC_TEMPLATEPATH:
2380 if (ignore_system_lyxrc ||
2381 template_path != system_lyxrc.template_path) {
2382 string const path = os::external_path(template_path);
2383 os << "\\template_path \"" << path << "\"\n";
2387 case RC_TEMPDIRPATH:
2388 if (ignore_system_lyxrc ||
2389 tempdir_path != system_lyxrc.tempdir_path) {
2390 string const path = os::external_path(tempdir_path);
2391 os << "\\tempdir_path \"" << path << "\"\n";
2395 case RC_THESAURUSDIRPATH:
2396 if (ignore_system_lyxrc ||
2397 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2398 string const path = os::external_path(thesaurusdir_path);
2399 os << "\\thesaurusdir_path \"" << path << "\"\n";
2403 case RC_HUNSPELLDIR_PATH:
2404 if (ignore_system_lyxrc ||
2405 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2406 string const path = os::external_path(hunspelldir_path);
2407 os << "\\hunspelldir_path \"" << path << "\"\n";
2411 case RC_PLAINTEXT_LINELEN:
2412 if (ignore_system_lyxrc ||
2413 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2414 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2418 case RC_MAKE_BACKUP:
2419 if (ignore_system_lyxrc ||
2420 make_backup != system_lyxrc.make_backup) {
2421 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2425 case RC_SAVE_COMPRESSED:
2426 if (ignore_system_lyxrc ||
2427 save_compressed != system_lyxrc.save_compressed) {
2428 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2432 case RC_SAVE_ORIGIN:
2433 if (ignore_system_lyxrc ||
2434 save_origin != system_lyxrc.save_origin) {
2435 os << "\\save_origin " << convert<string>(save_origin) << '\n';
2439 case RC_BACKUPDIR_PATH:
2440 if (ignore_system_lyxrc ||
2441 backupdir_path != system_lyxrc.backupdir_path) {
2442 string const path = os::external_path(backupdir_path);
2443 os << "\\backupdir_path \"" << path << "\"\n";
2449 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2453 << "# SPELLCHECKER SECTION ##############################\n"
2456 case RC_ACCEPT_COMPOUND:
2457 if (ignore_system_lyxrc ||
2458 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2459 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2465 if (ignore_system_lyxrc ||
2466 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2467 os << "\\alternate_language \"" << spellchecker_alt_lang
2473 if (ignore_system_lyxrc ||
2474 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2475 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2479 case RC_USE_SYSTEM_COLORS:
2480 if (ignore_system_lyxrc ||
2481 use_system_colors != system_lyxrc.use_system_colors) {
2482 os << "\\use_system_colors "
2483 << convert<string>(use_system_colors)
2488 case RC_USE_TOOLTIP:
2489 if (ignore_system_lyxrc ||
2490 use_tooltip != system_lyxrc.use_tooltip) {
2491 os << "\\use_tooltip "
2492 << convert<string>(use_tooltip)
2497 case RC_USE_PIXMAP_CACHE:
2498 if (ignore_system_lyxrc ||
2499 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2500 os << "\\use_pixmap_cache "
2501 << convert<string>(use_pixmap_cache)
2507 if (ignore_system_lyxrc ||
2508 use_qimage != system_lyxrc.use_qimage) {
2509 os << "\\use_qimage "
2510 << convert<string>(use_qimage)
2517 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2522 case RC_DEFAULT_DECIMAL_POINT:
2523 if (ignore_system_lyxrc ||
2524 default_decimal_point != system_lyxrc.default_decimal_point) {
2525 os << "\\default_decimal_point " << default_decimal_point << '\n';
2530 case RC_DEFAULT_LENGTH_UNIT:
2531 if (ignore_system_lyxrc ||
2532 default_length_unit != system_lyxrc.default_length_unit) {
2533 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2538 case RC_SPELLCHECKER:
2539 if (ignore_system_lyxrc ||
2540 spellchecker != system_lyxrc.spellchecker) {
2541 os << "\\spellchecker " << spellchecker << '\n';
2546 case RC_SPELLCHECK_CONTINUOUSLY:
2547 if (ignore_system_lyxrc ||
2548 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2549 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2555 case RC_SPELLCHECK_NOTES:
2556 if (ignore_system_lyxrc ||
2557 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2558 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2564 case RC_VISUAL_CURSOR:
2565 if (ignore_system_lyxrc ||
2566 visual_cursor != system_lyxrc.visual_cursor) {
2567 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2571 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2572 if (ignore_system_lyxrc ||
2573 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2574 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2575 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2579 case RC_LANGUAGE_CUSTOM_PACKAGE:
2580 if (ignore_system_lyxrc ||
2581 language_custom_package != system_lyxrc.language_custom_package) {
2582 os << "\\language_custom_package \"" << language_custom_package
2587 case RC_LANGUAGE_GLOBAL_OPTIONS:
2588 if (ignore_system_lyxrc ||
2589 language_global_options
2590 != system_lyxrc.language_global_options) {
2591 os << "\\language_global_options \""
2592 << convert<string>(language_global_options)
2597 case RC_LANGUAGE_PACKAGE_SELECTION:
2598 if (ignore_system_lyxrc ||
2599 language_package_selection != system_lyxrc.language_package_selection) {
2600 os << "\\language_package_selection ";
2601 switch (language_package_selection) {
2618 case RC_LANGUAGE_COMMAND_BEGIN:
2619 if (ignore_system_lyxrc ||
2620 language_command_begin
2621 != system_lyxrc.language_command_begin) {
2622 os << "\\language_command_begin \""
2623 << language_command_begin
2628 case RC_LANGUAGE_COMMAND_END:
2629 if (ignore_system_lyxrc ||
2630 language_command_end
2631 != system_lyxrc.language_command_end) {
2632 os << "\\language_command_end \"" << language_command_end
2637 case RC_LANGUAGE_COMMAND_LOCAL:
2638 if (ignore_system_lyxrc ||
2639 language_command_local
2640 != system_lyxrc.language_command_local) {
2641 os << "\\language_command_local \""
2642 << language_command_local
2647 case RC_LANGUAGE_AUTO_BEGIN:
2648 if (ignore_system_lyxrc ||
2649 language_auto_begin != system_lyxrc.language_auto_begin) {
2650 os << "\\language_auto_begin "
2651 << convert<string>(language_auto_begin) << '\n';
2655 case RC_LANGUAGE_AUTO_END:
2656 if (ignore_system_lyxrc ||
2657 language_auto_end != system_lyxrc.language_auto_end) {
2658 os << "\\language_auto_end "
2659 << convert<string>(language_auto_end) << '\n';
2663 case RC_MARK_FOREIGN_LANGUAGE:
2664 if (ignore_system_lyxrc ||
2665 mark_foreign_language
2666 != system_lyxrc.mark_foreign_language) {
2667 os << "\\mark_foreign_language " <<
2668 convert<string>(mark_foreign_language) << '\n';
2674 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2677 case RC_AUTO_NUMBER:
2678 if (ignore_system_lyxrc ||
2679 auto_number != system_lyxrc.auto_number) {
2680 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2684 case RC_GUI_LANGUAGE:
2685 if (ignore_system_lyxrc ||
2686 gui_language != system_lyxrc.gui_language) {
2687 os << "\\gui_language " << gui_language << '\n';
2691 case RC_EXPORT_OVERWRITE:
2692 if (ignore_system_lyxrc ||
2693 export_overwrite != system_lyxrc.export_overwrite) {
2695 switch (export_overwrite) {
2706 os << "\\export_overwrite " << status << '\n';
2711 case RC_SCROLL_WHEEL_ZOOM:
2712 if (ignore_system_lyxrc ||
2713 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2715 switch (scroll_wheel_zoom) {
2716 case SCROLL_WHEEL_ZOOM_OFF:
2719 case SCROLL_WHEEL_ZOOM_CTRL:
2722 case SCROLL_WHEEL_ZOOM_SHIFT:
2725 case SCROLL_WHEEL_ZOOM_ALT:
2729 os << "\\scroll_wheel_zoom " << status << '\n';
2735 << "# FORMATS SECTION ##########################\n"
2739 // New/modified formats
2740 for (Formats::const_iterator cit = formats.begin();
2741 cit != formats.end(); ++cit) {
2742 Format const * format =
2743 system_formats.getFormat(cit->name());
2745 format->extensions() != cit->extensions() ||
2746 format->prettyname() != cit->prettyname() ||
2747 format->shortcut() != cit->shortcut() ||
2748 format->viewer() != cit->viewer() ||
2749 format->editor() != cit->editor() ||
2750 format->documentFormat() != cit->documentFormat() ||
2751 format->vectorFormat() != cit->vectorFormat() ||
2752 format->inExportMenu() != cit->inExportMenu() ||
2753 format->mime() != cit->mime()) {
2754 os << "\\format \"" << cit->name() << "\" \""
2755 << cit->extensions() << "\" \""
2756 << cit->prettyname() << "\" \""
2757 << cit->shortcut() << "\" \""
2758 << escapeCommand(cit->viewer()) << "\" \""
2759 << escapeCommand(cit->editor()) << "\" \"";
2760 vector<string> flags;
2761 if (cit->documentFormat())
2762 flags.push_back("document");
2763 if (cit->vectorFormat())
2764 flags.push_back("vector");
2765 if (cit->zippedNative())
2766 flags.push_back("zipped=native");
2767 if (cit->inExportMenu())
2768 flags.push_back("menu=export");
2770 os << getStringFromVector(flags);
2771 os << "\" \"" << cit->mime() << "\"\n";
2775 // Look for deleted formats
2776 for (Formats::const_iterator cit = system_formats.begin();
2777 cit != system_formats.end(); ++cit)
2778 if (!formats.getFormat(cit->name()))
2779 os << "\\format \"" << cit->name()
2780 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2783 case RC_VIEWER_ALTERNATIVES: {
2784 Alternatives::const_iterator it = viewer_alternatives.begin();
2785 Alternatives::const_iterator const en = viewer_alternatives.end();
2786 Alternatives::const_iterator const sysend =
2787 system_lyxrc.viewer_alternatives.end();
2788 for (; it != en; ++it) {
2789 string const & fmt = it->first;
2790 CommandSet const & cmd = it->second;
2791 CommandSet::const_iterator sit = cmd.begin();
2792 CommandSet::const_iterator const sen = cmd.end();
2793 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2794 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2795 system_lyxrc.viewer_alternatives.find(fmt);
2796 for (; sit != sen; ++sit) {
2797 string const & cmd = *sit;
2798 if (ignore_system_lyxrc
2799 || sysfmt == sysend // format not found
2800 || sysfmt->second.count(cmd) == 0 // this command not found
2802 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2808 case RC_EDITOR_ALTERNATIVES: {
2809 Alternatives::const_iterator it = editor_alternatives.begin();
2810 Alternatives::const_iterator const en = editor_alternatives.end();
2811 Alternatives::const_iterator const sysend =
2812 system_lyxrc.editor_alternatives.end();
2813 for (; it != en; ++it) {
2814 string const & fmt = it->first;
2815 CommandSet const & cmd = it->second;
2816 CommandSet::const_iterator sit = cmd.begin();
2817 CommandSet::const_iterator const sen = cmd.end();
2818 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2819 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2820 system_lyxrc.editor_alternatives.find(fmt);
2821 for (; sit != sen; ++sit) {
2822 string const & cmd = *sit;
2823 if (ignore_system_lyxrc
2824 || sysfmt == sysend // format not found
2825 || sysfmt->second.count(cmd) == 0 // this command not found
2827 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2833 case RC_DEFAULT_OTF_VIEW_FORMAT:
2834 if ((ignore_system_lyxrc ||
2835 default_otf_view_format != system_lyxrc.default_otf_view_format)
2836 && !default_otf_view_format.empty()) {
2837 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2841 case RC_DEFAULT_VIEW_FORMAT:
2842 if (ignore_system_lyxrc ||
2843 default_view_format != system_lyxrc.default_view_format) {
2844 os << "\\default_view_format " << default_view_format << '\n';
2854 << "# CONVERTERS SECTION ##########################\n"
2858 // Look for new converters
2859 for (Converters::const_iterator cit = theConverters().begin();
2860 cit != theConverters().end(); ++cit) {
2861 Converter const * converter =
2862 theSystemConverters().getConverter(cit->from(),
2865 converter->command() != cit->command() ||
2866 converter->flags() != cit->flags())
2867 os << "\\converter \"" << cit->from() << "\" \""
2868 << cit->to() << "\" \""
2869 << escapeCommand(cit->command()) << "\" \""
2870 << cit->flags() << "\"\n";
2873 // New/modifed converters
2874 for (Converters::const_iterator cit = theSystemConverters().begin();
2875 cit != theSystemConverters().end(); ++cit)
2876 if (!theConverters().getConverter(cit->from(), cit->to()))
2877 os << "\\converter \"" << cit->from()
2878 << "\" \"" << cit->to() << "\" \"\" \"\"\n";
2885 << "# COPIERS SECTION ##########################\n"
2888 // Look for new movers
2889 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2890 Movers::const_iterator const sysend = theSystemMovers().end();
2891 Movers::const_iterator it = theMovers().begin();
2892 Movers::const_iterator end = theMovers().end();
2894 for (; it != end; ++it) {
2895 Movers::const_iterator const sysit =
2896 find_if(sysbegin, sysend, SameMover(*it));
2897 if (sysit == sysend) {
2898 string const & fmt = it->first;
2899 string const & command =
2900 it->second.command();
2902 os << "\\copier " << fmt
2903 << " \"" << escapeCommand(command) << "\"\n";
2909 // We don't actually delete SpecialisedMover(s) from the
2910 // map, just clear their 'command', so there's no need
2911 // to test for anything else.
2918 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2920 // Why the switch you might ask. It is a trick to ensure that all
2921 // the elements in the LyXRCTags enum is handled. As you can see
2922 // there are no breaks at all. So it is just a huge fall-through.
2923 // The nice thing is that we will get a warning from the compiler
2924 // if we forget an element.
2925 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2927 case LyXRC::RC_LAST:
2928 case LyXRC::RC_ACCEPT_COMPOUND:
2929 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2930 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2931 case LyXRC::RC_ALT_LANG:
2932 case LyXRC::RC_PLAINTEXT_LINELEN:
2933 case LyXRC::RC_AUTOCORRECTION_MATH:
2934 case LyXRC::RC_AUTOREGIONDELETE:
2935 case LyXRC::RC_AUTORESET_OPTIONS:
2936 case LyXRC::RC_AUTOSAVE:
2937 case LyXRC::RC_AUTO_NUMBER:
2938 case LyXRC::RC_BACKUPDIR_PATH:
2939 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2940 case LyXRC::RC_BIBTEX_COMMAND:
2941 case LyXRC::RC_BINDFILE:
2942 case LyXRC::RC_CHECKLASTFILES:
2943 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2944 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2945 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2946 case LyXRC::RC_COMPLETION_INLINE_MATH:
2947 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2948 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2949 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2950 case LyXRC::RC_COMPLETION_POPUP_MATH:
2951 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2952 case LyXRC::RC_COMPLETION_MINLENGTH:
2953 case LyXRC::RC_USELASTFILEPOS:
2954 case LyXRC::RC_LOADSESSION:
2955 case LyXRC::RC_CHKTEX_COMMAND:
2956 case LyXRC::RC_CONVERTER:
2957 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2958 case LyXRC::RC_COPIER:
2959 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2960 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2961 case LyXRC::RC_DATE_INSERT_FORMAT:
2962 case LyXRC::RC_GUI_LANGUAGE:
2963 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2964 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2965 case LyXRC::RC_DEFFILE:
2966 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2967 case LyXRC::RC_DISPLAY_GRAPHICS:
2968 case LyXRC::RC_DOCUMENTPATH:
2969 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2970 FileName path(lyxrc_new.document_path);
2971 if (path.exists() && path.isDirectory())
2972 package().document_dir() = FileName(lyxrc.document_path);
2974 case LyXRC::RC_EDITOR_ALTERNATIVES:
2975 case LyXRC::RC_ESC_CHARS:
2976 case LyXRC::RC_EXAMPLEPATH:
2977 case LyXRC::RC_FONT_ENCODING:
2978 case LyXRC::RC_FILEFORMAT:
2979 case LyXRC::RC_GROUP_LAYOUTS:
2980 case LyXRC::RC_HUNSPELLDIR_PATH:
2981 case LyXRC::RC_ICON_SET:
2982 case LyXRC::RC_INDEX_ALTERNATIVES:
2983 case LyXRC::RC_INDEX_COMMAND:
2984 case LyXRC::RC_JBIBTEX_COMMAND:
2985 case LyXRC::RC_JINDEX_COMMAND:
2986 case LyXRC::RC_NOMENCL_COMMAND:
2987 case LyXRC::RC_INPUT:
2988 case LyXRC::RC_KBMAP:
2989 case LyXRC::RC_KBMAP_PRIMARY:
2990 case LyXRC::RC_KBMAP_SECONDARY:
2991 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2992 case LyXRC::RC_LANGUAGE_AUTO_END:
2993 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2994 case LyXRC::RC_LANGUAGE_COMMAND_END:
2995 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2996 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2997 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2998 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2999 case LyXRC::RC_LYXRCFORMAT:
3000 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
3001 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
3002 case LyXRC::RC_MACRO_EDIT_STYLE:
3003 case LyXRC::RC_MAKE_BACKUP:
3004 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
3005 case LyXRC::RC_MOUSE_WHEEL_SPEED:
3006 case LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE:
3007 case LyXRC::RC_NUMLASTFILES:
3008 case LyXRC::RC_PARAGRAPH_MARKERS:
3009 case LyXRC::RC_PATH_PREFIX:
3010 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
3011 prependEnvPath("PATH", lyxrc_new.path_prefix);
3012 // Resets python path
3013 support::os::python(true);
3015 case LyXRC::RC_PREVIEW:
3016 case LyXRC::RC_PREVIEW_HASHED_LABELS:
3017 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
3018 case LyXRC::RC_PRINTCOLLCOPIESFLAG:
3019 case LyXRC::RC_PRINTCOPIESFLAG:
3020 case LyXRC::RC_PRINTER:
3021 case LyXRC::RC_PRINTEVENPAGEFLAG:
3022 case LyXRC::RC_PRINTEXSTRAOPTIONS:
3023 case LyXRC::RC_PRINTFILEEXTENSION:
3024 case LyXRC::RC_PRINTLANDSCAPEFLAG:
3025 case LyXRC::RC_PRINTODDPAGEFLAG:
3026 case LyXRC::RC_PRINTPAGERANGEFLAG:
3027 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
3028 case LyXRC::RC_PRINTPAPERFLAG:
3029 case LyXRC::RC_PRINTREVERSEFLAG:
3030 case LyXRC::RC_PRINTSPOOL_COMMAND:
3031 case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
3032 case LyXRC::RC_PRINTTOFILE:
3033 case LyXRC::RC_PRINTTOPRINTER:
3034 case LyXRC::RC_PRINT_ADAPTOUTPUT:
3035 case LyXRC::RC_PRINT_COMMAND:
3036 case LyXRC::RC_SAVE_COMPRESSED:
3037 case LyXRC::RC_SAVE_ORIGIN:
3038 case LyXRC::RC_SCREEN_DPI:
3039 case LyXRC::RC_SCREEN_FONT_ROMAN:
3040 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
3041 case LyXRC::RC_SCREEN_FONT_SANS:
3042 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
3043 case LyXRC::RC_SCREEN_FONT_SCALABLE:
3044 case LyXRC::RC_SCREEN_FONT_SIZES:
3045 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
3046 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3047 case LyXRC::RC_GEOMETRY_SESSION:
3048 case LyXRC::RC_SCREEN_ZOOM:
3049 case LyXRC::RC_SERVERPIPE:
3050 case LyXRC::RC_SET_COLOR:
3051 case LyXRC::RC_SHOW_BANNER:
3052 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
3053 case LyXRC::RC_SPELLCHECKER:
3054 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
3056 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
3057 case LyXRC::RC_SPELLCHECK_NOTES:
3058 case LyXRC::RC_SPLITINDEX_COMMAND:
3059 case LyXRC::RC_TEMPDIRPATH:
3060 case LyXRC::RC_TEMPLATEPATH:
3061 case LyXRC::RC_TEX_ALLOWS_SPACES:
3062 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
3063 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
3064 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
3066 case LyXRC::RC_TEXINPUTS_PREFIX:
3067 case LyXRC::RC_THESAURUSDIRPATH:
3068 case LyXRC::RC_UIFILE:
3069 case LyXRC::RC_USER_EMAIL:
3070 case LyXRC::RC_USER_NAME:
3071 case LyXRC::RC_USE_CONVERTER_CACHE:
3072 case LyXRC::RC_USE_SYSTEM_COLORS:
3073 case LyXRC::RC_USE_TOOLTIP:
3074 case LyXRC::RC_USE_PIXMAP_CACHE:
3075 case LyXRC::RC_USE_QIMAGE:
3076 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
3077 case LyXRC::RC_VIEWDVI_PAPEROPTION:
3078 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
3079 case LyXRC::RC_SINGLE_INSTANCE:
3080 case LyXRC::RC_SORT_LAYOUTS:
3081 case LyXRC::RC_FULL_SCREEN_LIMIT:
3082 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
3083 case LyXRC::RC_FULL_SCREEN_MENUBAR:
3084 case LyXRC::RC_FULL_SCREEN_STATUSBAR:
3085 case LyXRC::RC_FULL_SCREEN_TABBAR:
3086 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
3087 case LyXRC::RC_FULL_SCREEN_WIDTH:
3088 case LyXRC::RC_VISUAL_CURSOR:
3089 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3090 case LyXRC::RC_VIEWER:
3091 case LyXRC::RC_VIEWER_ALTERNATIVES:
3092 case LyXRC::RC_FORWARD_SEARCH_DVI:
3093 case LyXRC::RC_FORWARD_SEARCH_PDF:
3094 case LyXRC::RC_EXPORT_OVERWRITE:
3095 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
3096 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
3097 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3098 case LyXRC::RC_CURSOR_WIDTH:
3105 string const LyXRC::getDescription(LyXRCTags tag)
3110 case RC_ACCEPT_COMPOUND:
3111 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3115 str = _("Specify an alternate language. The default is to use the language of the document.");
3118 case RC_PLAINTEXT_LINELEN:
3119 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.");
3122 case RC_AUTOREGIONDELETE:
3123 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3126 case RC_AUTORESET_OPTIONS:
3127 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3131 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3134 case RC_AUTO_NUMBER:
3137 case RC_BACKUPDIR_PATH:
3138 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.");
3141 case RC_BIBTEX_COMMAND:
3142 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3145 case RC_JBIBTEX_COMMAND:
3146 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3150 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3153 case RC_CHECKLASTFILES:
3154 str = _("Select to check whether the lastfiles still exist.");
3157 case RC_CHKTEX_COMMAND:
3158 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3167 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3168 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.");
3171 case RC_CURSOR_WIDTH:
3172 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3175 case RC_SCROLL_BELOW_DOCUMENT:
3176 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");
3179 case RC_MAC_DONTSWAP_CTRL_META:
3180 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3183 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3184 str = _("Use the Mac OS X conventions for cursor movement");
3187 case RC_SHOW_MACRO_LABEL:
3188 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3191 case RC_DATE_INSERT_FORMAT:
3192 //xgettext:no-c-format
3193 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3197 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3200 case RC_DEFAULT_OTF_VIEW_FORMAT:
3201 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3204 case RC_DEFAULT_VIEW_FORMAT:
3205 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3208 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3209 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3212 case RC_DISPLAY_GRAPHICS:
3213 str = _("Select how LyX will display any graphics.");
3216 case RC_DOCUMENTPATH:
3217 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3221 str = _("Specify additional chars that can be part of a word.");
3224 case RC_EXAMPLEPATH:
3225 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3228 case RC_FONT_ENCODING:
3229 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3235 case RC_INDEX_COMMAND:
3236 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\".");
3239 case RC_JINDEX_COMMAND:
3240 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3243 case RC_NOMENCL_COMMAND:
3244 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3251 case RC_KBMAP_PRIMARY:
3252 case RC_KBMAP_SECONDARY:
3253 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.");
3256 case RC_LANGUAGE_AUTO_BEGIN:
3257 str = _("Select if a language switching command is needed at the beginning of the document.");
3260 case RC_LANGUAGE_AUTO_END:
3261 str = _("Select if a language switching command is needed at the end of the document.");
3264 case RC_LANGUAGE_COMMAND_BEGIN:
3265 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.");
3268 case RC_LANGUAGE_COMMAND_END:
3269 str = _("The LaTeX command for changing back to the language of the document.");
3272 case RC_LANGUAGE_COMMAND_LOCAL:
3273 str = _("The LaTeX command for local changing of the language.");
3276 case RC_LANGUAGE_GLOBAL_OPTIONS:
3277 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3280 case RC_LANGUAGE_CUSTOM_PACKAGE:
3281 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3284 case RC_LANGUAGE_PACKAGE_SELECTION:
3285 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3288 case RC_USELASTFILEPOS:
3289 str = _("De-select if you do not want LyX to scroll to saved position.");
3292 case RC_LOADSESSION:
3293 str = _("De-select to prevent loading files opened from the last LyX session.");
3296 case RC_MAKE_BACKUP:
3297 str = _("De-select if you don't want LyX to create backup files.");
3300 case RC_MARK_FOREIGN_LANGUAGE:
3301 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3304 case RC_MOUSE_WHEEL_SPEED:
3305 str = bformat(_("The scrolling speed of the mouse wheel."),
3309 case RC_COMPLETION_POPUP_DELAY:
3310 str = _("The completion popup delay.");
3313 case RC_COMPLETION_POPUP_MATH:
3314 str = _("Select to display the completion popup in math mode.");
3317 case RC_COMPLETION_POPUP_TEXT:
3318 str = _("Select to display the completion popup in text mode.");
3321 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3322 str = _("Show the completion popup without delay after non-unique completion attempt.");
3325 case RC_COMPLETION_POPUP_TEXT:
3326 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3329 case RC_COMPLETION_POPUP_DELAY:
3330 str = _("The inline completion delay.");
3333 case RC_COMPLETION_INLINE_MATH:
3334 str = _("Select to display the inline completion in math mode.");
3337 case RC_COMPLETION_INLINE_TEXT:
3338 str = _("Select to display the inline completion in text mode.");
3341 case RC_COMPLETION_INLINE_DOTS:
3342 str = _("Use \"...\" to shorten long completions.");
3345 case RC_AUTOCORRECTION_MATH:
3346 str = _("Allow TeXMacs shorthand, like => converting to \\Rightarrow.");
3349 case RC_NUMLASTFILES:
3350 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3354 case RC_PATH_PREFIX:
3355 str = _("Specify those directories which should be "
3356 "prepended to the PATH environment variable.\n"
3357 "Use the OS native format.");
3361 str = _("Shows a typeset preview of things such as math");
3364 case RC_PREVIEW_HASHED_LABELS:
3365 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3368 case RC_PREVIEW_SCALE_FACTOR:
3369 str = _("Scale the preview size to suit.");
3372 case RC_PRINTCOLLCOPIESFLAG:
3373 str = _("The option for specifying whether the copies should be collated.");
3376 case RC_PRINTCOPIESFLAG:
3377 str = _("The option for specifying the number of copies to print.");
3381 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
3384 case RC_PRINTEVENPAGEFLAG:
3385 str = _("The option to print only even pages.");
3388 case RC_PRINTEXSTRAOPTIONS:
3389 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
3392 case RC_PRINTFILEEXTENSION:
3393 str = _("Extension of printer program output file. Usually \".ps\".");
3396 case RC_PRINTLANDSCAPEFLAG:
3397 str = _("The option to print out in landscape.");
3400 case RC_PRINTODDPAGEFLAG:
3401 str = _("The option to print only odd pages.");
3404 case RC_PRINTPAGERANGEFLAG:
3405 str = _("The option for specifying a comma-separated list of pages to print.");
3408 case RC_PRINTPAPERDIMENSIONFLAG:
3409 str = _("Option to specify the dimensions of the print paper.");
3412 case RC_PRINTPAPERFLAG:
3413 str = _("The option to specify paper type.");
3416 case RC_PRINTREVERSEFLAG:
3417 str = _("The option to reverse the order of the pages printed.");
3420 case RC_PRINTSPOOL_COMMAND:
3421 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.");
3424 case RC_PRINTSPOOL_PRINTERPREFIX:
3425 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.");
3428 case RC_PRINTTOFILE:
3429 str = _("Option to pass to the print program to print to a file.");
3432 case RC_PRINTTOPRINTER:
3433 str = _("Option to pass to the print program to print on a specific printer.");
3436 case RC_PRINT_ADAPTOUTPUT:
3437 str = _("Select for LyX to pass the name of the destination printer to your print command.");
3440 case RC_PRINT_COMMAND:
3441 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
3444 case RC_VISUAL_CURSOR:
3445 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3448 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3449 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).");
3453 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3456 case RC_SCREEN_FONT_ROMAN:
3457 case RC_SCREEN_FONT_SANS:
3458 case RC_SCREEN_FONT_TYPEWRITER:
3459 str = _("The screen fonts used to display the text while editing.");
3462 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3463 case RC_SCREEN_FONT_SANS_FOUNDRY:
3464 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3467 case RC_SCREEN_FONT_SCALABLE:
3468 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.");
3471 case RC_SCREEN_FONT_SIZES:
3472 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3475 case RC_SCREEN_ZOOM:
3476 //xgettext:no-c-format
3477 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3480 case RC_GEOMETRY_SESSION:
3481 str = _("Allow session manager to save and restore windows geometry.");
3485 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3491 case RC_SHOW_BANNER:
3492 str = _("De-select if you don't want the startup banner.");
3495 case RC_TEMPDIRPATH:
3496 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3499 case RC_THESAURUSDIRPATH:
3500 str = _("This is the place where the files of the thesaurus library reside.");
3503 case RC_TEMPLATEPATH:
3504 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3507 case RC_TEX_ALLOWS_SPACES:
3510 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3513 case RC_TEXINPUTS_PREFIX:
3514 str = _("Specify those directories which should be "
3515 "prepended to the TEXINPUTS environment variable.\n"
3516 "A '.' represents the current document directory. "
3517 "Use the OS native format.");
3521 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3530 case RC_USE_USE_SYSTEM_COLORS:
3531 str = _("Enable use the system colors for some things like main window background and selection.");
3534 case RC_USE_TOOLTIP:
3535 str = _("Enable the automatic appearance of tool tips in the work area.");
3538 case RC_USE_PIXMAP_CACHE:
3539 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3542 case RC_VIEWDVI_PAPEROPTION:
3543 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3558 // The global instance
3561 // The global copy of the system lyxrc entries (everything except preferences)