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/userinfo.h"
50 using namespace lyx::support;
54 namespace os = support::os;
58 // The format should also be updated in configure.py, and conversion code
59 // should be added to prefs2prefs_prefs.py.
60 static unsigned int const LYXRC_FILEFORMAT = 15; // prannoy: statusbar on/off in full screen
62 // when adding something to this array keep it sorted!
63 LexerKeyword lyxrcTags[] = {
64 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
65 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
66 { "\\alternate_language", LyXRC::RC_ALT_LANG },
67 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
68 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
69 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
70 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
71 { "\\autosave", LyXRC::RC_AUTOSAVE },
72 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
73 { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
74 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
75 { "\\bind_file", LyXRC::RC_BINDFILE },
76 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
77 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
78 { "\\close_buffer_with_last_view", LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW },
79 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
80 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
81 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
82 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
83 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
84 { "\\completion_minlength", LyXRC::RC_COMPLETION_MINLENGTH },
85 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
86 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
87 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
88 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
89 { "\\converter", LyXRC::RC_CONVERTER },
90 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
91 { "\\copier", LyXRC::RC_COPIER },
92 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
93 { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
94 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
95 { "\\def_file", LyXRC::RC_DEFFILE },
96 { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
97 { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT },
98 { "\\default_otf_view_format", LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT },
99 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
100 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
101 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
102 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
103 { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
104 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
105 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
106 { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE },
107 { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
108 { "\\force_paint_single_char", LyXRC::RC_FORCE_PAINT_SINGLE_CHAR },
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 FileName const tempfile = FileName::tempName("convert_lyxrc");
411 bool const success = prefs2prefs(filename, tempfile, false);
413 LYXERR0 ("Unable to convert " << filename.absFileName() <<
414 " to format " << LYXRC_FILEFORMAT);
417 // Keep this in the else branch, such that lexrc2 goes out
418 // of scope and releases the lock on tempfile before we
419 // attempt to remove it. This matters on Windows.
420 Lexer lexrc2(lyxrcTags);
421 lexrc2.setFile(tempfile);
422 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
423 retval = read(lexrc2, check_format);
425 tempfile.removeFile();
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 // default for current rowpainter capabilities
450 force_paint_single_char = true;
452 // format prior to 2.0 and introduction of format tag
453 unsigned int format = 0;
455 while (lexrc.isOK()) {
456 // By using two switches we take advantage of the compiler
457 // telling us if we have missed a LyXRCTags element in
458 // the second switch.
459 // Note that this also shows a problem with Lexer since it
460 // helps us avoid taking advantage of the strictness of the
463 int le = lexrc.lex();
465 case Lexer::LEX_UNDEF:
466 lexrc.printError("Unknown tag `$$Token'");
468 case Lexer::LEX_FEOF:
473 switch (static_cast<LyXRCTags>(le)) {
476 format = lexrc.getInteger();
478 case RC_INPUT: // Include file
481 libFileSearch(string(),
483 if (read(tmp, check_format)) {
485 "Error reading included file: " + tmp.absFileName());
491 bind_file = os::internal_path(lexrc.getString());
496 def_file = os::internal_path(lexrc.getString());
501 ui_file = os::internal_path(lexrc.getString());
504 case RC_AUTORESET_OPTIONS:
505 lexrc >> auto_reset_options;
508 case RC_DISPLAY_GRAPHICS:
510 display_graphics = lexrc.getString() == "true";
513 case RC_TEX_EXPECTS_WINDOWS_PATHS:
514 lexrc >> windows_style_tex_paths;
517 case RC_TEX_ALLOWS_SPACES:
518 lexrc >> tex_allows_spaces;
521 case RC_TEXINPUTS_PREFIX:
522 lexrc >> texinputs_prefix;
529 case RC_KBMAP_PRIMARY:
531 string const kmap(os::internal_path(lexrc.getString()));
532 if (!libFileSearch("kbd", kmap, "kmap").empty()
534 primary_kbmap = kmap;
536 lexrc.printError("LyX: Keymap `$$Token' not found");
541 case RC_KBMAP_SECONDARY:
543 string const kmap(os::internal_path(lexrc.getString()));
544 if (!libFileSearch("kbd", kmap, "kmap").empty()
546 secondary_kbmap = kmap;
548 lexrc.printError("LyX: Keymap `$$Token' not found");
553 case RC_FONT_ENCODING:
557 case RC_FORCE_PAINT_SINGLE_CHAR:
558 lexrc >> force_paint_single_char;
565 case RC_PRINT_COMMAND:
566 if (lexrc.next(true)) {
567 print_command = lexrc.getString();
571 case RC_PRINTEVENPAGEFLAG:
572 lexrc >> print_evenpage_flag;
575 case RC_PRINTODDPAGEFLAG:
576 lexrc >> print_oddpage_flag;
579 case RC_PRINTPAGERANGEFLAG:
580 lexrc >> print_pagerange_flag;
583 case RC_PRINTCOPIESFLAG:
584 lexrc >> print_copies_flag;
587 case RC_PRINTCOLLCOPIESFLAG:
588 lexrc >> print_collcopies_flag;
591 case RC_PRINTREVERSEFLAG:
592 lexrc >> print_reverse_flag;
595 case RC_PRINTLANDSCAPEFLAG:
596 lexrc >> print_landscape_flag;
599 case RC_PRINTTOPRINTER:
600 lexrc >> print_to_printer;
603 case RC_PRINT_ADAPTOUTPUT:
604 lexrc >> print_adapt_output;
609 print_to_file = os::internal_path(lexrc.getString());
613 case RC_PRINTFILEEXTENSION:
614 lexrc >> print_file_extension;
617 case RC_PRINTEXSTRAOPTIONS:
618 lexrc >> print_extra_options;
621 case RC_PRINTSPOOL_COMMAND:
622 if (lexrc.next(true)) {
623 print_spool_command = lexrc.getString();
627 case RC_PRINTSPOOL_PRINTERPREFIX:
628 lexrc >> print_spool_printerprefix;
631 case RC_PRINTPAPERDIMENSIONFLAG:
632 lexrc >> print_paper_dimension_flag;
635 case RC_PRINTPAPERFLAG:
636 lexrc >> print_paper_flag;
639 case RC_VIEWDVI_PAPEROPTION:
641 view_dvi_paper_option = lexrc.getString();
643 view_dvi_paper_option.erase();
646 case RC_CHKTEX_COMMAND:
647 if (lexrc.next(true)) {
648 chktex_command = lexrc.getString();
652 case RC_BIBTEX_ALTERNATIVES:
653 if (lexrc.next(true)) {
654 bibtex_alternatives.insert(lexrc.getString());
658 case RC_BIBTEX_COMMAND:
659 if (lexrc.next(true)) {
660 bibtex_command = lexrc.getString();
664 case RC_JBIBTEX_COMMAND:
665 if (lexrc.next(true)) {
666 jbibtex_command = lexrc.getString();
670 case RC_INDEX_ALTERNATIVES:
671 if (lexrc.next(true)) {
672 index_alternatives.insert(lexrc.getString());
676 case RC_INDEX_COMMAND:
677 if (lexrc.next(true)) {
678 index_command = lexrc.getString();
682 case RC_JINDEX_COMMAND:
683 if (lexrc.next(true)) {
684 jindex_command = lexrc.getString();
688 case RC_SPLITINDEX_COMMAND:
689 if (lexrc.next(true)) {
690 splitindex_command = lexrc.getString();
694 case RC_NOMENCL_COMMAND:
695 if (lexrc.next(true)) {
696 nomencl_command = lexrc.getString();
708 case RC_GEOMETRY_SESSION:
709 lexrc >> allow_geometry_session;
712 case RC_SCREEN_FONT_SIZES:
713 lexrc >> font_sizes[FONT_SIZE_TINY];
714 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
715 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
716 lexrc >> font_sizes[FONT_SIZE_SMALL];
717 lexrc >> font_sizes[FONT_SIZE_NORMAL];
718 lexrc >> font_sizes[FONT_SIZE_LARGE];
719 lexrc >> font_sizes[FONT_SIZE_LARGER];
720 lexrc >> font_sizes[FONT_SIZE_LARGEST];
721 lexrc >> font_sizes[FONT_SIZE_HUGE];
722 lexrc >> font_sizes[FONT_SIZE_HUGER];
725 case RC_SCREEN_FONT_SCALABLE:
726 lexrc >> use_scalable_fonts;
733 case RC_DOCUMENTPATH:
735 document_path = os::internal_path(lexrc.getString());
736 document_path = expandPath(document_path);
742 example_path = os::internal_path(lexrc.getString());
743 example_path = expandPath(example_path);
747 case RC_TEMPLATEPATH:
749 template_path = os::internal_path(lexrc.getString());
750 template_path = expandPath(template_path);
756 tempdir_path = os::internal_path(lexrc.getString());
757 tempdir_path = expandPath(tempdir_path);
761 case RC_THESAURUSDIRPATH:
763 thesaurusdir_path = os::internal_path(lexrc.getString());
764 thesaurusdir_path = expandPath(thesaurusdir_path);
768 case RC_HUNSPELLDIR_PATH:
770 hunspelldir_path = os::internal_path(lexrc.getString());
771 hunspelldir_path = expandPath(hunspelldir_path);
775 case RC_USELASTFILEPOS:
776 lexrc >> use_lastfilepos;
780 lexrc >> load_session;
783 case RC_MOUSE_WHEEL_SPEED:
784 lexrc >> mouse_wheel_speed;
787 case RC_COMPLETION_INLINE_DELAY:
788 lexrc >> completion_inline_delay;
791 case RC_COMPLETION_INLINE_MATH:
792 lexrc >> completion_inline_math;
795 case RC_COMPLETION_INLINE_TEXT:
796 lexrc >> completion_inline_text;
799 case RC_COMPLETION_INLINE_DOTS:
800 lexrc >> completion_inline_dots;
803 case RC_AUTOCORRECTION_MATH:
804 lexrc >> autocorrection_math;
807 case RC_COMPLETION_POPUP_DELAY:
808 lexrc >> completion_popup_delay;
811 case RC_COMPLETION_POPUP_MATH:
812 lexrc >> completion_popup_math;
815 case RC_COMPLETION_POPUP_TEXT:
816 lexrc >> completion_popup_text;
819 case RC_COMPLETION_CURSOR_TEXT:
820 lexrc >> completion_cursor_text;
823 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
824 lexrc >> completion_popup_after_complete;
827 case RC_COMPLETION_MINLENGTH:
828 lexrc >> completion_minlength;
831 case RC_NUMLASTFILES:
832 lexrc >> num_lastfiles;
835 case RC_CHECKLASTFILES:
836 lexrc >> check_lastfiles;
843 case RC_USE_SYSTEM_THEME_ICONS:
844 lexrc >> use_system_theme_icons;
847 case RC_SCREEN_FONT_ROMAN:
849 roman_font_name = lexrc.getString();
850 oldFontFormat(roman_font_name,
855 case RC_SCREEN_FONT_SANS:
857 sans_font_name = lexrc.getString();
858 oldFontFormat(sans_font_name, sans_font_foundry);
862 case RC_SCREEN_FONT_TYPEWRITER:
864 typewriter_font_name = lexrc.getString();
865 oldFontFormat(typewriter_font_name,
866 typewriter_font_foundry);
870 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
871 lexrc >> roman_font_foundry;
874 case RC_SCREEN_FONT_SANS_FOUNDRY:
875 lexrc >> sans_font_foundry;
878 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
879 lexrc >> typewriter_font_foundry;
884 lexrc.printError("Missing color tag.");
887 string lyx_name = lexrc.getString();
890 lexrc.printError("Missing color name for color: `$$Token'");
893 string x11_name = lexrc.getString();
895 ColorCode const col =
896 lcolor.getFromLyXName(lyx_name);
897 if (col == Color_none ||
898 col == Color_inherit ||
902 if (!lcolor.setColor(col, x11_name))
903 LYXERR0("Bad lyxrc set_color for " << lyx_name);
907 case RC_AUTOREGIONDELETE:
908 // Auto region delete defaults to true
909 lexrc >> auto_region_delete;
914 lyxpipes = os::internal_path(lexrc.getString());
915 lyxpipes = expandPath(lyxpipes);
919 case RC_CURSOR_FOLLOWS_SCROLLBAR:
920 lexrc >> cursor_follows_scrollbar;
923 case RC_CURSOR_WIDTH:
924 lexrc >> cursor_width;
927 case RC_SCROLL_BELOW_DOCUMENT:
928 lexrc >> scroll_below_document;
931 case RC_PARAGRAPH_MARKERS:
932 lexrc >> paragraph_markers;
935 case RC_MAC_DONTSWAP_CTRL_META:
936 lexrc >> mac_dontswap_ctrl_meta;
939 case RC_MAC_LIKE_CURSOR_MOVEMENT:
940 lexrc >> mac_like_cursor_movement;
943 case RC_MACRO_EDIT_STYLE:
945 switch (lexrc.getInteger()) {
946 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
947 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
948 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
953 case RC_DIALOGS_ICONIFY_WITH_MAIN:
954 lexrc >> dialogs_iconify_with_main;
957 case RC_PLAINTEXT_LINELEN:
958 lexrc >> plaintext_linelen;
960 // Spellchecker settings:
961 case RC_ACCEPT_COMPOUND:
962 lexrc >> spellchecker_accept_compound;
964 case RC_USE_SYSTEM_COLORS:
965 lexrc >> use_system_colors;
968 lexrc >> use_tooltip;
970 case RC_USE_PIXMAP_CACHE:
971 lexrc >> use_pixmap_cache;
976 case RC_SPELLCHECKER:
977 lexrc >> spellchecker;
980 lexrc >> spellchecker_alt_lang;
983 lexrc >> spellchecker_esc_chars;
985 case RC_SPELLCHECK_CONTINUOUSLY:
986 lexrc >> spellcheck_continuously;
988 case RC_SPELLCHECK_NOTES:
989 lexrc >> spellcheck_notes;
992 lexrc >> make_backup;
994 case RC_SAVE_COMPRESSED:
995 lexrc >> save_compressed;
997 case RC_BACKUPDIR_PATH:
999 backupdir_path = os::internal_path(lexrc.getString());
1000 backupdir_path = expandPath(backupdir_path);
1003 case RC_DEFAULT_DECIMAL_POINT:
1004 lexrc >> default_decimal_point;
1006 case RC_DEFAULT_LENGTH_UNIT:
1008 default_length_unit = (Length::UNIT) lexrc.getInteger();
1010 case RC_DATE_INSERT_FORMAT:
1011 lexrc >> date_insert_format;
1013 case RC_LANGUAGE_CUSTOM_PACKAGE:
1014 lexrc >> language_custom_package;
1016 case RC_LANGUAGE_AUTO_BEGIN:
1017 lexrc >> language_auto_begin;
1019 case RC_LANGUAGE_AUTO_END:
1020 lexrc >> language_auto_end;
1022 case RC_LANGUAGE_GLOBAL_OPTIONS:
1023 lexrc >> language_global_options;
1025 case RC_LANGUAGE_PACKAGE_SELECTION:
1027 switch (lexrc.getInteger()) {
1029 language_package_selection = LP_AUTO;
1032 language_package_selection = LP_BABEL;
1035 language_package_selection = LP_CUSTOM;
1038 language_package_selection = LP_NONE;
1043 case RC_LANGUAGE_COMMAND_BEGIN:
1044 lexrc >> language_command_begin;
1046 case RC_LANGUAGE_COMMAND_END:
1047 lexrc >> language_command_end;
1049 case RC_LANGUAGE_COMMAND_LOCAL:
1050 lexrc >> language_command_local;
1052 case RC_RTL_SUPPORT:
1053 lexrc >> rtl_support;
1055 case RC_VISUAL_CURSOR:
1056 lexrc >> visual_cursor;
1058 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
1059 lexrc >> close_buffer_with_last_view;
1061 case RC_AUTO_NUMBER:
1062 lexrc >> auto_number;
1064 case RC_MARK_FOREIGN_LANGUAGE:
1065 lexrc >> mark_foreign_language;
1069 string fmt, command;
1071 fmt = lexrc.getString();
1072 if (lexrc.next(true))
1073 command = lexrc.getString();
1074 setMover(fmt, command);
1078 case RC_CONVERTER: {
1079 string from, to, command, flags;
1081 from = lexrc.getString();
1083 to = lexrc.getString();
1084 if (lexrc.next(true))
1085 command = lexrc.getString();
1087 flags = lexrc.getString();
1088 if (command.empty())
1089 theConverters().erase(from, to);
1091 theConverters().add(from, to, command, flags);
1094 // compatibility with versions older than 1.4.0 only
1096 string format, command;
1097 lexrc >> format >> command;
1098 formats.setViewer(format, command);
1101 case RC_FILEFORMAT: {
1103 string format, extensions, prettyname, shortcut;
1104 if (!(lexrc >> format >> extensions))
1106 if (ok && lexrc.next(true))
1107 prettyname = lexrc.getString();
1111 if(!(lexrc >> shortcut))
1113 string viewer, editor;
1114 if (ok && lexrc.next(true))
1115 viewer = lexrc.getString();
1118 if (ok && lexrc.next(true))
1119 editor = lexrc.getString();
1123 if (!(lexrc >> flags >> mime))
1125 int flgs = Format::none;
1126 while (!flags.empty()) {
1128 flags = split(flags, flag, ',');
1129 if (flag == "document")
1130 flgs |= Format::document;
1131 else if (flag == "vector")
1132 flgs |= Format::vector;
1133 else if (flag == "zipped=native")
1134 flgs |= Format::zipped_native;
1135 else if (flag == "menu=export")
1136 flgs |= Format::export_menu;
1138 LYXERR0("Ignoring unknown flag `"
1139 << flag << "' for format `"
1143 LYXERR0("Syntax error in format " << format);
1144 else if (prettyname.empty()) {
1145 if (theConverters().formatIsUsed(format))
1146 LYXERR0("Can't delete format " << format);
1148 formats.erase(format);
1150 formats.add(format, extensions, prettyname,
1151 shortcut, viewer, editor, mime, flgs);
1155 case RC_VIEWER_ALTERNATIVES: {
1156 string format, command;
1159 viewer_alternatives[format].insert(command);
1162 case RC_EDITOR_ALTERNATIVES: {
1163 string format, command;
1166 editor_alternatives[format].insert(command);
1170 case RC_DEFAULT_OTF_VIEW_FORMAT:
1171 lexrc >> default_otf_view_format;
1174 case RC_DEFAULT_VIEW_FORMAT:
1175 lexrc >> default_view_format;
1178 case RC_GUI_LANGUAGE:
1179 lexrc >> gui_language;
1182 case RC_SHOW_BANNER:
1183 lexrc >> show_banner;
1188 string const tmp = lexrc.getString();
1189 if (tmp == "true" || tmp == "on")
1190 preview = PREVIEW_ON;
1191 else if (tmp == "no_math")
1192 preview = PREVIEW_NO_MATH;
1194 preview = PREVIEW_OFF;
1195 if (tmp != "false" && tmp != "off")
1196 LYXERR0("Unrecognized preview status \""
1202 case RC_PREVIEW_HASHED_LABELS:
1203 lexrc >> preview_hashed_labels;
1206 case RC_PREVIEW_SCALE_FACTOR:
1207 lexrc >> preview_scale_factor;
1214 lexrc >> user_email;
1217 case RC_PATH_PREFIX:
1218 lexrc >> path_prefix;
1221 case RC_USE_CONVERTER_CACHE:
1222 lexrc >> use_converter_cache;
1224 case RC_CONVERTER_CACHE_MAXAGE:
1225 lexrc >> converter_cache_maxage;
1228 case RC_SORT_LAYOUTS:
1229 lexrc >> sort_layouts;
1231 case RC_GROUP_LAYOUTS:
1232 lexrc >> group_layouts;
1234 case RC_FULL_SCREEN_LIMIT:
1235 lexrc >> full_screen_limit;
1237 case RC_FULL_SCREEN_TOOLBARS:
1238 lexrc >> full_screen_toolbars;
1240 case RC_FULL_SCREEN_SCROLLBAR:
1241 lexrc >> full_screen_scrollbar;
1243 case RC_FULL_SCREEN_STATUSBAR:
1244 lexrc >> full_screen_statusbar;
1246 case RC_FULL_SCREEN_TABBAR:
1247 lexrc >> full_screen_tabbar;
1249 case RC_FULL_SCREEN_MENUBAR:
1250 lexrc >> full_screen_menubar;
1252 case RC_FULL_SCREEN_WIDTH:
1253 lexrc >> full_screen_width;
1255 case RC_OPEN_BUFFERS_IN_TABS:
1256 lexrc >> open_buffers_in_tabs;
1258 case RC_SINGLE_CLOSE_TAB_BUTTON:
1259 lexrc >> single_close_tab_button;
1261 case RC_SINGLE_INSTANCE:
1262 lexrc >> single_instance;
1263 if (run_mode == PREFERRED)
1264 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1266 case RC_FORWARD_SEARCH_DVI:
1267 if (lexrc.next(true))
1268 forward_search_dvi = lexrc.getString();
1270 case RC_FORWARD_SEARCH_PDF:
1271 if (lexrc.next(true))
1272 forward_search_pdf = lexrc.getString();
1274 case RC_EXPORT_OVERWRITE:
1276 string const tmp = lexrc.getString();
1277 if (tmp == "all" || tmp == "true")
1278 export_overwrite = ALL_FILES;
1279 else if (tmp == "main")
1280 export_overwrite = MAIN_FILE;
1282 export_overwrite = NO_FILES;
1283 if (tmp != "ask" && tmp != "false")
1284 LYXERR0("Unrecognized export_overwrite status \""
1289 case RC_SCROLL_WHEEL_ZOOM:
1291 string const tmp = lexrc.getString();
1293 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1294 else if (tmp == "shift")
1295 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1296 else if (tmp == "alt")
1297 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1299 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1300 if (tmp != "off" && tmp != "false")
1301 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1308 break; // this is just a dummy
1311 // This is triggered the first time through the loop unless
1312 // we hit a format tag.
1313 if (check_format && format != LYXRC_FILEFORMAT)
1314 return FormatMismatch;
1317 /// Update converters data-structures
1318 theConverters().update(formats);
1319 theConverters().buildGraph();
1325 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1327 ofstream ofs(filename.toFilesystemEncoding().c_str());
1329 write(ofs, ignore_system_lyxrc);
1333 void LyXRC::print() const
1335 if (lyxerr.debugging())
1336 write(lyxerr, false);
1344 typedef pair<string, SpecialisedMover> Data;
1346 SameMover(Data const & comparison)
1347 : comparison_(comparison) {}
1349 bool operator()(Data const & data) const
1351 return data.first == comparison_.first &&
1352 data.second.command() == comparison_.second.command();
1362 // Escape \ and " so that LyXLex can read the string later
1363 string escapeCommand(string const & str) {
1364 return subst(subst(str , "\\", "\\\\"),
1371 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1373 LyXRCTags tag = RC_LAST;
1375 if (!name.empty()) {
1376 for (int i = 0; i != lyxrcCount; ++i)
1377 if ("\\" + name == lyxrcTags[i].tag)
1378 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1382 os << "# LyX " << lyx_version
1383 << " generated this file. If you want to make your own\n"
1384 << "# modifications you should do them from inside LyX and save.\n\n"
1385 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1387 // Why the switch you might ask. It is a trick to ensure that all
1388 // the elements in the LyXRCTags enum are handled. As you can see
1389 // there are no breaks at all. So it is just a huge fall-through.
1390 // The nice thing is that we will get a warning from the compiler
1391 // if we forget an element.
1395 // input/include files are not done here
1396 case RC_LYXRCFORMAT:
1398 if (ignore_system_lyxrc ||
1399 bind_file != system_lyxrc.bind_file) {
1400 string const path = os::external_path(bind_file);
1401 os << "\\bind_file \"" << path << "\"\n";
1407 if (ignore_system_lyxrc ||
1408 def_file != system_lyxrc.def_file) {
1409 string const path = os::external_path(def_file);
1410 os << "\\def_file \"" << path << "\"\n";
1419 << "# MISC SECTION ######################################\n"
1421 // bind files are not done here.
1423 case RC_PATH_PREFIX:
1424 if (ignore_system_lyxrc ||
1425 path_prefix != system_lyxrc.path_prefix) {
1426 os << "\\path_prefix \"" << path_prefix << "\"\n";
1431 if (ignore_system_lyxrc ||
1432 ui_file != system_lyxrc.ui_file) {
1433 string const path = os::external_path(ui_file);
1434 os << "\\ui_file \"" << path << "\"\n";
1438 case RC_AUTOREGIONDELETE:
1439 if (ignore_system_lyxrc ||
1440 auto_region_delete != system_lyxrc.auto_region_delete) {
1441 os << "# Set to false to inhibit automatic replacement of\n"
1442 << "# the current selection.\n"
1443 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1448 case RC_AUTORESET_OPTIONS:
1449 if (ignore_system_lyxrc ||
1450 auto_reset_options != system_lyxrc.auto_reset_options) {
1451 os << "# Set to false to inhibit automatic reset of\n"
1452 << "# the class options to defaults on class change.\n"
1453 << "\\auto_reset_options "
1454 << convert<string>(auto_reset_options)
1460 if (ignore_system_lyxrc ||
1461 autosave != system_lyxrc.autosave) {
1462 os << "# The time interval between auto-saves in seconds.\n"
1463 << "\\autosave " << autosave << '\n';
1467 case RC_DISPLAY_GRAPHICS:
1468 if (ignore_system_lyxrc ||
1469 display_graphics != system_lyxrc.display_graphics) {
1470 os << "# Display graphics within LyX\n"
1472 << "\\display_graphics "
1473 << (display_graphics ? "true" : "false")
1478 case RC_SORT_LAYOUTS:
1479 if (ignore_system_lyxrc ||
1480 sort_layouts != system_lyxrc.sort_layouts) {
1481 os << "# Sort layouts alphabetically.\n"
1482 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1486 case RC_GROUP_LAYOUTS:
1487 if (ignore_system_lyxrc ||
1488 group_layouts != system_lyxrc.group_layouts) {
1489 os << "# Group layouts by their category.\n"
1490 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1494 case RC_VIEWDVI_PAPEROPTION:
1495 if (ignore_system_lyxrc ||
1496 view_dvi_paper_option
1497 != system_lyxrc.view_dvi_paper_option) {
1498 os << "# Options used to specify paper size to the\n"
1499 << "# view_dvi_command (e.g. -paper)\n"
1500 << "\\view_dvi_paper_option \""
1501 << view_dvi_paper_option << "\"\n";
1505 case RC_CHKTEX_COMMAND:
1506 if (ignore_system_lyxrc ||
1507 chktex_command != system_lyxrc.chktex_command) {
1508 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1512 case RC_BIBTEX_ALTERNATIVES: {
1513 CommandSet::const_iterator it = bibtex_alternatives.begin();
1514 CommandSet::const_iterator end = bibtex_alternatives.end();
1515 for ( ; it != end; ++it) {
1516 if (ignore_system_lyxrc
1517 || !system_lyxrc.bibtex_alternatives.count(*it))
1518 os << "\\bibtex_alternatives \""
1524 case RC_BIBTEX_COMMAND:
1525 if (ignore_system_lyxrc ||
1526 bibtex_command != system_lyxrc.bibtex_command) {
1527 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1531 case RC_JBIBTEX_COMMAND:
1532 if (ignore_system_lyxrc ||
1533 jbibtex_command != system_lyxrc.jbibtex_command) {
1534 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1538 case RC_INDEX_ALTERNATIVES: {
1539 CommandSet::const_iterator it = index_alternatives.begin();
1540 CommandSet::const_iterator end = index_alternatives.end();
1541 for ( ; it != end; ++it) {
1542 if (ignore_system_lyxrc
1543 || !system_lyxrc.index_alternatives.count(*it))
1544 os << "\\index_alternatives \""
1550 case RC_INDEX_COMMAND:
1551 if (ignore_system_lyxrc ||
1552 index_command != system_lyxrc.index_command) {
1553 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1557 case RC_JINDEX_COMMAND:
1558 if (ignore_system_lyxrc ||
1559 jindex_command != system_lyxrc.jindex_command) {
1560 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1564 case RC_SPLITINDEX_COMMAND:
1565 if (ignore_system_lyxrc ||
1566 splitindex_command != system_lyxrc.splitindex_command) {
1567 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1571 case RC_NOMENCL_COMMAND:
1572 if (ignore_system_lyxrc ||
1573 nomencl_command != system_lyxrc.nomencl_command) {
1574 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1578 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1579 // Don't write this setting to the preferences file,
1580 // but allow temporary changes (bug 7557).
1581 if (ignore_system_lyxrc) {
1582 os << "\\tex_expects_windows_paths "
1583 << convert<string>(windows_style_tex_paths) << '\n';
1587 case RC_TEX_ALLOWS_SPACES:
1588 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1589 os << "\\tex_allows_spaces "
1590 << convert<string>(tex_allows_spaces) << '\n';
1595 if (ignore_system_lyxrc ||
1596 use_kbmap != system_lyxrc.use_kbmap) {
1597 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1601 case RC_KBMAP_PRIMARY:
1602 if (ignore_system_lyxrc ||
1603 primary_kbmap != system_lyxrc.primary_kbmap) {
1604 string const path = os::external_path(primary_kbmap);
1605 os << "\\kbmap_primary \"" << path << "\"\n";
1609 case RC_KBMAP_SECONDARY:
1610 if (ignore_system_lyxrc ||
1611 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1612 string const path = os::external_path(secondary_kbmap);
1613 os << "\\kbmap_secondary \"" << path << "\"\n";
1618 if (ignore_system_lyxrc ||
1619 lyxpipes != system_lyxrc.lyxpipes) {
1620 string const path = os::external_path(lyxpipes);
1621 os << "\\serverpipe \"" << path << "\"\n";
1625 case RC_DATE_INSERT_FORMAT:
1626 if (ignore_system_lyxrc ||
1627 date_insert_format != system_lyxrc.date_insert_format) {
1628 os << "\\date_insert_format \"" << date_insert_format
1635 os << "\\user_name \"" << user_name << "\"\n";
1640 os << "\\user_email \"" << user_email << "\"\n";
1644 case RC_SHOW_BANNER:
1645 if (ignore_system_lyxrc ||
1646 show_banner != system_lyxrc.show_banner) {
1647 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1653 if (ignore_system_lyxrc ||
1654 preview != system_lyxrc.preview) {
1660 case PREVIEW_NO_MATH:
1667 os << "\\preview " << status << '\n';
1672 case RC_PREVIEW_HASHED_LABELS:
1673 if (ignore_system_lyxrc ||
1674 preview_hashed_labels !=
1675 system_lyxrc.preview_hashed_labels) {
1676 os << "\\preview_hashed_labels "
1677 << convert<string>(preview_hashed_labels) << '\n';
1682 case RC_PREVIEW_SCALE_FACTOR:
1683 if (ignore_system_lyxrc ||
1684 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1685 os << "\\preview_scale_factor "
1686 << preview_scale_factor << '\n';
1691 case RC_USE_CONVERTER_CACHE:
1692 if (ignore_system_lyxrc ||
1693 use_converter_cache != system_lyxrc.use_converter_cache) {
1694 os << "\\use_converter_cache "
1695 << convert<string>(use_converter_cache) << '\n';
1700 case RC_CONVERTER_CACHE_MAXAGE:
1701 if (ignore_system_lyxrc ||
1702 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1703 os << "\\converter_cache_maxage "
1704 << converter_cache_maxage << '\n';
1710 << "# SCREEN & FONTS SECTION ############################\n"
1714 if (ignore_system_lyxrc ||
1715 icon_set != system_lyxrc.icon_set) {
1716 os << "\\icon_set \"" << icon_set
1722 case RC_USE_SYSTEM_THEME_ICONS:
1723 if (ignore_system_lyxrc ||
1724 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1725 os << "\\use_system_theme_icons "
1726 << convert<string>(use_system_theme_icons)
1733 if (ignore_system_lyxrc ||
1734 dpi != system_lyxrc.dpi) {
1735 os << "\\screen_dpi " << dpi << '\n';
1739 case RC_SCREEN_ZOOM:
1740 if (ignore_system_lyxrc ||
1741 zoom != system_lyxrc.zoom) {
1742 os << "\\screen_zoom " << zoom << '\n';
1746 case RC_GEOMETRY_SESSION:
1747 if (ignore_system_lyxrc ||
1748 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1749 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1754 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1755 if (ignore_system_lyxrc ||
1756 cursor_follows_scrollbar
1757 != system_lyxrc.cursor_follows_scrollbar) {
1758 os << "\\cursor_follows_scrollbar "
1759 << convert<string>(cursor_follows_scrollbar) << '\n';
1763 case RC_CURSOR_WIDTH:
1764 if (ignore_system_lyxrc ||
1766 != system_lyxrc.cursor_width) {
1767 os << "\\cursor_width "
1768 << cursor_width << '\n';
1772 case RC_SCROLL_BELOW_DOCUMENT:
1773 if (ignore_system_lyxrc ||
1774 scroll_below_document
1775 != system_lyxrc.scroll_below_document) {
1776 os << "\\scroll_below_document "
1777 << convert<string>(scroll_below_document) << '\n';
1781 case RC_PARAGRAPH_MARKERS:
1782 if (ignore_system_lyxrc ||
1784 != system_lyxrc.paragraph_markers) {
1785 os << "\\paragraph_markers "
1786 << convert<string>(paragraph_markers) << '\n';
1790 case RC_MAC_DONTSWAP_CTRL_META:
1791 if (ignore_system_lyxrc ||
1792 mac_dontswap_ctrl_meta
1793 != system_lyxrc.mac_dontswap_ctrl_meta) {
1794 os << "\\mac_dontswap_ctrl_meta "
1795 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1799 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1800 if (ignore_system_lyxrc ||
1801 mac_like_cursor_movement
1802 != system_lyxrc.mac_like_cursor_movement) {
1803 os << "\\mac_like_cursor_movement "
1804 << convert<string>(mac_like_cursor_movement) << '\n';
1808 case RC_MACRO_EDIT_STYLE:
1809 if (ignore_system_lyxrc ||
1811 != system_lyxrc.macro_edit_style) {
1812 os << "\\macro_edit_style ";
1813 switch (macro_edit_style) {
1814 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1815 case MACRO_EDIT_INLINE: os << "1\n"; break;
1816 case MACRO_EDIT_LIST: os << "2\n"; break;
1821 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1822 if (ignore_system_lyxrc ||
1823 dialogs_iconify_with_main
1824 != system_lyxrc.dialogs_iconify_with_main) {
1825 os << "\\dialogs_iconify_with_main "
1826 << convert<string>(dialogs_iconify_with_main) << '\n';
1830 case RC_SCREEN_FONT_ROMAN:
1831 if (ignore_system_lyxrc ||
1832 roman_font_name != system_lyxrc.roman_font_name) {
1833 os << "\\screen_font_roman \"" << roman_font_name
1838 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1839 if (ignore_system_lyxrc ||
1840 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1841 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1846 case RC_SCREEN_FONT_SANS:
1847 if (ignore_system_lyxrc ||
1848 sans_font_name != system_lyxrc.sans_font_name) {
1849 os << "\\screen_font_sans \"" << sans_font_name
1854 case RC_SCREEN_FONT_SANS_FOUNDRY:
1855 if (ignore_system_lyxrc ||
1856 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1857 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1862 case RC_SCREEN_FONT_TYPEWRITER:
1863 if (ignore_system_lyxrc ||
1864 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1865 os << "\\screen_font_typewriter \""
1866 << typewriter_font_name << "\"\n";
1870 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1871 if (ignore_system_lyxrc ||
1872 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1873 os << "\\screen_font_typewriter_foundry \""
1874 << typewriter_font_foundry << "\"\n";
1879 case RC_SCREEN_FONT_SCALABLE:
1880 if (ignore_system_lyxrc ||
1881 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1882 os << "\\screen_font_scalable "
1883 << convert<string>(use_scalable_fonts)
1888 case RC_SCREEN_FONT_SIZES:
1889 if (ignore_system_lyxrc ||
1890 font_sizes[FONT_SIZE_TINY]
1891 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1892 font_sizes[FONT_SIZE_SCRIPT]
1893 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1894 font_sizes[FONT_SIZE_FOOTNOTE]
1895 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1896 font_sizes[FONT_SIZE_SMALL]
1897 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1898 font_sizes[FONT_SIZE_NORMAL]
1899 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1900 font_sizes[FONT_SIZE_LARGE]
1901 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1902 font_sizes[FONT_SIZE_LARGER]
1903 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1904 font_sizes[FONT_SIZE_LARGEST]
1905 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1906 font_sizes[FONT_SIZE_HUGE]
1907 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1908 font_sizes[FONT_SIZE_HUGER]
1909 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
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]
1927 case RC_FULL_SCREEN_LIMIT:
1928 if (ignore_system_lyxrc ||
1929 full_screen_limit != system_lyxrc.full_screen_limit) {
1930 os << "\\fullscreen_limit "
1931 << convert<string>(full_screen_limit)
1936 case RC_FULL_SCREEN_TOOLBARS:
1937 if (ignore_system_lyxrc ||
1938 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1939 os << "\\fullscreen_toolbars "
1940 << convert<string>(full_screen_toolbars)
1945 case RC_FULL_SCREEN_SCROLLBAR:
1946 if (ignore_system_lyxrc ||
1947 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1948 os << "\\fullscreen_scrollbar "
1949 << convert<string>(full_screen_scrollbar)
1954 case RC_FULL_SCREEN_STATUSBAR:
1955 if (ignore_system_lyxrc ||
1956 full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
1957 os << "\\fullscreen_statusbar "
1958 << convert<string>(full_screen_statusbar)
1963 case RC_FULL_SCREEN_TABBAR:
1964 if (ignore_system_lyxrc ||
1965 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1966 os << "\\fullscreen_tabbar "
1967 << convert<string>(full_screen_tabbar)
1972 case RC_FULL_SCREEN_MENUBAR:
1973 if (ignore_system_lyxrc ||
1974 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1975 os << "\\fullscreen_menubar "
1976 << convert<string>(full_screen_menubar)
1981 case RC_FULL_SCREEN_WIDTH:
1982 if (ignore_system_lyxrc ||
1983 full_screen_width != system_lyxrc.full_screen_width) {
1984 os << "\\fullscreen_width "
1985 << convert<string>(full_screen_width)
1990 case RC_OPEN_BUFFERS_IN_TABS:
1991 if (ignore_system_lyxrc ||
1992 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1993 os << "\\open_buffers_in_tabs "
1994 << convert<string>(open_buffers_in_tabs)
1999 case RC_SINGLE_CLOSE_TAB_BUTTON:
2000 if (ignore_system_lyxrc ||
2001 single_close_tab_button != system_lyxrc.single_close_tab_button) {
2002 os << "\\single_close_tab_button "
2003 << convert<string>(single_close_tab_button)
2008 case RC_SINGLE_INSTANCE:
2009 if (ignore_system_lyxrc ||
2010 single_instance != system_lyxrc.single_instance) {
2011 os << "\\single_instance "
2012 << convert<string>(single_instance)
2017 case RC_FORWARD_SEARCH_DVI:
2018 if (ignore_system_lyxrc ||
2019 forward_search_dvi != system_lyxrc.forward_search_dvi) {
2020 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
2024 case RC_FORWARD_SEARCH_PDF:
2025 if (ignore_system_lyxrc ||
2026 forward_search_pdf != system_lyxrc.forward_search_pdf) {
2027 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
2033 << "# COLOR SECTION ###################################\n"
2037 for (int i = 0; i < Color_ignore; ++i) {
2038 ColorCode lc = static_cast<ColorCode>(i);
2039 string const col = lcolor.getX11Name(lc);
2040 if (ignore_system_lyxrc
2041 || col != system_lcolor.getX11Name(lc)) {
2042 os << "\\set_color \""
2043 << lcolor.getLyXName(lc) << "\" \""
2051 << "# PRINTER SECTION ###################################\n"
2055 if (ignore_system_lyxrc ||
2056 printer != system_lyxrc.printer) {
2057 os << "\\printer \"" << printer << "\"\n";
2061 case RC_PRINT_ADAPTOUTPUT:
2062 if (ignore_system_lyxrc ||
2063 print_adapt_output != system_lyxrc.print_adapt_output) {
2064 os << "\\print_adapt_output "
2065 << convert<string>(print_adapt_output)
2070 case RC_PRINT_COMMAND:
2071 if (ignore_system_lyxrc ||
2072 print_command != system_lyxrc.print_command) {
2073 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
2077 case RC_PRINTEXSTRAOPTIONS:
2078 if (ignore_system_lyxrc ||
2079 print_extra_options != system_lyxrc.print_extra_options) {
2080 os << "\\print_extra_options \"" << print_extra_options
2085 case RC_PRINTSPOOL_COMMAND:
2086 if (ignore_system_lyxrc ||
2087 print_spool_command != system_lyxrc.print_spool_command) {
2088 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
2093 case RC_PRINTSPOOL_PRINTERPREFIX:
2094 if (ignore_system_lyxrc ||
2095 print_spool_printerprefix
2096 != system_lyxrc.print_spool_printerprefix) {
2097 os << "\\print_spool_printerprefix \""
2098 << print_spool_printerprefix << "\"\n";
2102 case RC_PRINTEVENPAGEFLAG:
2103 if (ignore_system_lyxrc ||
2104 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
2105 os << "\\print_evenpage_flag \"" << print_evenpage_flag
2110 case RC_PRINTODDPAGEFLAG:
2111 if (ignore_system_lyxrc ||
2112 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
2113 os << "\\print_oddpage_flag \"" << print_oddpage_flag
2118 case RC_PRINTREVERSEFLAG:
2119 if (ignore_system_lyxrc ||
2120 print_reverse_flag != system_lyxrc.print_reverse_flag) {
2121 os << "\\print_reverse_flag \"" << print_reverse_flag
2126 case RC_PRINTLANDSCAPEFLAG:
2127 if (ignore_system_lyxrc ||
2128 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2129 os << "\\print_landscape_flag \"" << print_landscape_flag
2134 case RC_PRINTPAGERANGEFLAG:
2135 if (ignore_system_lyxrc ||
2136 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
2137 os << "\\print_pagerange_flag \"" << print_pagerange_flag
2142 case RC_PRINTCOPIESFLAG:
2143 if (ignore_system_lyxrc ||
2144 print_copies_flag != system_lyxrc.print_copies_flag) {
2145 os << "\\print_copies_flag \"" << print_copies_flag
2150 case RC_PRINTCOLLCOPIESFLAG:
2151 if (ignore_system_lyxrc ||
2152 print_collcopies_flag
2153 != system_lyxrc.print_collcopies_flag) {
2154 os << "\\print_collcopies_flag \""
2155 << print_collcopies_flag
2160 case RC_PRINTPAPERFLAG:
2161 if (ignore_system_lyxrc ||
2162 print_paper_flag != system_lyxrc.print_paper_flag) {
2163 os << "\\print_paper_flag \"" << print_paper_flag
2168 case RC_PRINTPAPERDIMENSIONFLAG:
2169 if (ignore_system_lyxrc ||
2170 print_paper_dimension_flag
2171 != system_lyxrc.print_paper_dimension_flag) {
2172 os << "\\print_paper_dimension_flag \""
2173 << print_paper_dimension_flag << "\"\n";
2177 case RC_PRINTTOPRINTER:
2178 if (ignore_system_lyxrc ||
2179 print_to_printer != system_lyxrc.print_to_printer) {
2180 os << "\\print_to_printer \"" << print_to_printer
2185 case RC_PRINTTOFILE:
2186 if (ignore_system_lyxrc ||
2187 print_to_file != system_lyxrc.print_to_file) {
2188 string const path = os::external_path(print_to_file);
2189 os << "\\print_to_file \"" << path << "\"\n";
2193 case RC_PRINTFILEEXTENSION:
2194 if (ignore_system_lyxrc ||
2195 print_file_extension != system_lyxrc.print_file_extension) {
2196 os << "\\print_file_extension \""
2197 << print_file_extension
2204 << "# TEX SECTION #######################################\n"
2207 case RC_TEXINPUTS_PREFIX:
2208 if (ignore_system_lyxrc ||
2209 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2210 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2215 case RC_FONT_ENCODING:
2216 if (ignore_system_lyxrc ||
2217 fontenc != system_lyxrc.fontenc) {
2218 os << "\\font_encoding \"" << fontenc << "\"\n";
2223 case RC_FORCE_PAINT_SINGLE_CHAR:
2224 if (ignore_system_lyxrc ||
2225 force_paint_single_char != system_lyxrc.force_paint_single_char) {
2226 os << "\\force_paint_single_char \"" << force_paint_single_char << "\"\n";
2232 << "# FILE SECTION ######################################\n"
2235 case RC_DOCUMENTPATH:
2236 if (ignore_system_lyxrc ||
2237 document_path != system_lyxrc.document_path) {
2238 string const path = os::external_path(document_path);
2239 os << "\\document_path \"" << path << "\"\n";
2243 case RC_USELASTFILEPOS:
2244 if (ignore_system_lyxrc ||
2245 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2246 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2251 case RC_LOADSESSION:
2252 if (ignore_system_lyxrc ||
2253 load_session != system_lyxrc.load_session) {
2254 os << "\\load_session " << convert<string>(load_session)
2259 case RC_MOUSE_WHEEL_SPEED:
2260 if (ignore_system_lyxrc ||
2261 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2262 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2266 case RC_COMPLETION_INLINE_DELAY:
2267 if (ignore_system_lyxrc ||
2268 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2269 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2273 case RC_COMPLETION_INLINE_MATH:
2274 if (ignore_system_lyxrc ||
2275 completion_inline_math != system_lyxrc.completion_inline_math) {
2276 os << "\\completion_inline_math "
2277 << convert<string>(completion_inline_math) << '\n';
2281 case RC_COMPLETION_INLINE_TEXT:
2282 if (ignore_system_lyxrc ||
2283 completion_inline_text != system_lyxrc.completion_inline_text) {
2284 os << "\\completion_inline_text "
2285 << convert<string>(completion_inline_text) << '\n';
2289 case RC_COMPLETION_INLINE_DOTS:
2290 if (ignore_system_lyxrc ||
2291 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2292 os << "\\completion_inline_dots "
2293 << convert<string>(completion_inline_dots) << '\n';
2297 case RC_AUTOCORRECTION_MATH:
2298 if (ignore_system_lyxrc ||
2299 autocorrection_math != system_lyxrc.autocorrection_math) {
2300 os << "\\autocorrection_math "
2301 << convert<string>(autocorrection_math) << '\n';
2305 case RC_COMPLETION_POPUP_DELAY:
2306 if (ignore_system_lyxrc ||
2307 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2308 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2312 case RC_COMPLETION_POPUP_MATH:
2313 if (ignore_system_lyxrc ||
2314 completion_popup_math != system_lyxrc.completion_popup_math) {
2315 os << "\\completion_popup_math "
2316 << convert<string>(completion_popup_math) << '\n';
2320 case RC_COMPLETION_POPUP_TEXT:
2321 if (ignore_system_lyxrc ||
2322 completion_popup_text != system_lyxrc.completion_popup_text) {
2323 os << "\\completion_popup_text "
2324 << convert<string>(completion_popup_text) << '\n';
2328 case RC_COMPLETION_CURSOR_TEXT:
2329 if (ignore_system_lyxrc ||
2330 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2331 os << "\\completion_cursor_text "
2332 << convert<string>(completion_cursor_text) << '\n';
2336 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2337 if (ignore_system_lyxrc ||
2338 completion_popup_after_complete
2339 != system_lyxrc.completion_popup_after_complete) {
2340 os << "\\completion_popup_after_complete "
2341 << convert<string>(completion_popup_after_complete) << '\n';
2345 case RC_COMPLETION_MINLENGTH:
2346 if (ignore_system_lyxrc ||
2347 completion_minlength != system_lyxrc.completion_minlength) {
2348 os << "\\completion_minlength " << convert<string>(completion_minlength)
2354 case RC_NUMLASTFILES:
2355 if (ignore_system_lyxrc ||
2356 num_lastfiles != system_lyxrc.num_lastfiles) {
2357 os << "\\num_lastfiles " << num_lastfiles << '\n';
2361 case RC_CHECKLASTFILES:
2362 if (ignore_system_lyxrc ||
2363 check_lastfiles != system_lyxrc.check_lastfiles) {
2364 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2369 case RC_EXAMPLEPATH:
2370 if (ignore_system_lyxrc ||
2371 example_path != system_lyxrc.example_path) {
2372 string const path = os::external_path(example_path);
2373 os << "\\example_path \"" << path << "\"\n";
2377 case RC_TEMPLATEPATH:
2378 if (ignore_system_lyxrc ||
2379 template_path != system_lyxrc.template_path) {
2380 string const path = os::external_path(template_path);
2381 os << "\\template_path \"" << path << "\"\n";
2385 case RC_TEMPDIRPATH:
2386 if (ignore_system_lyxrc ||
2387 tempdir_path != system_lyxrc.tempdir_path) {
2388 string const path = os::external_path(tempdir_path);
2389 os << "\\tempdir_path \"" << path << "\"\n";
2393 case RC_THESAURUSDIRPATH:
2394 if (ignore_system_lyxrc ||
2395 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2396 string const path = os::external_path(thesaurusdir_path);
2397 os << "\\thesaurusdir_path \"" << path << "\"\n";
2401 case RC_HUNSPELLDIR_PATH:
2402 if (ignore_system_lyxrc ||
2403 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2404 string const path = os::external_path(hunspelldir_path);
2405 os << "\\hunspelldir_path \"" << path << "\"\n";
2409 case RC_PLAINTEXT_LINELEN:
2410 if (ignore_system_lyxrc ||
2411 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2412 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2416 case RC_MAKE_BACKUP:
2417 if (ignore_system_lyxrc ||
2418 make_backup != system_lyxrc.make_backup) {
2419 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2423 case RC_SAVE_COMPRESSED:
2424 if (ignore_system_lyxrc ||
2425 save_compressed != system_lyxrc.save_compressed) {
2426 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2430 case RC_BACKUPDIR_PATH:
2431 if (ignore_system_lyxrc ||
2432 backupdir_path != system_lyxrc.backupdir_path) {
2433 string const path = os::external_path(backupdir_path);
2434 os << "\\backupdir_path \"" << path << "\"\n";
2440 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2444 << "# SPELLCHECKER SECTION ##############################\n"
2447 case RC_ACCEPT_COMPOUND:
2448 if (ignore_system_lyxrc ||
2449 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2450 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2456 if (ignore_system_lyxrc ||
2457 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2458 os << "\\alternate_language \"" << spellchecker_alt_lang
2464 if (ignore_system_lyxrc ||
2465 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2466 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2470 case RC_USE_SYSTEM_COLORS:
2471 if (ignore_system_lyxrc ||
2472 use_system_colors != system_lyxrc.use_system_colors) {
2473 os << "\\use_system_colors "
2474 << convert<string>(use_system_colors)
2479 case RC_USE_TOOLTIP:
2480 if (ignore_system_lyxrc ||
2481 use_tooltip != system_lyxrc.use_tooltip) {
2482 os << "\\use_tooltip "
2483 << convert<string>(use_tooltip)
2488 case RC_USE_PIXMAP_CACHE:
2489 if (ignore_system_lyxrc ||
2490 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2491 os << "\\use_pixmap_cache "
2492 << convert<string>(use_pixmap_cache)
2498 if (ignore_system_lyxrc ||
2499 use_qimage != system_lyxrc.use_qimage) {
2500 os << "\\use_qimage "
2501 << convert<string>(use_qimage)
2508 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2513 case RC_DEFAULT_DECIMAL_POINT:
2514 if (ignore_system_lyxrc ||
2515 default_decimal_point != system_lyxrc.default_decimal_point) {
2516 os << "\\default_decimal_point " << default_decimal_point << '\n';
2521 case RC_DEFAULT_LENGTH_UNIT:
2522 if (ignore_system_lyxrc ||
2523 default_length_unit != system_lyxrc.default_length_unit) {
2524 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2529 case RC_SPELLCHECKER:
2530 if (ignore_system_lyxrc ||
2531 spellchecker != system_lyxrc.spellchecker) {
2532 os << "\\spellchecker " << spellchecker << '\n';
2537 case RC_SPELLCHECK_CONTINUOUSLY:
2538 if (ignore_system_lyxrc ||
2539 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2540 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2546 case RC_SPELLCHECK_NOTES:
2547 if (ignore_system_lyxrc ||
2548 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2549 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2555 case RC_RTL_SUPPORT:
2556 if (ignore_system_lyxrc ||
2557 rtl_support != system_lyxrc.rtl_support) {
2558 os << "\\rtl " << convert<string>(rtl_support) << '\n';
2562 case RC_VISUAL_CURSOR:
2563 if (ignore_system_lyxrc ||
2564 visual_cursor != system_lyxrc.visual_cursor) {
2565 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2569 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2570 if (ignore_system_lyxrc ||
2571 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2572 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2573 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2577 case RC_LANGUAGE_CUSTOM_PACKAGE:
2578 if (ignore_system_lyxrc ||
2579 language_custom_package != system_lyxrc.language_custom_package) {
2580 os << "\\language_custom_package \"" << language_custom_package
2585 case RC_LANGUAGE_GLOBAL_OPTIONS:
2586 if (ignore_system_lyxrc ||
2587 language_global_options
2588 != system_lyxrc.language_global_options) {
2589 os << "\\language_global_options \""
2590 << convert<string>(language_global_options)
2595 case RC_LANGUAGE_PACKAGE_SELECTION:
2596 if (ignore_system_lyxrc ||
2597 language_package_selection != system_lyxrc.language_package_selection) {
2598 os << "\\language_package_selection ";
2599 switch (language_package_selection) {
2616 case RC_LANGUAGE_COMMAND_BEGIN:
2617 if (ignore_system_lyxrc ||
2618 language_command_begin
2619 != system_lyxrc.language_command_begin) {
2620 os << "\\language_command_begin \""
2621 << language_command_begin
2626 case RC_LANGUAGE_COMMAND_END:
2627 if (ignore_system_lyxrc ||
2628 language_command_end
2629 != system_lyxrc.language_command_end) {
2630 os << "\\language_command_end \"" << language_command_end
2635 case RC_LANGUAGE_COMMAND_LOCAL:
2636 if (ignore_system_lyxrc ||
2637 language_command_local
2638 != system_lyxrc.language_command_local) {
2639 os << "\\language_command_local \""
2640 << language_command_local
2645 case RC_LANGUAGE_AUTO_BEGIN:
2646 if (ignore_system_lyxrc ||
2647 language_auto_begin != system_lyxrc.language_auto_begin) {
2648 os << "\\language_auto_begin "
2649 << convert<string>(language_auto_begin) << '\n';
2653 case RC_LANGUAGE_AUTO_END:
2654 if (ignore_system_lyxrc ||
2655 language_auto_end != system_lyxrc.language_auto_end) {
2656 os << "\\language_auto_end "
2657 << convert<string>(language_auto_end) << '\n';
2661 case RC_MARK_FOREIGN_LANGUAGE:
2662 if (ignore_system_lyxrc ||
2663 mark_foreign_language
2664 != system_lyxrc.mark_foreign_language) {
2665 os << "\\mark_foreign_language " <<
2666 convert<string>(mark_foreign_language) << '\n';
2672 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2675 case RC_AUTO_NUMBER:
2676 if (ignore_system_lyxrc ||
2677 auto_number != system_lyxrc.auto_number) {
2678 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2682 case RC_GUI_LANGUAGE:
2683 if (ignore_system_lyxrc ||
2684 gui_language != system_lyxrc.gui_language) {
2685 os << "\\gui_language " << gui_language << '\n';
2689 case RC_EXPORT_OVERWRITE:
2690 if (ignore_system_lyxrc ||
2691 export_overwrite != system_lyxrc.export_overwrite) {
2693 switch (export_overwrite) {
2704 os << "\\export_overwrite " << status << '\n';
2709 case RC_SCROLL_WHEEL_ZOOM:
2710 if (ignore_system_lyxrc ||
2711 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2713 switch (scroll_wheel_zoom) {
2714 case SCROLL_WHEEL_ZOOM_OFF:
2717 case SCROLL_WHEEL_ZOOM_CTRL:
2720 case SCROLL_WHEEL_ZOOM_SHIFT:
2723 case SCROLL_WHEEL_ZOOM_ALT:
2727 os << "\\scroll_wheel_zoom " << status << '\n';
2733 << "# FORMATS SECTION ##########################\n"
2737 // New/modified formats
2738 for (Formats::const_iterator cit = formats.begin();
2739 cit != formats.end(); ++cit) {
2740 Format const * format =
2741 system_formats.getFormat(cit->name());
2743 format->extensions() != cit->extensions() ||
2744 format->prettyname() != cit->prettyname() ||
2745 format->shortcut() != cit->shortcut() ||
2746 format->viewer() != cit->viewer() ||
2747 format->editor() != cit->editor() ||
2748 format->documentFormat() != cit->documentFormat() ||
2749 format->vectorFormat() != cit->vectorFormat() ||
2750 format->inExportMenu() != cit->inExportMenu() ||
2751 format->mime() != cit->mime()) {
2752 os << "\\format \"" << cit->name() << "\" \""
2753 << cit->extensions() << "\" \""
2754 << cit->prettyname() << "\" \""
2755 << cit->shortcut() << "\" \""
2756 << escapeCommand(cit->viewer()) << "\" \""
2757 << escapeCommand(cit->editor()) << "\" \"";
2758 vector<string> flags;
2759 if (cit->documentFormat())
2760 flags.push_back("document");
2761 if (cit->vectorFormat())
2762 flags.push_back("vector");
2763 if (cit->zippedNative())
2764 flags.push_back("zipped=native");
2765 if (cit->inExportMenu())
2766 flags.push_back("menu=export");
2768 os << getStringFromVector(flags);
2769 os << "\" \"" << cit->mime() << "\"\n";
2773 // Look for deleted formats
2774 for (Formats::const_iterator cit = system_formats.begin();
2775 cit != system_formats.end(); ++cit)
2776 if (!formats.getFormat(cit->name()))
2777 os << "\\format \"" << cit->name()
2778 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2781 case RC_VIEWER_ALTERNATIVES: {
2782 Alternatives::const_iterator it = viewer_alternatives.begin();
2783 Alternatives::const_iterator const en = viewer_alternatives.end();
2784 Alternatives::const_iterator const sysend =
2785 system_lyxrc.viewer_alternatives.end();
2786 for (; it != en; ++it) {
2787 string const & fmt = it->first;
2788 CommandSet const & cmd = it->second;
2789 CommandSet::const_iterator sit = cmd.begin();
2790 CommandSet::const_iterator const sen = cmd.end();
2791 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2792 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2793 system_lyxrc.viewer_alternatives.find(fmt);
2794 for (; sit != sen; ++sit) {
2795 string const & cmd = *sit;
2796 if (ignore_system_lyxrc
2797 || sysfmt == sysend // format not found
2798 || sysfmt->second.count(cmd) == 0 // this command not found
2800 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2806 case RC_EDITOR_ALTERNATIVES: {
2807 Alternatives::const_iterator it = editor_alternatives.begin();
2808 Alternatives::const_iterator const en = editor_alternatives.end();
2809 Alternatives::const_iterator const sysend =
2810 system_lyxrc.editor_alternatives.end();
2811 for (; it != en; ++it) {
2812 string const & fmt = it->first;
2813 CommandSet const & cmd = it->second;
2814 CommandSet::const_iterator sit = cmd.begin();
2815 CommandSet::const_iterator const sen = cmd.end();
2816 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2817 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2818 system_lyxrc.editor_alternatives.find(fmt);
2819 for (; sit != sen; ++sit) {
2820 string const & cmd = *sit;
2821 if (ignore_system_lyxrc
2822 || sysfmt == sysend // format not found
2823 || sysfmt->second.count(cmd) == 0 // this command not found
2825 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2831 case RC_DEFAULT_OTF_VIEW_FORMAT:
2832 if ((ignore_system_lyxrc ||
2833 default_otf_view_format != system_lyxrc.default_otf_view_format)
2834 && !default_otf_view_format.empty()) {
2835 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2839 case RC_DEFAULT_VIEW_FORMAT:
2840 if (ignore_system_lyxrc ||
2841 default_view_format != system_lyxrc.default_view_format) {
2842 os << "\\default_view_format " << default_view_format << '\n';
2852 << "# CONVERTERS SECTION ##########################\n"
2856 // Look for new converters
2857 for (Converters::const_iterator cit = theConverters().begin();
2858 cit != theConverters().end(); ++cit) {
2859 Converter const * converter =
2860 theSystemConverters().getConverter(cit->from,
2863 converter->command != cit->command ||
2864 converter->flags != cit->flags)
2865 os << "\\converter \"" << cit->from << "\" \""
2866 << cit->to << "\" \""
2867 << escapeCommand(cit->command) << "\" \""
2868 << cit->flags << "\"\n";
2871 // New/modifed converters
2872 for (Converters::const_iterator cit = theSystemConverters().begin();
2873 cit != theSystemConverters().end(); ++cit)
2874 if (!theConverters().getConverter(cit->from, cit->to))
2875 os << "\\converter \"" << cit->from
2876 << "\" \"" << cit->to << "\" \"\" \"\"\n";
2883 << "# COPIERS SECTION ##########################\n"
2886 // Look for new movers
2887 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2888 Movers::const_iterator const sysend = theSystemMovers().end();
2889 Movers::const_iterator it = theMovers().begin();
2890 Movers::const_iterator end = theMovers().end();
2892 for (; it != end; ++it) {
2893 Movers::const_iterator const sysit =
2894 find_if(sysbegin, sysend, SameMover(*it));
2895 if (sysit == sysend) {
2896 string const & fmt = it->first;
2897 string const & command =
2898 it->second.command();
2900 os << "\\copier " << fmt
2901 << " \"" << escapeCommand(command) << "\"\n";
2907 // We don't actually delete SpecialisedMover(s) from the
2908 // map, just clear their 'command', so there's no need
2909 // to test for anything else.
2916 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2918 // Why the switch you might ask. It is a trick to ensure that all
2919 // the elements in the LyXRCTags enum is handled. As you can see
2920 // there are no breaks at all. So it is just a huge fall-through.
2921 // The nice thing is that we will get a warning from the compiler
2922 // if we forget an element.
2923 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2925 case LyXRC::RC_LAST:
2926 case LyXRC::RC_ACCEPT_COMPOUND:
2927 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2928 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2929 case LyXRC::RC_ALT_LANG:
2930 case LyXRC::RC_PLAINTEXT_LINELEN:
2931 case LyXRC::RC_AUTOCORRECTION_MATH:
2932 case LyXRC::RC_AUTOREGIONDELETE:
2933 case LyXRC::RC_AUTORESET_OPTIONS:
2934 case LyXRC::RC_AUTOSAVE:
2935 case LyXRC::RC_AUTO_NUMBER:
2936 case LyXRC::RC_BACKUPDIR_PATH:
2937 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2938 case LyXRC::RC_BIBTEX_COMMAND:
2939 case LyXRC::RC_BINDFILE:
2940 case LyXRC::RC_CHECKLASTFILES:
2941 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2942 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2943 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2944 case LyXRC::RC_COMPLETION_INLINE_MATH:
2945 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2946 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2947 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2948 case LyXRC::RC_COMPLETION_POPUP_MATH:
2949 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2950 case LyXRC::RC_COMPLETION_MINLENGTH:
2951 case LyXRC::RC_USELASTFILEPOS:
2952 case LyXRC::RC_LOADSESSION:
2953 case LyXRC::RC_CHKTEX_COMMAND:
2954 case LyXRC::RC_CONVERTER:
2955 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2956 case LyXRC::RC_COPIER:
2957 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2958 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2959 case LyXRC::RC_DATE_INSERT_FORMAT:
2960 case LyXRC::RC_GUI_LANGUAGE:
2961 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2962 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2963 case LyXRC::RC_DEFFILE:
2964 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2965 case LyXRC::RC_DISPLAY_GRAPHICS:
2966 case LyXRC::RC_DOCUMENTPATH:
2967 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2968 FileName path(lyxrc_new.document_path);
2969 if (path.exists() && path.isDirectory())
2970 package().document_dir() = FileName(lyxrc.document_path);
2972 case LyXRC::RC_EDITOR_ALTERNATIVES:
2973 case LyXRC::RC_ESC_CHARS:
2974 case LyXRC::RC_EXAMPLEPATH:
2975 case LyXRC::RC_FONT_ENCODING:
2976 case LyXRC::RC_FORCE_PAINT_SINGLE_CHAR:
2977 case LyXRC::RC_FILEFORMAT:
2978 case LyXRC::RC_GROUP_LAYOUTS:
2979 case LyXRC::RC_HUNSPELLDIR_PATH:
2980 case LyXRC::RC_ICON_SET:
2981 case LyXRC::RC_INDEX_ALTERNATIVES:
2982 case LyXRC::RC_INDEX_COMMAND:
2983 case LyXRC::RC_JBIBTEX_COMMAND:
2984 case LyXRC::RC_JINDEX_COMMAND:
2985 case LyXRC::RC_NOMENCL_COMMAND:
2986 case LyXRC::RC_INPUT:
2987 case LyXRC::RC_KBMAP:
2988 case LyXRC::RC_KBMAP_PRIMARY:
2989 case LyXRC::RC_KBMAP_SECONDARY:
2990 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2991 case LyXRC::RC_LANGUAGE_AUTO_END:
2992 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2993 case LyXRC::RC_LANGUAGE_COMMAND_END:
2994 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2995 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2996 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2997 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2998 case LyXRC::RC_LYXRCFORMAT:
2999 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
3000 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
3001 case LyXRC::RC_MACRO_EDIT_STYLE:
3002 case LyXRC::RC_MAKE_BACKUP:
3003 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
3004 case LyXRC::RC_MOUSE_WHEEL_SPEED:
3005 case LyXRC::RC_NUMLASTFILES:
3006 case LyXRC::RC_PARAGRAPH_MARKERS:
3007 case LyXRC::RC_PATH_PREFIX:
3008 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
3009 prependEnvPath("PATH", lyxrc_new.path_prefix);
3010 // Resets python path
3011 support::os::python(true);
3013 case LyXRC::RC_PREVIEW:
3014 case LyXRC::RC_PREVIEW_HASHED_LABELS:
3015 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
3016 case LyXRC::RC_PRINTCOLLCOPIESFLAG:
3017 case LyXRC::RC_PRINTCOPIESFLAG:
3018 case LyXRC::RC_PRINTER:
3019 case LyXRC::RC_PRINTEVENPAGEFLAG:
3020 case LyXRC::RC_PRINTEXSTRAOPTIONS:
3021 case LyXRC::RC_PRINTFILEEXTENSION:
3022 case LyXRC::RC_PRINTLANDSCAPEFLAG:
3023 case LyXRC::RC_PRINTODDPAGEFLAG:
3024 case LyXRC::RC_PRINTPAGERANGEFLAG:
3025 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
3026 case LyXRC::RC_PRINTPAPERFLAG:
3027 case LyXRC::RC_PRINTREVERSEFLAG:
3028 case LyXRC::RC_PRINTSPOOL_COMMAND:
3029 case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
3030 case LyXRC::RC_PRINTTOFILE:
3031 case LyXRC::RC_PRINTTOPRINTER:
3032 case LyXRC::RC_PRINT_ADAPTOUTPUT:
3033 case LyXRC::RC_PRINT_COMMAND:
3034 case LyXRC::RC_RTL_SUPPORT:
3035 case LyXRC::RC_SAVE_COMPRESSED:
3036 case LyXRC::RC_SCREEN_DPI:
3037 case LyXRC::RC_SCREEN_FONT_ROMAN:
3038 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
3039 case LyXRC::RC_SCREEN_FONT_SANS:
3040 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
3041 case LyXRC::RC_SCREEN_FONT_SCALABLE:
3042 case LyXRC::RC_SCREEN_FONT_SIZES:
3043 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
3044 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3045 case LyXRC::RC_GEOMETRY_SESSION:
3046 case LyXRC::RC_SCREEN_ZOOM:
3047 case LyXRC::RC_SERVERPIPE:
3048 case LyXRC::RC_SET_COLOR:
3049 case LyXRC::RC_SHOW_BANNER:
3050 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
3051 case LyXRC::RC_SPELLCHECKER:
3052 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
3054 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
3055 case LyXRC::RC_SPELLCHECK_NOTES:
3056 case LyXRC::RC_SPLITINDEX_COMMAND:
3057 case LyXRC::RC_TEMPDIRPATH:
3058 case LyXRC::RC_TEMPLATEPATH:
3059 case LyXRC::RC_TEX_ALLOWS_SPACES:
3060 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
3061 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
3062 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
3064 case LyXRC::RC_TEXINPUTS_PREFIX:
3065 case LyXRC::RC_THESAURUSDIRPATH:
3066 case LyXRC::RC_UIFILE:
3067 case LyXRC::RC_USER_EMAIL:
3068 case LyXRC::RC_USER_NAME:
3069 case LyXRC::RC_USE_CONVERTER_CACHE:
3070 case LyXRC::RC_USE_SYSTEM_COLORS:
3071 case LyXRC::RC_USE_TOOLTIP:
3072 case LyXRC::RC_USE_PIXMAP_CACHE:
3073 case LyXRC::RC_USE_QIMAGE:
3074 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
3075 case LyXRC::RC_VIEWDVI_PAPEROPTION:
3076 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
3077 case LyXRC::RC_SINGLE_INSTANCE:
3078 case LyXRC::RC_SORT_LAYOUTS:
3079 case LyXRC::RC_FULL_SCREEN_LIMIT:
3080 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
3081 case LyXRC::RC_FULL_SCREEN_MENUBAR:
3082 case LyXRC::RC_FULL_SCREEN_STATUSBAR:
3083 case LyXRC::RC_FULL_SCREEN_TABBAR:
3084 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
3085 case LyXRC::RC_FULL_SCREEN_WIDTH:
3086 case LyXRC::RC_VISUAL_CURSOR:
3087 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3088 case LyXRC::RC_VIEWER:
3089 case LyXRC::RC_VIEWER_ALTERNATIVES:
3090 case LyXRC::RC_FORWARD_SEARCH_DVI:
3091 case LyXRC::RC_FORWARD_SEARCH_PDF:
3092 case LyXRC::RC_EXPORT_OVERWRITE:
3093 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
3094 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
3095 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3096 case LyXRC::RC_CURSOR_WIDTH:
3103 string const LyXRC::getDescription(LyXRCTags tag)
3108 case RC_ACCEPT_COMPOUND:
3109 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3113 str = _("Specify an alternate language. The default is to use the language of the document.");
3116 case RC_PLAINTEXT_LINELEN:
3117 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.");
3120 case RC_AUTOREGIONDELETE:
3121 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3124 case RC_AUTORESET_OPTIONS:
3125 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3129 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3132 case RC_AUTO_NUMBER:
3135 case RC_BACKUPDIR_PATH:
3136 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.");
3139 case RC_BIBTEX_COMMAND:
3140 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3143 case RC_JBIBTEX_COMMAND:
3144 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3148 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3151 case RC_CHECKLASTFILES:
3152 str = _("Select to check whether the lastfiles still exist.");
3155 case RC_CHKTEX_COMMAND:
3156 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3165 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3166 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.");
3169 case RC_CURSOR_WIDTH:
3170 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3173 case RC_SCROLL_BELOW_DOCUMENT:
3174 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");
3177 case RC_MAC_DONTSWAP_CTRL_META:
3178 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3181 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3182 str = _("Use the Mac OS X conventions for cursor movement");
3185 case RC_SHOW_MACRO_LABEL:
3186 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3189 case RC_DATE_INSERT_FORMAT:
3190 //xgettext:no-c-format
3191 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3195 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3198 case RC_DEFAULT_OTF_VIEW_FORMAT:
3199 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3202 case RC_DEFAULT_VIEW_FORMAT:
3203 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3206 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3207 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3210 case RC_DISPLAY_GRAPHICS:
3211 str = _("Select how LyX will display any graphics.");
3214 case RC_DOCUMENTPATH:
3215 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3219 str = _("Specify additional chars that can be part of a word.");
3222 case RC_EXAMPLEPATH:
3223 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3226 case RC_FONT_ENCODING:
3227 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3230 case RC_FORCE_PAINT_SINGLE_CHAR:
3231 str = _("Disable any kerning and ligatures for text drawing on screen.");
3237 case RC_INDEX_COMMAND:
3238 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\".");
3241 case RC_JINDEX_COMMAND:
3242 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3245 case RC_NOMENCL_COMMAND:
3246 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3253 case RC_KBMAP_PRIMARY:
3254 case RC_KBMAP_SECONDARY:
3255 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.");
3258 case RC_LANGUAGE_AUTO_BEGIN:
3259 str = _("Select if a language switching command is needed at the beginning of the document.");
3262 case RC_LANGUAGE_AUTO_END:
3263 str = _("Select if a language switching command is needed at the end of the document.");
3266 case RC_LANGUAGE_COMMAND_BEGIN:
3267 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.");
3270 case RC_LANGUAGE_COMMAND_END:
3271 str = _("The LaTeX command for changing back to the language of the document.");
3274 case RC_LANGUAGE_COMMAND_LOCAL:
3275 str = _("The LaTeX command for local changing of the language.");
3278 case RC_LANGUAGE_GLOBAL_OPTIONS:
3279 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3282 case RC_LANGUAGE_CUSTOM_PACKAGE:
3283 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3286 case RC_LANGUAGE_PACKAGE_SELECTION:
3287 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3290 case RC_USELASTFILEPOS:
3291 str = _("De-select if you do not want LyX to scroll to saved position.");
3294 case RC_LOADSESSION:
3295 str = _("De-select to prevent loading files opened from the last LyX session.");
3298 case RC_MAKE_BACKUP:
3299 str = _("De-select if you don't want LyX to create backup files.");
3302 case RC_MARK_FOREIGN_LANGUAGE:
3303 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3306 case RC_MOUSE_WHEEL_SPEED:
3307 str = bformat(_("The scrolling speed of the mouse wheel."),
3311 case RC_COMPLETION_POPUP_DELAY:
3312 str = _("The completion popup delay.");
3315 case RC_COMPLETION_POPUP_MATH:
3316 str = _("Select to display the completion popup in math mode.");
3319 case RC_COMPLETION_POPUP_TEXT:
3320 str = _("Select to display the completion popup in text mode.");
3323 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3324 str = _("Show the completion popup without delay after non-unique completion attempt.");
3327 case RC_COMPLETION_POPUP_TEXT:
3328 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3331 case RC_COMPLETION_POPUP_DELAY:
3332 str = _("The inline completion delay.");
3335 case RC_COMPLETION_INLINE_MATH:
3336 str = _("Select to display the inline completion in math mode.");
3339 case RC_COMPLETION_INLINE_TEXT:
3340 str = _("Select to display the inline completion in text mode.");
3343 case RC_COMPLETION_INLINE_DOTS:
3344 str = _("Use \"...\" to shorten long completions.");
3347 case RC_AUTOCORRECTION_MATH:
3348 str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
3351 case RC_NUMLASTFILES:
3352 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3356 case RC_PATH_PREFIX:
3357 str = _("Specify those directories which should be "
3358 "prepended to the PATH environment variable.\n"
3359 "Use the OS native format.");
3363 str = _("Shows a typeset preview of things such as math");
3366 case RC_PREVIEW_HASHED_LABELS:
3367 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3370 case RC_PREVIEW_SCALE_FACTOR:
3371 str = _("Scale the preview size to suit.");
3374 case RC_PRINTCOLLCOPIESFLAG:
3375 str = _("The option for specifying whether the copies should be collated.");
3378 case RC_PRINTCOPIESFLAG:
3379 str = _("The option for specifying the number of copies to print.");
3383 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
3386 case RC_PRINTEVENPAGEFLAG:
3387 str = _("The option to print only even pages.");
3390 case RC_PRINTEXSTRAOPTIONS:
3391 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
3394 case RC_PRINTFILEEXTENSION:
3395 str = _("Extension of printer program output file. Usually \".ps\".");
3398 case RC_PRINTLANDSCAPEFLAG:
3399 str = _("The option to print out in landscape.");
3402 case RC_PRINTODDPAGEFLAG:
3403 str = _("The option to print only odd pages.");
3406 case RC_PRINTPAGERANGEFLAG:
3407 str = _("The option for specifying a comma-separated list of pages to print.");
3410 case RC_PRINTPAPERDIMENSIONFLAG:
3411 str = _("Option to specify the dimensions of the print paper.");
3414 case RC_PRINTPAPERFLAG:
3415 str = _("The option to specify paper type.");
3418 case RC_PRINTREVERSEFLAG:
3419 str = _("The option to reverse the order of the pages printed.");
3422 case RC_PRINTSPOOL_COMMAND:
3423 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.");
3426 case RC_PRINTSPOOL_PRINTERPREFIX:
3427 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.");
3430 case RC_PRINTTOFILE:
3431 str = _("Option to pass to the print program to print to a file.");
3434 case RC_PRINTTOPRINTER:
3435 str = _("Option to pass to the print program to print on a specific printer.");
3438 case RC_PRINT_ADAPTOUTPUT:
3439 str = _("Select for LyX to pass the name of the destination printer to your print command.");
3442 case RC_PRINT_COMMAND:
3443 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
3446 case RC_RTL_SUPPORT:
3447 str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
3450 case RC_VISUAL_CURSOR:
3451 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3454 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3455 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).");
3459 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3462 case RC_SCREEN_FONT_ROMAN:
3463 case RC_SCREEN_FONT_SANS:
3464 case RC_SCREEN_FONT_TYPEWRITER:
3465 str = _("The screen fonts used to display the text while editing.");
3468 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3469 case RC_SCREEN_FONT_SANS_FOUNDRY:
3470 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3473 case RC_SCREEN_FONT_SCALABLE:
3474 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.");
3477 case RC_SCREEN_FONT_SIZES:
3478 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3481 case RC_SCREEN_ZOOM:
3482 //xgettext:no-c-format
3483 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3486 case RC_GEOMETRY_SESSION:
3487 str = _("Allow session manager to save and restore windows geometry.");
3491 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3497 case RC_SHOW_BANNER:
3498 str = _("De-select if you don't want the startup banner.");
3501 case RC_TEMPDIRPATH:
3502 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3505 case RC_THESAURUSDIRPATH:
3506 str = _("This is the place where the files of the thesaurus library reside.");
3509 case RC_TEMPLATEPATH:
3510 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3513 case RC_TEX_ALLOWS_SPACES:
3516 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3519 case RC_TEXINPUTS_PREFIX:
3520 str = _("Specify those directories which should be "
3521 "prepended to the TEXINPUTS environment variable.\n"
3522 "A '.' represents the current document directory. "
3523 "Use the OS native format.");
3527 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3536 case RC_USE_USE_SYSTEM_COLORS:
3537 str = _("Enable use the system colors for some things like main window background and selection.");
3540 case RC_USE_TOOLTIP:
3541 str = _("Enable the automatic appearance of tool tips in the work area.");
3544 case RC_USE_PIXMAP_CACHE:
3545 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3548 case RC_VIEWDVI_PAPEROPTION:
3549 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3564 // The global instance
3567 // The global copy of the system lyxrc entries (everything except preferences)