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 static unsigned int const LYXRC_FILEFORMAT = 14; // spitz: default_otf_view_format
60 // when adding something to this array keep it sorted!
61 LexerKeyword lyxrcTags[] = {
62 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
63 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
64 { "\\alternate_language", LyXRC::RC_ALT_LANG },
65 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
66 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
67 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
68 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
69 { "\\autosave", LyXRC::RC_AUTOSAVE },
70 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
71 { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
72 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
73 { "\\bind_file", LyXRC::RC_BINDFILE },
74 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
75 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
76 { "\\close_buffer_with_last_view", LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW },
77 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
78 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
79 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
80 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
81 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
82 { "\\completion_minlength", LyXRC::RC_COMPLETION_MINLENGTH },
83 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
84 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
85 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
86 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
87 { "\\converter", LyXRC::RC_CONVERTER },
88 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
89 { "\\copier", LyXRC::RC_COPIER },
90 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
91 { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
92 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
93 { "\\def_file", LyXRC::RC_DEFFILE },
94 { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
95 { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT },
96 { "\\default_otf_view_format", LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT },
97 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
98 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
99 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
100 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
101 { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
102 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
103 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
104 { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE },
105 { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
106 { "\\force_paint_single_char", LyXRC::RC_FORCE_PAINT_SINGLE_CHAR },
107 { "\\format", LyXRC::RC_FILEFORMAT },
108 { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI },
109 { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF },
110 { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT },
111 { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR },
112 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
113 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
114 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
115 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
116 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
117 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
118 { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH },
119 { "\\icon_set", LyXRC::RC_ICON_SET },
120 { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
121 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
122 { "\\input", LyXRC::RC_INPUT },
123 { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
124 { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
125 { "\\kbmap", LyXRC::RC_KBMAP },
126 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
127 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
128 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
129 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
130 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
131 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
132 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
133 { "\\language_custom_package", LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE },
134 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
135 { "\\language_package_selection", LyXRC::RC_LANGUAGE_PACKAGE_SELECTION },
136 { "\\load_session", LyXRC::RC_LOADSESSION },
137 { "\\mac_dontswap_ctrl_meta", LyXRC::RC_MAC_DONTSWAP_CTRL_META },
138 { "\\mac_like_cursor_movement", LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT },
139 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
140 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
141 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
142 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
143 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
144 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
145 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
146 { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS },
147 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
148 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
149 { "\\preview", LyXRC::RC_PREVIEW },
150 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
151 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
152 { "\\print_adapt_output", LyXRC::RC_PRINT_ADAPTOUTPUT },
153 { "\\print_collcopies_flag", LyXRC::RC_PRINTCOLLCOPIESFLAG },
154 { "\\print_command", LyXRC::RC_PRINT_COMMAND },
155 { "\\print_copies_flag", LyXRC::RC_PRINTCOPIESFLAG },
156 { "\\print_evenpage_flag", LyXRC::RC_PRINTEVENPAGEFLAG },
157 { "\\print_extra_options", LyXRC::RC_PRINTEXSTRAOPTIONS },
158 { "\\print_file_extension", LyXRC::RC_PRINTFILEEXTENSION },
159 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
160 { "\\print_oddpage_flag", LyXRC::RC_PRINTODDPAGEFLAG },
161 { "\\print_pagerange_flag", LyXRC::RC_PRINTPAGERANGEFLAG },
162 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
163 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
164 { "\\print_reverse_flag", LyXRC::RC_PRINTREVERSEFLAG },
165 { "\\print_spool_command", LyXRC::RC_PRINTSPOOL_COMMAND },
166 { "\\print_spool_printerprefix", LyXRC::RC_PRINTSPOOL_PRINTERPREFIX },
167 { "\\print_to_file", LyXRC::RC_PRINTTOFILE },
168 { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER },
169 { "\\printer", LyXRC::RC_PRINTER },
170 { "\\rtl", LyXRC::RC_RTL_SUPPORT },
171 { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
172 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
173 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
174 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
175 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
176 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
177 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
178 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
179 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
180 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
181 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
182 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
183 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
184 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
185 { "\\set_color", LyXRC::RC_SET_COLOR },
186 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
187 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
188 { "\\single_instance", LyXRC::RC_SINGLE_INSTANCE },
189 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
190 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
191 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
192 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
193 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
194 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
195 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
196 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
197 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
198 { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
199 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
200 { "\\ui_file", LyXRC::RC_UIFILE },
201 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
202 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
203 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
204 { "\\use_qimage", LyXRC::RC_USE_QIMAGE },
205 // compatibility with versions older than 1.4.0 only
206 { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
207 { "\\use_system_theme_icons", LyXRC::RC_USE_SYSTEM_THEME_ICONS },
208 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
209 { "\\user_email", LyXRC::RC_USER_EMAIL },
210 { "\\user_name", LyXRC::RC_USER_NAME },
211 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
212 // compatibility with versions older than 1.4.0 only
213 { "\\viewer", LyXRC::RC_VIEWER},
214 { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
215 { "\\visual_cursor", LyXRC::RC_VISUAL_CURSOR },
216 { "format", LyXRC::RC_LYXRCFORMAT }
219 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
230 void LyXRC::setDefaults()
233 use_system_theme_icons = false;
235 def_file = "default";
237 // The current document directory
238 texinputs_prefix = ".";
239 // Get printer from the environment. If fail, use default "",
240 // assuming that everything is set up correctly.
241 printer = getEnv("PRINTER");
242 print_adapt_output = false;
243 print_command = "dvips";
244 print_evenpage_flag = "-B";
245 print_oddpage_flag = "-A";
246 print_pagerange_flag = "-pp";
247 print_copies_flag = "-c";
248 print_collcopies_flag = "-C";
249 print_reverse_flag = "-r";
250 print_landscape_flag = "-t landscape";
251 print_to_printer = "-P";
252 print_to_file = "-o ";
253 print_file_extension = ".ps";
254 print_paper_flag = "-t";
255 print_paper_dimension_flag = "-T";
256 document_path.erase();
257 view_dvi_paper_option.erase();
258 default_view_format = "pdf2";
259 default_otf_view_format = "pdf4";
260 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
261 bibtex_command = "bibtex";
263 index_command = "makeindex -c -q";
264 nomencl_command = "makeindex -s nomencl.ist";
266 // Because a screen is typically wider than a piece of paper:
268 allow_geometry_session = true;
269 // Default LaTeX font size:
270 font_sizes[FONT_SIZE_TINY] = "5.0";
271 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
272 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
273 font_sizes[FONT_SIZE_SMALL] = "9.0";
274 font_sizes[FONT_SIZE_NORMAL] = "10.0";
275 font_sizes[FONT_SIZE_LARGE] = "12.0";
276 font_sizes[FONT_SIZE_LARGER] = "14.4";
277 font_sizes[FONT_SIZE_LARGEST] = "17.26";
278 font_sizes[FONT_SIZE_HUGE] = "20.74";
279 font_sizes[FONT_SIZE_HUGER] = "24.88";
280 use_scalable_fonts = true;
281 roman_font_name = "";
283 typewriter_font_name = "";
285 auto_region_delete = true;
286 auto_reset_options = false;
287 plaintext_linelen = 65;
288 mouse_wheel_speed = 1.0;
289 num_lastfiles = maxlastfiles;
290 check_lastfiles = true;
291 use_lastfilepos = true;
292 load_session = false;
294 save_compressed = false;
295 backupdir_path.erase();
296 display_graphics = true;
297 // Spellchecker settings:
298 // FIXME: this check should test the target platform (darwin)
299 #if defined(USE_MACOSX_PACKAGING)
300 spellchecker = "native";
301 #elif defined(USE_ASPELL)
302 spellchecker = "aspell";
303 #elif defined(USE_HUNSPELL)
304 spellchecker = "hunspell";
306 spellchecker = "aspell";
308 spellchecker_accept_compound = false;
309 spellcheck_continuously = false;
310 completion_minlength = 6;
311 spellcheck_notes = true;
314 visual_cursor = false;
316 mark_foreign_language = true;
317 language_auto_begin = true;
318 language_auto_end = true;
319 language_global_options = true;
320 language_package_selection = LP_AUTO;
321 language_custom_package = "\\usepackage{babel}";
322 language_command_begin = "\\selectlanguage{$$lang}";
323 language_command_local = "\\foreignlanguage{$$lang}{";
324 sort_layouts = false;
325 group_layouts = true;
326 gui_language = "auto";
328 windows_style_tex_paths = false;
329 tex_allows_spaces = false;
330 date_insert_format = "%x";
331 cursor_follows_scrollbar = false;
332 scroll_below_document = false;
333 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
334 paragraph_markers = false;
335 mac_dontswap_ctrl_meta = false;
336 mac_like_cursor_movement = false;
337 macro_edit_style = MACRO_EDIT_INLINE_BOX;
338 dialogs_iconify_with_main = false;
339 preview = PREVIEW_OFF;
340 preview_hashed_labels = false;
341 preview_scale_factor = 1.0;
342 use_converter_cache = true;
343 use_system_colors = false;
345 use_pixmap_cache = false;
347 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
348 user_name = to_utf8(support::user_name());
349 user_email = to_utf8(support::user_email());
350 open_buffers_in_tabs = true;
351 single_close_tab_button = false;
352 single_instance = true;
353 forward_search_dvi = string();
354 forward_search_pdf = string();
355 export_overwrite = NO_FILES;
357 // Fullscreen settings
358 full_screen_limit = false;
359 full_screen_toolbars = true;
360 full_screen_tabbar = true;
361 full_screen_menubar = true;
362 full_screen_scrollbar = true;
363 full_screen_width = 700;
365 completion_cursor_text = true;
366 completion_popup_math = true;
367 completion_popup_text = false;
368 completion_popup_delay = 2.0;
369 completion_popup_after_complete = true;
370 autocorrection_math = false;
371 completion_inline_math = true;
372 completion_inline_text = false;
373 completion_inline_dots = -1;
374 completion_inline_delay = 0.2;
375 default_decimal_point = ".";
376 default_length_unit = Length::CM;
378 close_buffer_with_last_view = "yes";
384 void oldFontFormat(string & family, string & foundry)
386 if (family.empty() || family[0] != '-')
388 foundry = token(family, '-', 1);
389 family = token(family, '-', 2);
397 bool LyXRC::read(FileName const & filename, bool check_format)
399 Lexer lexrc(lyxrcTags);
400 lexrc.setFile(filename);
401 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
402 ReturnValues retval = read(lexrc, check_format);
403 if (!check_format || retval != FormatMismatch)
404 return retval == ReadOK;
406 LYXERR(Debug::FILES, "Converting LyXRC file to " << LYXRC_FILEFORMAT);
407 FileName const tempfile = FileName::tempName("convert_lyxrc");
408 bool const success = prefs2prefs(filename, tempfile, false);
410 LYXERR0 ("Unable to convert " << filename.absFileName() <<
411 " to format " << LYXRC_FILEFORMAT);
414 // Keep this in the else branch, such that lexrc2 goes out
415 // of scope and releases the lock on tempfile before we
416 // attempt to remove it. This matters on Windows.
417 Lexer lexrc2(lyxrcTags);
418 lexrc2.setFile(tempfile);
419 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
420 retval = read(lexrc2, check_format);
422 tempfile.removeFile();
423 return retval == ReadOK;
427 // don't need to worry about conversion, because this is always
428 // from an internal source
429 bool LyXRC::read(istream & is)
431 Lexer lexrc(lyxrcTags);
433 LYXERR(Debug::LYXRC, "Reading istream...");
434 return read(lexrc, false) == ReadOK;
438 LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
440 if (lyxerr.debugging(Debug::PARSER))
441 lexrc.printTable(lyxerr);
446 // default for current rowpainter capabilities
447 force_paint_single_char = true;
449 // format prior to 2.0 and introduction of format tag
450 unsigned int format = 0;
452 while (lexrc.isOK()) {
453 // By using two switches we take advantage of the compiler
454 // telling us if we have missed a LyXRCTags element in
455 // the second switch.
456 // Note that this also shows a problem with Lexer since it
457 // helps us avoid taking advantage of the strictness of the
460 int le = lexrc.lex();
462 case Lexer::LEX_UNDEF:
463 lexrc.printError("Unknown tag `$$Token'");
465 case Lexer::LEX_FEOF:
470 switch (static_cast<LyXRCTags>(le)) {
473 format = lexrc.getInteger();
475 case RC_INPUT: // Include file
478 libFileSearch(string(),
480 if (read(tmp, check_format)) {
482 "Error reading included file: " + tmp.absFileName());
488 bind_file = os::internal_path(lexrc.getString());
493 def_file = os::internal_path(lexrc.getString());
498 ui_file = os::internal_path(lexrc.getString());
501 case RC_AUTORESET_OPTIONS:
502 lexrc >> auto_reset_options;
505 case RC_DISPLAY_GRAPHICS:
507 display_graphics = lexrc.getString() == "true";
510 case RC_TEX_EXPECTS_WINDOWS_PATHS:
511 lexrc >> windows_style_tex_paths;
514 case RC_TEX_ALLOWS_SPACES:
515 lexrc >> tex_allows_spaces;
518 case RC_TEXINPUTS_PREFIX:
519 lexrc >> texinputs_prefix;
526 case RC_KBMAP_PRIMARY:
528 string const kmap(os::internal_path(lexrc.getString()));
529 if (!libFileSearch("kbd", kmap, "kmap").empty()
531 primary_kbmap = kmap;
533 lexrc.printError("LyX: Keymap `$$Token' not found");
538 case RC_KBMAP_SECONDARY:
540 string const kmap(os::internal_path(lexrc.getString()));
541 if (!libFileSearch("kbd", kmap, "kmap").empty()
543 secondary_kbmap = kmap;
545 lexrc.printError("LyX: Keymap `$$Token' not found");
550 case RC_FONT_ENCODING:
554 case RC_FORCE_PAINT_SINGLE_CHAR:
555 lexrc >> force_paint_single_char;
562 case RC_PRINT_COMMAND:
563 if (lexrc.next(true)) {
564 print_command = lexrc.getString();
568 case RC_PRINTEVENPAGEFLAG:
569 lexrc >> print_evenpage_flag;
572 case RC_PRINTODDPAGEFLAG:
573 lexrc >> print_oddpage_flag;
576 case RC_PRINTPAGERANGEFLAG:
577 lexrc >> print_pagerange_flag;
580 case RC_PRINTCOPIESFLAG:
581 lexrc >> print_copies_flag;
584 case RC_PRINTCOLLCOPIESFLAG:
585 lexrc >> print_collcopies_flag;
588 case RC_PRINTREVERSEFLAG:
589 lexrc >> print_reverse_flag;
592 case RC_PRINTLANDSCAPEFLAG:
593 lexrc >> print_landscape_flag;
596 case RC_PRINTTOPRINTER:
597 lexrc >> print_to_printer;
600 case RC_PRINT_ADAPTOUTPUT:
601 lexrc >> print_adapt_output;
606 print_to_file = os::internal_path(lexrc.getString());
610 case RC_PRINTFILEEXTENSION:
611 lexrc >> print_file_extension;
614 case RC_PRINTEXSTRAOPTIONS:
615 lexrc >> print_extra_options;
618 case RC_PRINTSPOOL_COMMAND:
619 if (lexrc.next(true)) {
620 print_spool_command = lexrc.getString();
624 case RC_PRINTSPOOL_PRINTERPREFIX:
625 lexrc >> print_spool_printerprefix;
628 case RC_PRINTPAPERDIMENSIONFLAG:
629 lexrc >> print_paper_dimension_flag;
632 case RC_PRINTPAPERFLAG:
633 lexrc >> print_paper_flag;
636 case RC_VIEWDVI_PAPEROPTION:
638 view_dvi_paper_option = lexrc.getString();
640 view_dvi_paper_option.erase();
643 case RC_CHKTEX_COMMAND:
644 if (lexrc.next(true)) {
645 chktex_command = lexrc.getString();
649 case RC_BIBTEX_ALTERNATIVES:
650 if (lexrc.next(true)) {
651 bibtex_alternatives.insert(lexrc.getString());
655 case RC_BIBTEX_COMMAND:
656 if (lexrc.next(true)) {
657 bibtex_command = lexrc.getString();
661 case RC_JBIBTEX_COMMAND:
662 if (lexrc.next(true)) {
663 jbibtex_command = lexrc.getString();
667 case RC_INDEX_ALTERNATIVES:
668 if (lexrc.next(true)) {
669 index_alternatives.insert(lexrc.getString());
673 case RC_INDEX_COMMAND:
674 if (lexrc.next(true)) {
675 index_command = lexrc.getString();
679 case RC_JINDEX_COMMAND:
680 if (lexrc.next(true)) {
681 jindex_command = lexrc.getString();
685 case RC_SPLITINDEX_COMMAND:
686 if (lexrc.next(true)) {
687 splitindex_command = lexrc.getString();
691 case RC_NOMENCL_COMMAND:
692 if (lexrc.next(true)) {
693 nomencl_command = lexrc.getString();
705 case RC_GEOMETRY_SESSION:
706 lexrc >> allow_geometry_session;
709 case RC_SCREEN_FONT_SIZES:
710 lexrc >> font_sizes[FONT_SIZE_TINY];
711 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
712 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
713 lexrc >> font_sizes[FONT_SIZE_SMALL];
714 lexrc >> font_sizes[FONT_SIZE_NORMAL];
715 lexrc >> font_sizes[FONT_SIZE_LARGE];
716 lexrc >> font_sizes[FONT_SIZE_LARGER];
717 lexrc >> font_sizes[FONT_SIZE_LARGEST];
718 lexrc >> font_sizes[FONT_SIZE_HUGE];
719 lexrc >> font_sizes[FONT_SIZE_HUGER];
722 case RC_SCREEN_FONT_SCALABLE:
723 lexrc >> use_scalable_fonts;
730 case RC_DOCUMENTPATH:
732 document_path = os::internal_path(lexrc.getString());
733 document_path = expandPath(document_path);
739 example_path = os::internal_path(lexrc.getString());
740 example_path = expandPath(example_path);
744 case RC_TEMPLATEPATH:
746 template_path = os::internal_path(lexrc.getString());
747 template_path = expandPath(template_path);
753 tempdir_path = os::internal_path(lexrc.getString());
754 tempdir_path = expandPath(tempdir_path);
758 case RC_THESAURUSDIRPATH:
760 thesaurusdir_path = os::internal_path(lexrc.getString());
761 thesaurusdir_path = expandPath(thesaurusdir_path);
765 case RC_HUNSPELLDIR_PATH:
767 hunspelldir_path = os::internal_path(lexrc.getString());
768 hunspelldir_path = expandPath(hunspelldir_path);
772 case RC_USELASTFILEPOS:
773 lexrc >> use_lastfilepos;
777 lexrc >> load_session;
780 case RC_MOUSE_WHEEL_SPEED:
781 lexrc >> mouse_wheel_speed;
784 case RC_COMPLETION_INLINE_DELAY:
785 lexrc >> completion_inline_delay;
788 case RC_COMPLETION_INLINE_MATH:
789 lexrc >> completion_inline_math;
792 case RC_COMPLETION_INLINE_TEXT:
793 lexrc >> completion_inline_text;
796 case RC_COMPLETION_INLINE_DOTS:
797 lexrc >> completion_inline_dots;
800 case RC_AUTOCORRECTION_MATH:
801 lexrc >> autocorrection_math;
804 case RC_COMPLETION_POPUP_DELAY:
805 lexrc >> completion_popup_delay;
808 case RC_COMPLETION_POPUP_MATH:
809 lexrc >> completion_popup_math;
812 case RC_COMPLETION_POPUP_TEXT:
813 lexrc >> completion_popup_text;
816 case RC_COMPLETION_CURSOR_TEXT:
817 lexrc >> completion_cursor_text;
820 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
821 lexrc >> completion_popup_after_complete;
824 case RC_COMPLETION_MINLENGTH:
825 lexrc >> completion_minlength;
828 case RC_NUMLASTFILES:
829 lexrc >> num_lastfiles;
832 case RC_CHECKLASTFILES:
833 lexrc >> check_lastfiles;
840 case RC_USE_SYSTEM_THEME_ICONS:
841 lexrc >> use_system_theme_icons;
844 case RC_SCREEN_FONT_ROMAN:
846 roman_font_name = lexrc.getString();
847 oldFontFormat(roman_font_name,
852 case RC_SCREEN_FONT_SANS:
854 sans_font_name = lexrc.getString();
855 oldFontFormat(sans_font_name, sans_font_foundry);
859 case RC_SCREEN_FONT_TYPEWRITER:
861 typewriter_font_name = lexrc.getString();
862 oldFontFormat(typewriter_font_name,
863 typewriter_font_foundry);
867 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
868 lexrc >> roman_font_foundry;
871 case RC_SCREEN_FONT_SANS_FOUNDRY:
872 lexrc >> sans_font_foundry;
875 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
876 lexrc >> typewriter_font_foundry;
881 lexrc.printError("Missing color tag.");
884 string lyx_name = lexrc.getString();
887 lexrc.printError("Missing color name for color: `$$Token'");
890 string x11_name = lexrc.getString();
892 ColorCode const col =
893 lcolor.getFromLyXName(lyx_name);
894 if (col == Color_none ||
895 col == Color_inherit ||
899 if (!lcolor.setColor(col, x11_name))
900 LYXERR0("Bad lyxrc set_color for " << lyx_name);
904 case RC_AUTOREGIONDELETE:
905 // Auto region delete defaults to true
906 lexrc >> auto_region_delete;
911 lyxpipes = os::internal_path(lexrc.getString());
912 lyxpipes = expandPath(lyxpipes);
916 case RC_CURSOR_FOLLOWS_SCROLLBAR:
917 lexrc >> cursor_follows_scrollbar;
920 case RC_CURSOR_WIDTH:
921 lexrc >> cursor_width;
924 case RC_SCROLL_BELOW_DOCUMENT:
925 lexrc >> scroll_below_document;
928 case RC_PARAGRAPH_MARKERS:
929 lexrc >> paragraph_markers;
932 case RC_MAC_DONTSWAP_CTRL_META:
933 lexrc >> mac_dontswap_ctrl_meta;
936 case RC_MAC_LIKE_CURSOR_MOVEMENT:
937 lexrc >> mac_like_cursor_movement;
940 case RC_MACRO_EDIT_STYLE:
942 switch (lexrc.getInteger()) {
943 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
944 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
945 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
950 case RC_DIALOGS_ICONIFY_WITH_MAIN:
951 lexrc >> dialogs_iconify_with_main;
954 case RC_PLAINTEXT_LINELEN:
955 lexrc >> plaintext_linelen;
957 // Spellchecker settings:
958 case RC_ACCEPT_COMPOUND:
959 lexrc >> spellchecker_accept_compound;
961 case RC_USE_SYSTEM_COLORS:
962 lexrc >> use_system_colors;
965 lexrc >> use_tooltip;
967 case RC_USE_PIXMAP_CACHE:
968 lexrc >> use_pixmap_cache;
973 case RC_SPELLCHECKER:
974 lexrc >> spellchecker;
977 lexrc >> spellchecker_alt_lang;
980 lexrc >> spellchecker_esc_chars;
982 case RC_SPELLCHECK_CONTINUOUSLY:
983 lexrc >> spellcheck_continuously;
985 case RC_SPELLCHECK_NOTES:
986 lexrc >> spellcheck_notes;
989 lexrc >> make_backup;
991 case RC_SAVE_COMPRESSED:
992 lexrc >> save_compressed;
994 case RC_BACKUPDIR_PATH:
996 backupdir_path = os::internal_path(lexrc.getString());
997 backupdir_path = expandPath(backupdir_path);
1000 case RC_DEFAULT_DECIMAL_POINT:
1001 lexrc >> default_decimal_point;
1003 case RC_DEFAULT_LENGTH_UNIT:
1005 default_length_unit = (Length::UNIT) lexrc.getInteger();
1007 case RC_DATE_INSERT_FORMAT:
1008 lexrc >> date_insert_format;
1010 case RC_LANGUAGE_CUSTOM_PACKAGE:
1011 lexrc >> language_custom_package;
1013 case RC_LANGUAGE_AUTO_BEGIN:
1014 lexrc >> language_auto_begin;
1016 case RC_LANGUAGE_AUTO_END:
1017 lexrc >> language_auto_end;
1019 case RC_LANGUAGE_GLOBAL_OPTIONS:
1020 lexrc >> language_global_options;
1022 case RC_LANGUAGE_PACKAGE_SELECTION:
1024 switch (lexrc.getInteger()) {
1026 language_package_selection = LP_AUTO;
1029 language_package_selection = LP_BABEL;
1032 language_package_selection = LP_CUSTOM;
1035 language_package_selection = LP_NONE;
1040 case RC_LANGUAGE_COMMAND_BEGIN:
1041 lexrc >> language_command_begin;
1043 case RC_LANGUAGE_COMMAND_END:
1044 lexrc >> language_command_end;
1046 case RC_LANGUAGE_COMMAND_LOCAL:
1047 lexrc >> language_command_local;
1049 case RC_RTL_SUPPORT:
1050 lexrc >> rtl_support;
1052 case RC_VISUAL_CURSOR:
1053 lexrc >> visual_cursor;
1055 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
1056 lexrc >> close_buffer_with_last_view;
1058 case RC_AUTO_NUMBER:
1059 lexrc >> auto_number;
1061 case RC_MARK_FOREIGN_LANGUAGE:
1062 lexrc >> mark_foreign_language;
1066 string fmt, command;
1068 fmt = lexrc.getString();
1069 if (lexrc.next(true))
1070 command = lexrc.getString();
1071 setMover(fmt, command);
1075 case RC_CONVERTER: {
1076 string from, to, command, flags;
1078 from = lexrc.getString();
1080 to = lexrc.getString();
1081 if (lexrc.next(true))
1082 command = lexrc.getString();
1084 flags = lexrc.getString();
1085 if (command.empty())
1086 theConverters().erase(from, to);
1088 theConverters().add(from, to, command, flags);
1091 // compatibility with versions older than 1.4.0 only
1093 string format, command;
1094 lexrc >> format >> command;
1095 formats.setViewer(format, command);
1098 case RC_FILEFORMAT: {
1100 string format, extensions, prettyname, shortcut;
1101 if (!(lexrc >> format >> extensions))
1103 if (ok && lexrc.next(true))
1104 prettyname = lexrc.getString();
1108 if(!(lexrc >> shortcut))
1110 string viewer, editor;
1111 if (ok && lexrc.next(true))
1112 viewer = lexrc.getString();
1115 if (ok && lexrc.next(true))
1116 editor = lexrc.getString();
1120 if (!(lexrc >> flags >> mime))
1122 int flgs = Format::none;
1123 while (!flags.empty()) {
1125 flags = split(flags, flag, ',');
1126 if (flag == "document")
1127 flgs |= Format::document;
1128 else if (flag == "vector")
1129 flgs |= Format::vector;
1130 else if (flag == "zipped=native")
1131 flgs |= Format::zipped_native;
1132 else if (flag == "menu=export")
1133 flgs |= Format::export_menu;
1135 LYXERR0("Ignoring unknown flag `"
1136 << flag << "' for format `"
1140 LYXERR0("Syntax error in format " << format);
1141 else if (prettyname.empty()) {
1142 if (theConverters().formatIsUsed(format))
1143 LYXERR0("Can't delete format " << format);
1145 formats.erase(format);
1147 formats.add(format, extensions, prettyname,
1148 shortcut, viewer, editor, mime, flgs);
1152 case RC_VIEWER_ALTERNATIVES: {
1153 string format, command;
1156 viewer_alternatives[format].insert(command);
1159 case RC_EDITOR_ALTERNATIVES: {
1160 string format, command;
1163 editor_alternatives[format].insert(command);
1167 case RC_DEFAULT_OTF_VIEW_FORMAT:
1168 lexrc >> default_otf_view_format;
1171 case RC_DEFAULT_VIEW_FORMAT:
1172 lexrc >> default_view_format;
1175 case RC_GUI_LANGUAGE:
1176 lexrc >> gui_language;
1179 case RC_SHOW_BANNER:
1180 lexrc >> show_banner;
1185 string const tmp = lexrc.getString();
1186 if (tmp == "true" || tmp == "on")
1187 preview = PREVIEW_ON;
1188 else if (tmp == "no_math")
1189 preview = PREVIEW_NO_MATH;
1191 preview = PREVIEW_OFF;
1192 if (tmp != "false" && tmp != "off")
1193 LYXERR0("Unrecognized preview status \""
1199 case RC_PREVIEW_HASHED_LABELS:
1200 lexrc >> preview_hashed_labels;
1203 case RC_PREVIEW_SCALE_FACTOR:
1204 lexrc >> preview_scale_factor;
1211 lexrc >> user_email;
1214 case RC_PATH_PREFIX:
1215 lexrc >> path_prefix;
1218 case RC_USE_CONVERTER_CACHE:
1219 lexrc >> use_converter_cache;
1221 case RC_CONVERTER_CACHE_MAXAGE:
1222 lexrc >> converter_cache_maxage;
1225 case RC_SORT_LAYOUTS:
1226 lexrc >> sort_layouts;
1228 case RC_GROUP_LAYOUTS:
1229 lexrc >> group_layouts;
1231 case RC_FULL_SCREEN_LIMIT:
1232 lexrc >> full_screen_limit;
1234 case RC_FULL_SCREEN_TOOLBARS:
1235 lexrc >> full_screen_toolbars;
1237 case RC_FULL_SCREEN_SCROLLBAR:
1238 lexrc >> full_screen_scrollbar;
1240 case RC_FULL_SCREEN_TABBAR:
1241 lexrc >> full_screen_tabbar;
1243 case RC_FULL_SCREEN_MENUBAR:
1244 lexrc >> full_screen_menubar;
1246 case RC_FULL_SCREEN_WIDTH:
1247 lexrc >> full_screen_width;
1249 case RC_OPEN_BUFFERS_IN_TABS:
1250 lexrc >> open_buffers_in_tabs;
1252 case RC_SINGLE_CLOSE_TAB_BUTTON:
1253 lexrc >> single_close_tab_button;
1255 case RC_SINGLE_INSTANCE:
1256 lexrc >> single_instance;
1257 if (run_mode == PREFERRED)
1258 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1260 case RC_FORWARD_SEARCH_DVI:
1261 if (lexrc.next(true))
1262 forward_search_dvi = lexrc.getString();
1264 case RC_FORWARD_SEARCH_PDF:
1265 if (lexrc.next(true))
1266 forward_search_pdf = lexrc.getString();
1268 case RC_EXPORT_OVERWRITE:
1270 string const tmp = lexrc.getString();
1271 if (tmp == "all" || tmp == "true")
1272 export_overwrite = ALL_FILES;
1273 else if (tmp == "main")
1274 export_overwrite = MAIN_FILE;
1276 export_overwrite = NO_FILES;
1277 if (tmp != "ask" && tmp != "false")
1278 LYXERR0("Unrecognized export_overwrite status \""
1283 case RC_SCROLL_WHEEL_ZOOM:
1285 string const tmp = lexrc.getString();
1287 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1288 else if (tmp == "shift")
1289 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1290 else if (tmp == "alt")
1291 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1293 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1294 if (tmp != "off" && tmp != "false")
1295 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1302 break; // this is just a dummy
1305 // This is triggered the first time through the loop unless
1306 // we hit a format tag.
1307 if (check_format && format != LYXRC_FILEFORMAT)
1308 return FormatMismatch;
1311 /// Update converters data-structures
1312 theConverters().update(formats);
1313 theConverters().buildGraph();
1319 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1321 ofstream ofs(filename.toFilesystemEncoding().c_str());
1323 write(ofs, ignore_system_lyxrc);
1327 void LyXRC::print() const
1329 if (lyxerr.debugging())
1330 write(lyxerr, false);
1338 typedef pair<string, SpecialisedMover> Data;
1340 SameMover(Data const & comparison)
1341 : comparison_(comparison) {}
1343 bool operator()(Data const & data) const
1345 return data.first == comparison_.first &&
1346 data.second.command() == comparison_.second.command();
1356 // Escape \ and " so that LyXLex can read the string later
1357 string escapeCommand(string const & str) {
1358 return subst(subst(str , "\\", "\\\\"),
1365 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1367 LyXRCTags tag = RC_LAST;
1369 if (!name.empty()) {
1370 for (int i = 0; i != lyxrcCount; ++i)
1371 if ("\\" + name == lyxrcTags[i].tag)
1372 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1376 os << "# LyX " << lyx_version
1377 << " generated this file. If you want to make your own\n"
1378 << "# modifications you should do them from inside LyX and save.\n\n"
1379 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1381 // Why the switch you might ask. It is a trick to ensure that all
1382 // the elements in the LyXRCTags enum are handled. As you can see
1383 // there are no breaks at all. So it is just a huge fall-through.
1384 // The nice thing is that we will get a warning from the compiler
1385 // if we forget an element.
1389 // input/include files are not done here
1390 case RC_LYXRCFORMAT:
1392 if (ignore_system_lyxrc ||
1393 bind_file != system_lyxrc.bind_file) {
1394 string const path = os::external_path(bind_file);
1395 os << "\\bind_file \"" << path << "\"\n";
1401 if (ignore_system_lyxrc ||
1402 def_file != system_lyxrc.def_file) {
1403 string const path = os::external_path(def_file);
1404 os << "\\def_file \"" << path << "\"\n";
1413 << "# MISC SECTION ######################################\n"
1415 // bind files are not done here.
1417 case RC_PATH_PREFIX:
1418 if (ignore_system_lyxrc ||
1419 path_prefix != system_lyxrc.path_prefix) {
1420 os << "\\path_prefix \"" << path_prefix << "\"\n";
1425 if (ignore_system_lyxrc ||
1426 ui_file != system_lyxrc.ui_file) {
1427 string const path = os::external_path(ui_file);
1428 os << "\\ui_file \"" << path << "\"\n";
1432 case RC_AUTOREGIONDELETE:
1433 if (ignore_system_lyxrc ||
1434 auto_region_delete != system_lyxrc.auto_region_delete) {
1435 os << "# Set to false to inhibit automatic replacement of\n"
1436 << "# the current selection.\n"
1437 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1442 case RC_AUTORESET_OPTIONS:
1443 if (ignore_system_lyxrc ||
1444 auto_reset_options != system_lyxrc.auto_reset_options) {
1445 os << "# Set to false to inhibit automatic reset of\n"
1446 << "# the class options to defaults on class change.\n"
1447 << "\\auto_reset_options "
1448 << convert<string>(auto_reset_options)
1454 if (ignore_system_lyxrc ||
1455 autosave != system_lyxrc.autosave) {
1456 os << "# The time interval between auto-saves in seconds.\n"
1457 << "\\autosave " << autosave << '\n';
1461 case RC_DISPLAY_GRAPHICS:
1462 if (ignore_system_lyxrc ||
1463 display_graphics != system_lyxrc.display_graphics) {
1464 os << "# Display graphics within LyX\n"
1466 << "\\display_graphics "
1467 << (display_graphics ? "true" : "false")
1472 case RC_SORT_LAYOUTS:
1473 if (ignore_system_lyxrc ||
1474 sort_layouts != system_lyxrc.sort_layouts) {
1475 os << "# Sort layouts alphabetically.\n"
1476 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1480 case RC_GROUP_LAYOUTS:
1481 if (ignore_system_lyxrc ||
1482 group_layouts != system_lyxrc.group_layouts) {
1483 os << "# Group layouts by their category.\n"
1484 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1488 case RC_VIEWDVI_PAPEROPTION:
1489 if (ignore_system_lyxrc ||
1490 view_dvi_paper_option
1491 != system_lyxrc.view_dvi_paper_option) {
1492 os << "# Options used to specify paper size to the\n"
1493 << "# view_dvi_command (e.g. -paper)\n"
1494 << "\\view_dvi_paper_option \""
1495 << view_dvi_paper_option << "\"\n";
1499 case RC_CHKTEX_COMMAND:
1500 if (ignore_system_lyxrc ||
1501 chktex_command != system_lyxrc.chktex_command) {
1502 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1506 case RC_BIBTEX_ALTERNATIVES: {
1507 CommandSet::const_iterator it = bibtex_alternatives.begin();
1508 CommandSet::const_iterator end = bibtex_alternatives.end();
1509 for ( ; it != end; ++it) {
1510 if (ignore_system_lyxrc
1511 || !system_lyxrc.bibtex_alternatives.count(*it))
1512 os << "\\bibtex_alternatives \""
1518 case RC_BIBTEX_COMMAND:
1519 if (ignore_system_lyxrc ||
1520 bibtex_command != system_lyxrc.bibtex_command) {
1521 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1525 case RC_JBIBTEX_COMMAND:
1526 if (ignore_system_lyxrc ||
1527 jbibtex_command != system_lyxrc.jbibtex_command) {
1528 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1532 case RC_INDEX_ALTERNATIVES: {
1533 CommandSet::const_iterator it = index_alternatives.begin();
1534 CommandSet::const_iterator end = index_alternatives.end();
1535 for ( ; it != end; ++it) {
1536 if (ignore_system_lyxrc
1537 || !system_lyxrc.index_alternatives.count(*it))
1538 os << "\\index_alternatives \""
1544 case RC_INDEX_COMMAND:
1545 if (ignore_system_lyxrc ||
1546 index_command != system_lyxrc.index_command) {
1547 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1551 case RC_JINDEX_COMMAND:
1552 if (ignore_system_lyxrc ||
1553 jindex_command != system_lyxrc.jindex_command) {
1554 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1558 case RC_SPLITINDEX_COMMAND:
1559 if (ignore_system_lyxrc ||
1560 splitindex_command != system_lyxrc.splitindex_command) {
1561 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1565 case RC_NOMENCL_COMMAND:
1566 if (ignore_system_lyxrc ||
1567 nomencl_command != system_lyxrc.nomencl_command) {
1568 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1572 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1573 // Don't write this setting to the preferences file,
1574 // but allow temporary changes (bug 7557).
1575 if (ignore_system_lyxrc) {
1576 os << "\\tex_expects_windows_paths "
1577 << convert<string>(windows_style_tex_paths) << '\n';
1581 case RC_TEX_ALLOWS_SPACES:
1582 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1583 os << "\\tex_allows_spaces "
1584 << convert<string>(tex_allows_spaces) << '\n';
1589 if (ignore_system_lyxrc ||
1590 use_kbmap != system_lyxrc.use_kbmap) {
1591 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1595 case RC_KBMAP_PRIMARY:
1596 if (ignore_system_lyxrc ||
1597 primary_kbmap != system_lyxrc.primary_kbmap) {
1598 string const path = os::external_path(primary_kbmap);
1599 os << "\\kbmap_primary \"" << path << "\"\n";
1603 case RC_KBMAP_SECONDARY:
1604 if (ignore_system_lyxrc ||
1605 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1606 string const path = os::external_path(secondary_kbmap);
1607 os << "\\kbmap_secondary \"" << path << "\"\n";
1612 if (ignore_system_lyxrc ||
1613 lyxpipes != system_lyxrc.lyxpipes) {
1614 string const path = os::external_path(lyxpipes);
1615 os << "\\serverpipe \"" << path << "\"\n";
1619 case RC_DATE_INSERT_FORMAT:
1620 if (ignore_system_lyxrc ||
1621 date_insert_format != system_lyxrc.date_insert_format) {
1622 os << "\\date_insert_format \"" << date_insert_format
1629 os << "\\user_name \"" << user_name << "\"\n";
1634 os << "\\user_email \"" << user_email << "\"\n";
1638 case RC_SHOW_BANNER:
1639 if (ignore_system_lyxrc ||
1640 show_banner != system_lyxrc.show_banner) {
1641 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1647 if (ignore_system_lyxrc ||
1648 preview != system_lyxrc.preview) {
1654 case PREVIEW_NO_MATH:
1661 os << "\\preview " << status << '\n';
1666 case RC_PREVIEW_HASHED_LABELS:
1667 if (ignore_system_lyxrc ||
1668 preview_hashed_labels !=
1669 system_lyxrc.preview_hashed_labels) {
1670 os << "\\preview_hashed_labels "
1671 << convert<string>(preview_hashed_labels) << '\n';
1676 case RC_PREVIEW_SCALE_FACTOR:
1677 if (ignore_system_lyxrc ||
1678 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1679 os << "\\preview_scale_factor "
1680 << preview_scale_factor << '\n';
1685 case RC_USE_CONVERTER_CACHE:
1686 if (ignore_system_lyxrc ||
1687 use_converter_cache != system_lyxrc.use_converter_cache) {
1688 os << "\\use_converter_cache "
1689 << convert<string>(use_converter_cache) << '\n';
1694 case RC_CONVERTER_CACHE_MAXAGE:
1695 if (ignore_system_lyxrc ||
1696 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1697 os << "\\converter_cache_maxage "
1698 << converter_cache_maxage << '\n';
1704 << "# SCREEN & FONTS SECTION ############################\n"
1708 if (ignore_system_lyxrc ||
1709 icon_set != system_lyxrc.icon_set) {
1710 os << "\\icon_set \"" << icon_set
1716 case RC_USE_SYSTEM_THEME_ICONS:
1717 if (ignore_system_lyxrc ||
1718 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1719 os << "\\use_system_theme_icons "
1720 << convert<string>(use_system_theme_icons)
1727 if (ignore_system_lyxrc ||
1728 dpi != system_lyxrc.dpi) {
1729 os << "\\screen_dpi " << dpi << '\n';
1733 case RC_SCREEN_ZOOM:
1734 if (ignore_system_lyxrc ||
1735 zoom != system_lyxrc.zoom) {
1736 os << "\\screen_zoom " << zoom << '\n';
1740 case RC_GEOMETRY_SESSION:
1741 if (ignore_system_lyxrc ||
1742 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1743 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1748 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1749 if (ignore_system_lyxrc ||
1750 cursor_follows_scrollbar
1751 != system_lyxrc.cursor_follows_scrollbar) {
1752 os << "\\cursor_follows_scrollbar "
1753 << convert<string>(cursor_follows_scrollbar) << '\n';
1757 case RC_CURSOR_WIDTH:
1758 if (ignore_system_lyxrc ||
1760 != system_lyxrc.cursor_width) {
1761 os << "\\cursor_width "
1762 << cursor_width << '\n';
1766 case RC_SCROLL_BELOW_DOCUMENT:
1767 if (ignore_system_lyxrc ||
1768 scroll_below_document
1769 != system_lyxrc.scroll_below_document) {
1770 os << "\\scroll_below_document "
1771 << convert<string>(scroll_below_document) << '\n';
1775 case RC_PARAGRAPH_MARKERS:
1776 if (ignore_system_lyxrc ||
1778 != system_lyxrc.paragraph_markers) {
1779 os << "\\paragraph_markers "
1780 << convert<string>(paragraph_markers) << '\n';
1784 case RC_MAC_DONTSWAP_CTRL_META:
1785 if (ignore_system_lyxrc ||
1786 mac_dontswap_ctrl_meta
1787 != system_lyxrc.mac_dontswap_ctrl_meta) {
1788 os << "\\mac_dontswap_ctrl_meta "
1789 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1793 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1794 if (ignore_system_lyxrc ||
1795 mac_like_cursor_movement
1796 != system_lyxrc.mac_like_cursor_movement) {
1797 os << "\\mac_like_cursor_movement "
1798 << convert<string>(mac_like_cursor_movement) << '\n';
1802 case RC_MACRO_EDIT_STYLE:
1803 if (ignore_system_lyxrc ||
1805 != system_lyxrc.macro_edit_style) {
1806 os << "\\macro_edit_style ";
1807 switch (macro_edit_style) {
1808 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1809 case MACRO_EDIT_INLINE: os << "1\n"; break;
1810 case MACRO_EDIT_LIST: os << "2\n"; break;
1815 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1816 if (ignore_system_lyxrc ||
1817 dialogs_iconify_with_main
1818 != system_lyxrc.dialogs_iconify_with_main) {
1819 os << "\\dialogs_iconify_with_main "
1820 << convert<string>(dialogs_iconify_with_main) << '\n';
1824 case RC_SCREEN_FONT_ROMAN:
1825 if (ignore_system_lyxrc ||
1826 roman_font_name != system_lyxrc.roman_font_name) {
1827 os << "\\screen_font_roman \"" << roman_font_name
1832 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1833 if (ignore_system_lyxrc ||
1834 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1835 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1840 case RC_SCREEN_FONT_SANS:
1841 if (ignore_system_lyxrc ||
1842 sans_font_name != system_lyxrc.sans_font_name) {
1843 os << "\\screen_font_sans \"" << sans_font_name
1848 case RC_SCREEN_FONT_SANS_FOUNDRY:
1849 if (ignore_system_lyxrc ||
1850 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1851 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1856 case RC_SCREEN_FONT_TYPEWRITER:
1857 if (ignore_system_lyxrc ||
1858 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1859 os << "\\screen_font_typewriter \""
1860 << typewriter_font_name << "\"\n";
1864 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1865 if (ignore_system_lyxrc ||
1866 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1867 os << "\\screen_font_typewriter_foundry \""
1868 << typewriter_font_foundry << "\"\n";
1873 case RC_SCREEN_FONT_SCALABLE:
1874 if (ignore_system_lyxrc ||
1875 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1876 os << "\\screen_font_scalable "
1877 << convert<string>(use_scalable_fonts)
1882 case RC_SCREEN_FONT_SIZES:
1883 if (ignore_system_lyxrc ||
1884 font_sizes[FONT_SIZE_TINY]
1885 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1886 font_sizes[FONT_SIZE_SCRIPT]
1887 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1888 font_sizes[FONT_SIZE_FOOTNOTE]
1889 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1890 font_sizes[FONT_SIZE_SMALL]
1891 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1892 font_sizes[FONT_SIZE_NORMAL]
1893 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1894 font_sizes[FONT_SIZE_LARGE]
1895 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1896 font_sizes[FONT_SIZE_LARGER]
1897 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1898 font_sizes[FONT_SIZE_LARGEST]
1899 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1900 font_sizes[FONT_SIZE_HUGE]
1901 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1902 font_sizes[FONT_SIZE_HUGER]
1903 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1904 os.setf(ios::fixed);
1906 os << "\\screen_font_sizes"
1907 << ' ' << font_sizes[FONT_SIZE_TINY]
1908 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1909 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1910 << ' ' << font_sizes[FONT_SIZE_SMALL]
1911 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1912 << ' ' << font_sizes[FONT_SIZE_LARGE]
1913 << ' ' << font_sizes[FONT_SIZE_LARGER]
1914 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1915 << ' ' << font_sizes[FONT_SIZE_HUGE]
1916 << ' ' << font_sizes[FONT_SIZE_HUGER]
1921 case RC_FULL_SCREEN_LIMIT:
1922 if (ignore_system_lyxrc ||
1923 full_screen_limit != system_lyxrc.full_screen_limit) {
1924 os << "\\fullscreen_limit "
1925 << convert<string>(full_screen_limit)
1930 case RC_FULL_SCREEN_TOOLBARS:
1931 if (ignore_system_lyxrc ||
1932 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1933 os << "\\fullscreen_toolbars "
1934 << convert<string>(full_screen_toolbars)
1939 case RC_FULL_SCREEN_SCROLLBAR:
1940 if (ignore_system_lyxrc ||
1941 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1942 os << "\\fullscreen_scrollbar "
1943 << convert<string>(full_screen_scrollbar)
1948 case RC_FULL_SCREEN_TABBAR:
1949 if (ignore_system_lyxrc ||
1950 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1951 os << "\\fullscreen_tabbar "
1952 << convert<string>(full_screen_tabbar)
1957 case RC_FULL_SCREEN_MENUBAR:
1958 if (ignore_system_lyxrc ||
1959 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1960 os << "\\fullscreen_menubar "
1961 << convert<string>(full_screen_menubar)
1966 case RC_FULL_SCREEN_WIDTH:
1967 if (ignore_system_lyxrc ||
1968 full_screen_width != system_lyxrc.full_screen_width) {
1969 os << "\\fullscreen_width "
1970 << convert<string>(full_screen_width)
1975 case RC_OPEN_BUFFERS_IN_TABS:
1976 if (ignore_system_lyxrc ||
1977 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1978 os << "\\open_buffers_in_tabs "
1979 << convert<string>(open_buffers_in_tabs)
1984 case RC_SINGLE_CLOSE_TAB_BUTTON:
1985 if (ignore_system_lyxrc ||
1986 single_close_tab_button != system_lyxrc.single_close_tab_button) {
1987 os << "\\single_close_tab_button "
1988 << convert<string>(single_close_tab_button)
1993 case RC_SINGLE_INSTANCE:
1994 if (ignore_system_lyxrc ||
1995 single_instance != system_lyxrc.single_instance) {
1996 os << "\\single_instance "
1997 << convert<string>(single_instance)
2002 case RC_FORWARD_SEARCH_DVI:
2003 if (ignore_system_lyxrc ||
2004 forward_search_dvi != system_lyxrc.forward_search_dvi) {
2005 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
2009 case RC_FORWARD_SEARCH_PDF:
2010 if (ignore_system_lyxrc ||
2011 forward_search_pdf != system_lyxrc.forward_search_pdf) {
2012 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
2018 << "# COLOR SECTION ###################################\n"
2022 for (int i = 0; i < Color_ignore; ++i) {
2023 ColorCode lc = static_cast<ColorCode>(i);
2024 string const col = lcolor.getX11Name(lc);
2025 if (ignore_system_lyxrc
2026 || col != system_lcolor.getX11Name(lc)) {
2027 os << "\\set_color \""
2028 << lcolor.getLyXName(lc) << "\" \""
2036 << "# PRINTER SECTION ###################################\n"
2040 if (ignore_system_lyxrc ||
2041 printer != system_lyxrc.printer) {
2042 os << "\\printer \"" << printer << "\"\n";
2046 case RC_PRINT_ADAPTOUTPUT:
2047 if (ignore_system_lyxrc ||
2048 print_adapt_output != system_lyxrc.print_adapt_output) {
2049 os << "\\print_adapt_output "
2050 << convert<string>(print_adapt_output)
2055 case RC_PRINT_COMMAND:
2056 if (ignore_system_lyxrc ||
2057 print_command != system_lyxrc.print_command) {
2058 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
2062 case RC_PRINTEXSTRAOPTIONS:
2063 if (ignore_system_lyxrc ||
2064 print_extra_options != system_lyxrc.print_extra_options) {
2065 os << "\\print_extra_options \"" << print_extra_options
2070 case RC_PRINTSPOOL_COMMAND:
2071 if (ignore_system_lyxrc ||
2072 print_spool_command != system_lyxrc.print_spool_command) {
2073 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
2078 case RC_PRINTSPOOL_PRINTERPREFIX:
2079 if (ignore_system_lyxrc ||
2080 print_spool_printerprefix
2081 != system_lyxrc.print_spool_printerprefix) {
2082 os << "\\print_spool_printerprefix \""
2083 << print_spool_printerprefix << "\"\n";
2087 case RC_PRINTEVENPAGEFLAG:
2088 if (ignore_system_lyxrc ||
2089 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
2090 os << "\\print_evenpage_flag \"" << print_evenpage_flag
2095 case RC_PRINTODDPAGEFLAG:
2096 if (ignore_system_lyxrc ||
2097 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
2098 os << "\\print_oddpage_flag \"" << print_oddpage_flag
2103 case RC_PRINTREVERSEFLAG:
2104 if (ignore_system_lyxrc ||
2105 print_reverse_flag != system_lyxrc.print_reverse_flag) {
2106 os << "\\print_reverse_flag \"" << print_reverse_flag
2111 case RC_PRINTLANDSCAPEFLAG:
2112 if (ignore_system_lyxrc ||
2113 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2114 os << "\\print_landscape_flag \"" << print_landscape_flag
2119 case RC_PRINTPAGERANGEFLAG:
2120 if (ignore_system_lyxrc ||
2121 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
2122 os << "\\print_pagerange_flag \"" << print_pagerange_flag
2127 case RC_PRINTCOPIESFLAG:
2128 if (ignore_system_lyxrc ||
2129 print_copies_flag != system_lyxrc.print_copies_flag) {
2130 os << "\\print_copies_flag \"" << print_copies_flag
2135 case RC_PRINTCOLLCOPIESFLAG:
2136 if (ignore_system_lyxrc ||
2137 print_collcopies_flag
2138 != system_lyxrc.print_collcopies_flag) {
2139 os << "\\print_collcopies_flag \""
2140 << print_collcopies_flag
2145 case RC_PRINTPAPERFLAG:
2146 if (ignore_system_lyxrc ||
2147 print_paper_flag != system_lyxrc.print_paper_flag) {
2148 os << "\\print_paper_flag \"" << print_paper_flag
2153 case RC_PRINTPAPERDIMENSIONFLAG:
2154 if (ignore_system_lyxrc ||
2155 print_paper_dimension_flag
2156 != system_lyxrc.print_paper_dimension_flag) {
2157 os << "\\print_paper_dimension_flag \""
2158 << print_paper_dimension_flag << "\"\n";
2162 case RC_PRINTTOPRINTER:
2163 if (ignore_system_lyxrc ||
2164 print_to_printer != system_lyxrc.print_to_printer) {
2165 os << "\\print_to_printer \"" << print_to_printer
2170 case RC_PRINTTOFILE:
2171 if (ignore_system_lyxrc ||
2172 print_to_file != system_lyxrc.print_to_file) {
2173 string const path = os::external_path(print_to_file);
2174 os << "\\print_to_file \"" << path << "\"\n";
2178 case RC_PRINTFILEEXTENSION:
2179 if (ignore_system_lyxrc ||
2180 print_file_extension != system_lyxrc.print_file_extension) {
2181 os << "\\print_file_extension \""
2182 << print_file_extension
2189 << "# TEX SECTION #######################################\n"
2192 case RC_TEXINPUTS_PREFIX:
2193 if (ignore_system_lyxrc ||
2194 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2195 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2200 case RC_FONT_ENCODING:
2201 if (ignore_system_lyxrc ||
2202 fontenc != system_lyxrc.fontenc) {
2203 os << "\\font_encoding \"" << fontenc << "\"\n";
2208 case RC_FORCE_PAINT_SINGLE_CHAR:
2209 if (ignore_system_lyxrc ||
2210 force_paint_single_char != system_lyxrc.force_paint_single_char) {
2211 os << "\\force_paint_single_char \"" << force_paint_single_char << "\"\n";
2217 << "# FILE SECTION ######################################\n"
2220 case RC_DOCUMENTPATH:
2221 if (ignore_system_lyxrc ||
2222 document_path != system_lyxrc.document_path) {
2223 string const path = os::external_path(document_path);
2224 os << "\\document_path \"" << path << "\"\n";
2228 case RC_USELASTFILEPOS:
2229 if (ignore_system_lyxrc ||
2230 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2231 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2236 case RC_LOADSESSION:
2237 if (ignore_system_lyxrc ||
2238 load_session != system_lyxrc.load_session) {
2239 os << "\\load_session " << convert<string>(load_session)
2244 case RC_MOUSE_WHEEL_SPEED:
2245 if (ignore_system_lyxrc ||
2246 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2247 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2251 case RC_COMPLETION_INLINE_DELAY:
2252 if (ignore_system_lyxrc ||
2253 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2254 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2258 case RC_COMPLETION_INLINE_MATH:
2259 if (ignore_system_lyxrc ||
2260 completion_inline_math != system_lyxrc.completion_inline_math) {
2261 os << "\\completion_inline_math "
2262 << convert<string>(completion_inline_math) << '\n';
2266 case RC_COMPLETION_INLINE_TEXT:
2267 if (ignore_system_lyxrc ||
2268 completion_inline_text != system_lyxrc.completion_inline_text) {
2269 os << "\\completion_inline_text "
2270 << convert<string>(completion_inline_text) << '\n';
2274 case RC_COMPLETION_INLINE_DOTS:
2275 if (ignore_system_lyxrc ||
2276 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2277 os << "\\completion_inline_dots "
2278 << convert<string>(completion_inline_dots) << '\n';
2282 case RC_AUTOCORRECTION_MATH:
2283 if (ignore_system_lyxrc ||
2284 autocorrection_math != system_lyxrc.autocorrection_math) {
2285 os << "\\autocorrection_math "
2286 << convert<string>(autocorrection_math) << '\n';
2290 case RC_COMPLETION_POPUP_DELAY:
2291 if (ignore_system_lyxrc ||
2292 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2293 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2297 case RC_COMPLETION_POPUP_MATH:
2298 if (ignore_system_lyxrc ||
2299 completion_popup_math != system_lyxrc.completion_popup_math) {
2300 os << "\\completion_popup_math "
2301 << convert<string>(completion_popup_math) << '\n';
2305 case RC_COMPLETION_POPUP_TEXT:
2306 if (ignore_system_lyxrc ||
2307 completion_popup_text != system_lyxrc.completion_popup_text) {
2308 os << "\\completion_popup_text "
2309 << convert<string>(completion_popup_text) << '\n';
2313 case RC_COMPLETION_CURSOR_TEXT:
2314 if (ignore_system_lyxrc ||
2315 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2316 os << "\\completion_cursor_text "
2317 << convert<string>(completion_cursor_text) << '\n';
2321 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2322 if (ignore_system_lyxrc ||
2323 completion_popup_after_complete
2324 != system_lyxrc.completion_popup_after_complete) {
2325 os << "\\completion_popup_after_complete "
2326 << convert<string>(completion_popup_after_complete) << '\n';
2330 case RC_COMPLETION_MINLENGTH:
2331 if (ignore_system_lyxrc ||
2332 completion_minlength != system_lyxrc.completion_minlength) {
2333 os << "\\completion_minlength " << convert<string>(completion_minlength)
2339 case RC_NUMLASTFILES:
2340 if (ignore_system_lyxrc ||
2341 num_lastfiles != system_lyxrc.num_lastfiles) {
2342 os << "\\num_lastfiles " << num_lastfiles << '\n';
2346 case RC_CHECKLASTFILES:
2347 if (ignore_system_lyxrc ||
2348 check_lastfiles != system_lyxrc.check_lastfiles) {
2349 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2354 case RC_EXAMPLEPATH:
2355 if (ignore_system_lyxrc ||
2356 example_path != system_lyxrc.example_path) {
2357 string const path = os::external_path(example_path);
2358 os << "\\example_path \"" << path << "\"\n";
2362 case RC_TEMPLATEPATH:
2363 if (ignore_system_lyxrc ||
2364 template_path != system_lyxrc.template_path) {
2365 string const path = os::external_path(template_path);
2366 os << "\\template_path \"" << path << "\"\n";
2370 case RC_TEMPDIRPATH:
2371 if (ignore_system_lyxrc ||
2372 tempdir_path != system_lyxrc.tempdir_path) {
2373 string const path = os::external_path(tempdir_path);
2374 os << "\\tempdir_path \"" << path << "\"\n";
2378 case RC_THESAURUSDIRPATH:
2379 if (ignore_system_lyxrc ||
2380 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2381 string const path = os::external_path(thesaurusdir_path);
2382 os << "\\thesaurusdir_path \"" << path << "\"\n";
2386 case RC_HUNSPELLDIR_PATH:
2387 if (ignore_system_lyxrc ||
2388 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2389 string const path = os::external_path(hunspelldir_path);
2390 os << "\\hunspelldir_path \"" << path << "\"\n";
2394 case RC_PLAINTEXT_LINELEN:
2395 if (ignore_system_lyxrc ||
2396 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2397 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2401 case RC_MAKE_BACKUP:
2402 if (ignore_system_lyxrc ||
2403 make_backup != system_lyxrc.make_backup) {
2404 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2408 case RC_SAVE_COMPRESSED:
2409 if (ignore_system_lyxrc ||
2410 save_compressed != system_lyxrc.save_compressed) {
2411 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2415 case RC_BACKUPDIR_PATH:
2416 if (ignore_system_lyxrc ||
2417 backupdir_path != system_lyxrc.backupdir_path) {
2418 string const path = os::external_path(backupdir_path);
2419 os << "\\backupdir_path \"" << path << "\"\n";
2425 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2429 << "# SPELLCHECKER SECTION ##############################\n"
2432 case RC_ACCEPT_COMPOUND:
2433 if (ignore_system_lyxrc ||
2434 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2435 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2441 if (ignore_system_lyxrc ||
2442 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2443 os << "\\alternate_language \"" << spellchecker_alt_lang
2449 if (ignore_system_lyxrc ||
2450 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2451 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2455 case RC_USE_SYSTEM_COLORS:
2456 if (ignore_system_lyxrc ||
2457 use_system_colors != system_lyxrc.use_system_colors) {
2458 os << "\\use_system_colors "
2459 << convert<string>(use_system_colors)
2464 case RC_USE_TOOLTIP:
2465 if (ignore_system_lyxrc ||
2466 use_tooltip != system_lyxrc.use_tooltip) {
2467 os << "\\use_tooltip "
2468 << convert<string>(use_tooltip)
2473 case RC_USE_PIXMAP_CACHE:
2474 if (ignore_system_lyxrc ||
2475 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2476 os << "\\use_pixmap_cache "
2477 << convert<string>(use_pixmap_cache)
2483 if (ignore_system_lyxrc ||
2484 use_qimage != system_lyxrc.use_qimage) {
2485 os << "\\use_qimage "
2486 << convert<string>(use_qimage)
2493 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2498 case RC_DEFAULT_DECIMAL_POINT:
2499 if (ignore_system_lyxrc ||
2500 default_decimal_point != system_lyxrc.default_decimal_point) {
2501 os << "\\default_decimal_point " << default_decimal_point << '\n';
2506 case RC_DEFAULT_LENGTH_UNIT:
2507 if (ignore_system_lyxrc ||
2508 default_length_unit != system_lyxrc.default_length_unit) {
2509 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2514 case RC_SPELLCHECKER:
2515 if (ignore_system_lyxrc ||
2516 spellchecker != system_lyxrc.spellchecker) {
2517 os << "\\spellchecker " << spellchecker << '\n';
2522 case RC_SPELLCHECK_CONTINUOUSLY:
2523 if (ignore_system_lyxrc ||
2524 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2525 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2531 case RC_SPELLCHECK_NOTES:
2532 if (ignore_system_lyxrc ||
2533 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2534 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2540 case RC_RTL_SUPPORT:
2541 if (ignore_system_lyxrc ||
2542 rtl_support != system_lyxrc.rtl_support) {
2543 os << "\\rtl " << convert<string>(rtl_support) << '\n';
2547 case RC_VISUAL_CURSOR:
2548 if (ignore_system_lyxrc ||
2549 visual_cursor != system_lyxrc.visual_cursor) {
2550 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2554 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2555 if (ignore_system_lyxrc ||
2556 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2557 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2558 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2562 case RC_LANGUAGE_CUSTOM_PACKAGE:
2563 if (ignore_system_lyxrc ||
2564 language_custom_package != system_lyxrc.language_custom_package) {
2565 os << "\\language_custom_package \"" << language_custom_package
2570 case RC_LANGUAGE_GLOBAL_OPTIONS:
2571 if (ignore_system_lyxrc ||
2572 language_global_options
2573 != system_lyxrc.language_global_options) {
2574 os << "\\language_global_options \""
2575 << convert<string>(language_global_options)
2580 case RC_LANGUAGE_PACKAGE_SELECTION:
2581 if (ignore_system_lyxrc ||
2582 language_package_selection != system_lyxrc.language_package_selection) {
2583 os << "\\language_package_selection ";
2584 switch (language_package_selection) {
2601 case RC_LANGUAGE_COMMAND_BEGIN:
2602 if (ignore_system_lyxrc ||
2603 language_command_begin
2604 != system_lyxrc.language_command_begin) {
2605 os << "\\language_command_begin \""
2606 << language_command_begin
2611 case RC_LANGUAGE_COMMAND_END:
2612 if (ignore_system_lyxrc ||
2613 language_command_end
2614 != system_lyxrc.language_command_end) {
2615 os << "\\language_command_end \"" << language_command_end
2620 case RC_LANGUAGE_COMMAND_LOCAL:
2621 if (ignore_system_lyxrc ||
2622 language_command_local
2623 != system_lyxrc.language_command_local) {
2624 os << "\\language_command_local \""
2625 << language_command_local
2630 case RC_LANGUAGE_AUTO_BEGIN:
2631 if (ignore_system_lyxrc ||
2632 language_auto_begin != system_lyxrc.language_auto_begin) {
2633 os << "\\language_auto_begin "
2634 << convert<string>(language_auto_begin) << '\n';
2638 case RC_LANGUAGE_AUTO_END:
2639 if (ignore_system_lyxrc ||
2640 language_auto_end != system_lyxrc.language_auto_end) {
2641 os << "\\language_auto_end "
2642 << convert<string>(language_auto_end) << '\n';
2646 case RC_MARK_FOREIGN_LANGUAGE:
2647 if (ignore_system_lyxrc ||
2648 mark_foreign_language
2649 != system_lyxrc.mark_foreign_language) {
2650 os << "\\mark_foreign_language " <<
2651 convert<string>(mark_foreign_language) << '\n';
2657 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2660 case RC_AUTO_NUMBER:
2661 if (ignore_system_lyxrc ||
2662 auto_number != system_lyxrc.auto_number) {
2663 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2667 case RC_GUI_LANGUAGE:
2668 if (ignore_system_lyxrc ||
2669 gui_language != system_lyxrc.gui_language) {
2670 os << "\\gui_language " << gui_language << '\n';
2674 case RC_EXPORT_OVERWRITE:
2675 if (ignore_system_lyxrc ||
2676 export_overwrite != system_lyxrc.export_overwrite) {
2678 switch (export_overwrite) {
2689 os << "\\export_overwrite " << status << '\n';
2694 case RC_SCROLL_WHEEL_ZOOM:
2695 if (ignore_system_lyxrc ||
2696 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2698 switch (scroll_wheel_zoom) {
2699 case SCROLL_WHEEL_ZOOM_OFF:
2702 case SCROLL_WHEEL_ZOOM_CTRL:
2705 case SCROLL_WHEEL_ZOOM_SHIFT:
2708 case SCROLL_WHEEL_ZOOM_ALT:
2712 os << "\\scroll_wheel_zoom " << status << '\n';
2718 << "# FORMATS SECTION ##########################\n"
2722 // New/modified formats
2723 for (Formats::const_iterator cit = formats.begin();
2724 cit != formats.end(); ++cit) {
2725 Format const * format =
2726 system_formats.getFormat(cit->name());
2728 format->extensions() != cit->extensions() ||
2729 format->prettyname() != cit->prettyname() ||
2730 format->shortcut() != cit->shortcut() ||
2731 format->viewer() != cit->viewer() ||
2732 format->editor() != cit->editor() ||
2733 format->documentFormat() != cit->documentFormat() ||
2734 format->vectorFormat() != cit->vectorFormat() ||
2735 format->inExportMenu() != cit->inExportMenu() ||
2736 format->mime() != cit->mime()) {
2737 os << "\\format \"" << cit->name() << "\" \""
2738 << cit->extensions() << "\" \""
2739 << cit->prettyname() << "\" \""
2740 << cit->shortcut() << "\" \""
2741 << escapeCommand(cit->viewer()) << "\" \""
2742 << escapeCommand(cit->editor()) << "\" \"";
2743 vector<string> flags;
2744 if (cit->documentFormat())
2745 flags.push_back("document");
2746 if (cit->vectorFormat())
2747 flags.push_back("vector");
2748 if (cit->zippedNative())
2749 flags.push_back("zipped=native");
2750 if (cit->inExportMenu())
2751 flags.push_back("menu=export");
2753 os << getStringFromVector(flags);
2754 os << "\" \"" << cit->mime() << "\"\n";
2758 // Look for deleted formats
2759 for (Formats::const_iterator cit = system_formats.begin();
2760 cit != system_formats.end(); ++cit)
2761 if (!formats.getFormat(cit->name()))
2762 os << "\\format \"" << cit->name()
2763 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2766 case RC_VIEWER_ALTERNATIVES: {
2767 Alternatives::const_iterator it = viewer_alternatives.begin();
2768 Alternatives::const_iterator const en = viewer_alternatives.end();
2769 Alternatives::const_iterator const sysend =
2770 system_lyxrc.viewer_alternatives.end();
2771 for (; it != en; ++it) {
2772 string const & fmt = it->first;
2773 CommandSet const & cmd = it->second;
2774 CommandSet::const_iterator sit = cmd.begin();
2775 CommandSet::const_iterator const sen = cmd.end();
2776 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2777 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2778 system_lyxrc.viewer_alternatives.find(fmt);
2779 for (; sit != sen; ++sit) {
2780 string const & cmd = *sit;
2781 if (ignore_system_lyxrc
2782 || sysfmt == sysend // format not found
2783 || sysfmt->second.count(cmd) == 0 // this command not found
2785 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2791 case RC_EDITOR_ALTERNATIVES: {
2792 Alternatives::const_iterator it = editor_alternatives.begin();
2793 Alternatives::const_iterator const en = editor_alternatives.end();
2794 Alternatives::const_iterator const sysend =
2795 system_lyxrc.editor_alternatives.end();
2796 for (; it != en; ++it) {
2797 string const & fmt = it->first;
2798 CommandSet const & cmd = it->second;
2799 CommandSet::const_iterator sit = cmd.begin();
2800 CommandSet::const_iterator const sen = cmd.end();
2801 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2802 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2803 system_lyxrc.editor_alternatives.find(fmt);
2804 for (; sit != sen; ++sit) {
2805 string const & cmd = *sit;
2806 if (ignore_system_lyxrc
2807 || sysfmt == sysend // format not found
2808 || sysfmt->second.count(cmd) == 0 // this command not found
2810 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2816 case RC_DEFAULT_OTF_VIEW_FORMAT:
2817 if (ignore_system_lyxrc ||
2818 default_otf_view_format != system_lyxrc.default_otf_view_format) {
2819 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2823 case RC_DEFAULT_VIEW_FORMAT:
2824 if (ignore_system_lyxrc ||
2825 default_view_format != system_lyxrc.default_view_format) {
2826 os << "\\default_view_format " << default_view_format << '\n';
2836 << "# CONVERTERS SECTION ##########################\n"
2840 // Look for new converters
2841 for (Converters::const_iterator cit = theConverters().begin();
2842 cit != theConverters().end(); ++cit) {
2843 Converter const * converter =
2844 theSystemConverters().getConverter(cit->from,
2847 converter->command != cit->command ||
2848 converter->flags != cit->flags)
2849 os << "\\converter \"" << cit->from << "\" \""
2850 << cit->to << "\" \""
2851 << escapeCommand(cit->command) << "\" \""
2852 << cit->flags << "\"\n";
2855 // New/modifed converters
2856 for (Converters::const_iterator cit = theSystemConverters().begin();
2857 cit != theSystemConverters().end(); ++cit)
2858 if (!theConverters().getConverter(cit->from, cit->to))
2859 os << "\\converter \"" << cit->from
2860 << "\" \"" << cit->to << "\" \"\" \"\"\n";
2867 << "# COPIERS SECTION ##########################\n"
2870 // Look for new movers
2871 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2872 Movers::const_iterator const sysend = theSystemMovers().end();
2873 Movers::const_iterator it = theMovers().begin();
2874 Movers::const_iterator end = theMovers().end();
2876 for (; it != end; ++it) {
2877 Movers::const_iterator const sysit =
2878 find_if(sysbegin, sysend, SameMover(*it));
2879 if (sysit == sysend) {
2880 string const & fmt = it->first;
2881 string const & command =
2882 it->second.command();
2884 os << "\\copier " << fmt
2885 << " \"" << escapeCommand(command) << "\"\n";
2891 // We don't actually delete SpecialisedMover(s) from the
2892 // map, just clear their 'command', so there's no need
2893 // to test for anything else.
2900 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2902 // Why the switch you might ask. It is a trick to ensure that all
2903 // the elements in the LyXRCTags enum is handled. As you can see
2904 // there are no breaks at all. So it is just a huge fall-through.
2905 // The nice thing is that we will get a warning from the compiler
2906 // if we forget an element.
2907 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2909 case LyXRC::RC_LAST:
2910 case LyXRC::RC_ACCEPT_COMPOUND:
2911 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2912 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2913 case LyXRC::RC_ALT_LANG:
2914 case LyXRC::RC_PLAINTEXT_LINELEN:
2915 case LyXRC::RC_AUTOCORRECTION_MATH:
2916 case LyXRC::RC_AUTOREGIONDELETE:
2917 case LyXRC::RC_AUTORESET_OPTIONS:
2918 case LyXRC::RC_AUTOSAVE:
2919 case LyXRC::RC_AUTO_NUMBER:
2920 case LyXRC::RC_BACKUPDIR_PATH:
2921 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2922 case LyXRC::RC_BIBTEX_COMMAND:
2923 case LyXRC::RC_BINDFILE:
2924 case LyXRC::RC_CHECKLASTFILES:
2925 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2926 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2927 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2928 case LyXRC::RC_COMPLETION_INLINE_MATH:
2929 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2930 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2931 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2932 case LyXRC::RC_COMPLETION_POPUP_MATH:
2933 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2934 case LyXRC::RC_COMPLETION_MINLENGTH:
2935 case LyXRC::RC_USELASTFILEPOS:
2936 case LyXRC::RC_LOADSESSION:
2937 case LyXRC::RC_CHKTEX_COMMAND:
2938 case LyXRC::RC_CONVERTER:
2939 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2940 case LyXRC::RC_COPIER:
2941 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2942 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2943 case LyXRC::RC_DATE_INSERT_FORMAT:
2944 case LyXRC::RC_GUI_LANGUAGE:
2945 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2946 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2947 case LyXRC::RC_DEFFILE:
2948 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2949 case LyXRC::RC_DISPLAY_GRAPHICS:
2950 case LyXRC::RC_DOCUMENTPATH:
2951 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2952 FileName path(lyxrc_new.document_path);
2953 if (path.exists() && path.isDirectory())
2954 package().document_dir() = FileName(lyxrc.document_path);
2956 case LyXRC::RC_EDITOR_ALTERNATIVES:
2957 case LyXRC::RC_ESC_CHARS:
2958 case LyXRC::RC_EXAMPLEPATH:
2959 case LyXRC::RC_FONT_ENCODING:
2960 case LyXRC::RC_FORCE_PAINT_SINGLE_CHAR:
2961 case LyXRC::RC_FILEFORMAT:
2962 case LyXRC::RC_GROUP_LAYOUTS:
2963 case LyXRC::RC_HUNSPELLDIR_PATH:
2964 case LyXRC::RC_ICON_SET:
2965 case LyXRC::RC_INDEX_ALTERNATIVES:
2966 case LyXRC::RC_INDEX_COMMAND:
2967 case LyXRC::RC_JBIBTEX_COMMAND:
2968 case LyXRC::RC_JINDEX_COMMAND:
2969 case LyXRC::RC_NOMENCL_COMMAND:
2970 case LyXRC::RC_INPUT:
2971 case LyXRC::RC_KBMAP:
2972 case LyXRC::RC_KBMAP_PRIMARY:
2973 case LyXRC::RC_KBMAP_SECONDARY:
2974 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2975 case LyXRC::RC_LANGUAGE_AUTO_END:
2976 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2977 case LyXRC::RC_LANGUAGE_COMMAND_END:
2978 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2979 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2980 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2981 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2982 case LyXRC::RC_LYXRCFORMAT:
2983 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2984 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
2985 case LyXRC::RC_MACRO_EDIT_STYLE:
2986 case LyXRC::RC_MAKE_BACKUP:
2987 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2988 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2989 case LyXRC::RC_NUMLASTFILES:
2990 case LyXRC::RC_PARAGRAPH_MARKERS:
2991 case LyXRC::RC_PATH_PREFIX:
2992 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2993 prependEnvPath("PATH", lyxrc_new.path_prefix);
2995 case LyXRC::RC_PREVIEW:
2996 case LyXRC::RC_PREVIEW_HASHED_LABELS:
2997 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
2998 case LyXRC::RC_PRINTCOLLCOPIESFLAG:
2999 case LyXRC::RC_PRINTCOPIESFLAG:
3000 case LyXRC::RC_PRINTER:
3001 case LyXRC::RC_PRINTEVENPAGEFLAG:
3002 case LyXRC::RC_PRINTEXSTRAOPTIONS:
3003 case LyXRC::RC_PRINTFILEEXTENSION:
3004 case LyXRC::RC_PRINTLANDSCAPEFLAG:
3005 case LyXRC::RC_PRINTODDPAGEFLAG:
3006 case LyXRC::RC_PRINTPAGERANGEFLAG:
3007 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
3008 case LyXRC::RC_PRINTPAPERFLAG:
3009 case LyXRC::RC_PRINTREVERSEFLAG:
3010 case LyXRC::RC_PRINTSPOOL_COMMAND:
3011 case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
3012 case LyXRC::RC_PRINTTOFILE:
3013 case LyXRC::RC_PRINTTOPRINTER:
3014 case LyXRC::RC_PRINT_ADAPTOUTPUT:
3015 case LyXRC::RC_PRINT_COMMAND:
3016 case LyXRC::RC_RTL_SUPPORT:
3017 case LyXRC::RC_SAVE_COMPRESSED:
3018 case LyXRC::RC_SCREEN_DPI:
3019 case LyXRC::RC_SCREEN_FONT_ROMAN:
3020 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
3021 case LyXRC::RC_SCREEN_FONT_SANS:
3022 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
3023 case LyXRC::RC_SCREEN_FONT_SCALABLE:
3024 case LyXRC::RC_SCREEN_FONT_SIZES:
3025 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
3026 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3027 case LyXRC::RC_GEOMETRY_SESSION:
3028 case LyXRC::RC_SCREEN_ZOOM:
3029 case LyXRC::RC_SERVERPIPE:
3030 case LyXRC::RC_SET_COLOR:
3031 case LyXRC::RC_SHOW_BANNER:
3032 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
3033 case LyXRC::RC_SPELLCHECKER:
3034 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
3036 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
3037 case LyXRC::RC_SPELLCHECK_NOTES:
3038 case LyXRC::RC_SPLITINDEX_COMMAND:
3039 case LyXRC::RC_TEMPDIRPATH:
3040 case LyXRC::RC_TEMPLATEPATH:
3041 case LyXRC::RC_TEX_ALLOWS_SPACES:
3042 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
3043 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
3044 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
3046 case LyXRC::RC_TEXINPUTS_PREFIX:
3047 case LyXRC::RC_THESAURUSDIRPATH:
3048 case LyXRC::RC_UIFILE:
3049 case LyXRC::RC_USER_EMAIL:
3050 case LyXRC::RC_USER_NAME:
3051 case LyXRC::RC_USE_CONVERTER_CACHE:
3052 case LyXRC::RC_USE_SYSTEM_COLORS:
3053 case LyXRC::RC_USE_TOOLTIP:
3054 case LyXRC::RC_USE_PIXMAP_CACHE:
3055 case LyXRC::RC_USE_QIMAGE:
3056 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
3057 case LyXRC::RC_VIEWDVI_PAPEROPTION:
3058 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
3059 case LyXRC::RC_SINGLE_INSTANCE:
3060 case LyXRC::RC_SORT_LAYOUTS:
3061 case LyXRC::RC_FULL_SCREEN_LIMIT:
3062 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
3063 case LyXRC::RC_FULL_SCREEN_MENUBAR:
3064 case LyXRC::RC_FULL_SCREEN_TABBAR:
3065 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
3066 case LyXRC::RC_FULL_SCREEN_WIDTH:
3067 case LyXRC::RC_VISUAL_CURSOR:
3068 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3069 case LyXRC::RC_VIEWER:
3070 case LyXRC::RC_VIEWER_ALTERNATIVES:
3071 case LyXRC::RC_FORWARD_SEARCH_DVI:
3072 case LyXRC::RC_FORWARD_SEARCH_PDF:
3073 case LyXRC::RC_EXPORT_OVERWRITE:
3074 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
3075 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
3076 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3077 case LyXRC::RC_CURSOR_WIDTH:
3084 string const LyXRC::getDescription(LyXRCTags tag)
3089 case RC_ACCEPT_COMPOUND:
3090 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3094 str = _("Specify an alternate language. The default is to use the language of the document.");
3097 case RC_PLAINTEXT_LINELEN:
3098 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.");
3101 case RC_AUTOREGIONDELETE:
3102 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3105 case RC_AUTORESET_OPTIONS:
3106 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3110 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3113 case RC_AUTO_NUMBER:
3116 case RC_BACKUPDIR_PATH:
3117 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.");
3120 case RC_BIBTEX_COMMAND:
3121 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3124 case RC_JBIBTEX_COMMAND:
3125 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3129 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3132 case RC_CHECKLASTFILES:
3133 str = _("Select to check whether the lastfiles still exist.");
3136 case RC_CHKTEX_COMMAND:
3137 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3146 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3147 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.");
3150 case RC_CURSOR_WIDTH:
3151 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3154 case RC_SCROLL_BELOW_DOCUMENT:
3155 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");
3158 case RC_MAC_DONTSWAP_CTRL_META:
3159 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3162 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3163 str = _("Use the Mac OS X conventions for cursor movement");
3166 case RC_SHOW_MACRO_LABEL:
3167 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3170 case RC_DATE_INSERT_FORMAT:
3171 //xgettext:no-c-format
3172 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3176 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3179 case RC_DEFAULT_OTF_VIEW_FORMAT:
3180 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3183 case RC_DEFAULT_VIEW_FORMAT:
3184 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3187 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3188 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3191 case RC_DISPLAY_GRAPHICS:
3192 str = _("Select how LyX will display any graphics.");
3195 case RC_DOCUMENTPATH:
3196 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3200 str = _("Specify additional chars that can be part of a word.");
3203 case RC_EXAMPLEPATH:
3204 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3207 case RC_FONT_ENCODING:
3208 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3211 case RC_FORCE_PAINT_SINGLE_CHAR:
3212 str = _("Disable any kerning and ligatures for text drawing on screen.");
3218 case RC_INDEX_COMMAND:
3219 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\".");
3222 case RC_JINDEX_COMMAND:
3223 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3226 case RC_NOMENCL_COMMAND:
3227 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3234 case RC_KBMAP_PRIMARY:
3235 case RC_KBMAP_SECONDARY:
3236 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.");
3239 case RC_LANGUAGE_AUTO_BEGIN:
3240 str = _("Select if a language switching command is needed at the beginning of the document.");
3243 case RC_LANGUAGE_AUTO_END:
3244 str = _("Select if a language switching command is needed at the end of the document.");
3247 case RC_LANGUAGE_COMMAND_BEGIN:
3248 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.");
3251 case RC_LANGUAGE_COMMAND_END:
3252 str = _("The LaTeX command for changing back to the language of the document.");
3255 case RC_LANGUAGE_COMMAND_LOCAL:
3256 str = _("The LaTeX command for local changing of the language.");
3259 case RC_LANGUAGE_GLOBAL_OPTIONS:
3260 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3263 case RC_LANGUAGE_CUSTOM_PACKAGE:
3264 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3267 case RC_LANGUAGE_PACKAGE_SELECTION:
3268 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3271 case RC_USELASTFILEPOS:
3272 str = _("De-select if you do not want LyX to scroll to saved position.");
3275 case RC_LOADSESSION:
3276 str = _("De-select to prevent loading files opened from the last LyX session.");
3279 case RC_MAKE_BACKUP:
3280 str = _("De-select if you don't want LyX to create backup files.");
3283 case RC_MARK_FOREIGN_LANGUAGE:
3284 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3287 case RC_MOUSE_WHEEL_SPEED:
3288 str = bformat(_("The scrolling speed of the mouse wheel."),
3292 case RC_COMPLETION_POPUP_DELAY:
3293 str = _("The completion popup delay.");
3296 case RC_COMPLETION_POPUP_MATH:
3297 str = _("Select to display the completion popup in math mode.");
3300 case RC_COMPLETION_POPUP_TEXT:
3301 str = _("Select to display the completion popup in text mode.");
3304 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3305 str = _("Show the completion popup without delay after non-unique completion attempt.");
3308 case RC_COMPLETION_POPUP_TEXT:
3309 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3312 case RC_COMPLETION_POPUP_DELAY:
3313 str = _("The inline completion delay.");
3316 case RC_COMPLETION_INLINE_MATH:
3317 str = _("Select to display the inline completion in math mode.");
3320 case RC_COMPLETION_INLINE_TEXT:
3321 str = _("Select to display the inline completion in text mode.");
3324 case RC_COMPLETION_INLINE_DOTS:
3325 str = _("Use \"...\" to shorten long completions.");
3328 case RC_AUTOCORRECTION_MATH:
3329 str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
3332 case RC_NUMLASTFILES:
3333 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3337 case RC_PATH_PREFIX:
3338 str = _("Specify those directories which should be "
3339 "prepended to the PATH environment variable.\n"
3340 "Use the OS native format.");
3344 str = _("Shows a typeset preview of things such as math");
3347 case RC_PREVIEW_HASHED_LABELS:
3348 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3351 case RC_PREVIEW_SCALE_FACTOR:
3352 str = _("Scale the preview size to suit.");
3355 case RC_PRINTCOLLCOPIESFLAG:
3356 str = _("The option for specifying whether the copies should be collated.");
3359 case RC_PRINTCOPIESFLAG:
3360 str = _("The option for specifying the number of copies to print.");
3364 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
3367 case RC_PRINTEVENPAGEFLAG:
3368 str = _("The option to print only even pages.");
3371 case RC_PRINTEXSTRAOPTIONS:
3372 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
3375 case RC_PRINTFILEEXTENSION:
3376 str = _("Extension of printer program output file. Usually \".ps\".");
3379 case RC_PRINTLANDSCAPEFLAG:
3380 str = _("The option to print out in landscape.");
3383 case RC_PRINTODDPAGEFLAG:
3384 str = _("The option to print only odd pages.");
3387 case RC_PRINTPAGERANGEFLAG:
3388 str = _("The option for specifying a comma-separated list of pages to print.");
3391 case RC_PRINTPAPERDIMENSIONFLAG:
3392 str = _("Option to specify the dimensions of the print paper.");
3395 case RC_PRINTPAPERFLAG:
3396 str = _("The option to specify paper type.");
3399 case RC_PRINTREVERSEFLAG:
3400 str = _("The option to reverse the order of the pages printed.");
3403 case RC_PRINTSPOOL_COMMAND:
3404 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.");
3407 case RC_PRINTSPOOL_PRINTERPREFIX:
3408 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.");
3411 case RC_PRINTTOFILE:
3412 str = _("Option to pass to the print program to print to a file.");
3415 case RC_PRINTTOPRINTER:
3416 str = _("Option to pass to the print program to print on a specific printer.");
3419 case RC_PRINT_ADAPTOUTPUT:
3420 str = _("Select for LyX to pass the name of the destination printer to your print command.");
3423 case RC_PRINT_COMMAND:
3424 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
3427 case RC_RTL_SUPPORT:
3428 str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
3431 case RC_VISUAL_CURSOR:
3432 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3435 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3436 str = _("Specify whether, closing the last view of an open document, LyX should close the document (yes), hide it (no), or ask the user (ask).");
3440 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3443 case RC_SCREEN_FONT_ROMAN:
3444 case RC_SCREEN_FONT_SANS:
3445 case RC_SCREEN_FONT_TYPEWRITER:
3446 str = _("The screen fonts used to display the text while editing.");
3449 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3450 case RC_SCREEN_FONT_SANS_FOUNDRY:
3451 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3454 case RC_SCREEN_FONT_SCALABLE:
3455 str = _("Allow bitmap fonts to be resized. If you are using a bitmap font, selecting this option may make some fonts look blocky in LyX. Deselecting this option makes LyX use the nearest bitmap font size available, instead of scaling.");
3458 case RC_SCREEN_FONT_SIZES:
3459 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3462 case RC_SCREEN_ZOOM:
3463 //xgettext:no-c-format
3464 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3467 case RC_GEOMETRY_SESSION:
3468 str = _("Allow session manager to save and restore windows geometry.");
3472 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3478 case RC_SHOW_BANNER:
3479 str = _("De-select if you don't want the startup banner.");
3482 case RC_TEMPDIRPATH:
3483 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3486 case RC_THESAURUSDIRPATH:
3487 str = _("This is the place where the files of the thesaurus library reside.");
3490 case RC_TEMPLATEPATH:
3491 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3494 case RC_TEX_ALLOWS_SPACES:
3497 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3500 case RC_TEXINPUTS_PREFIX:
3501 str = _("Specify those directories which should be "
3502 "prepended to the TEXINPUTS environment variable.\n"
3503 "A '.' represents the current document directory. "
3504 "Use the OS native format.");
3508 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3517 case RC_USE_USE_SYSTEM_COLORS:
3518 str = _("Enable use the system colors for some things like main window background and selection.");
3521 case RC_USE_TOOLTIP:
3522 str = _("Enable the automatic appearance of tool tips in the work area.");
3525 case RC_USE_PIXMAP_CACHE:
3526 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3529 case RC_VIEWDVI_PAPEROPTION:
3530 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3545 // The global instance
3548 // The global copy of the system lyxrc entries (everything except preferences)