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"
31 #include "graphics/GraphicsTypes.h"
33 #include "support/convert.h"
34 #include "support/debug.h"
35 #include "support/environment.h"
36 #include "support/FileName.h"
37 #include "support/filetools.h"
38 #include "support/gettext.h"
39 #include "support/lstrings.h"
40 #include "support/os.h"
41 #include "support/Package.h"
42 #include "support/userinfo.h"
49 using namespace lyx::support;
53 namespace os = support::os;
57 static unsigned int const LYXRC_FILEFORMAT = 1;
59 // when adding something to this array keep it sorted!
60 LexerKeyword lyxrcTags[] = {
61 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
62 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
63 { "\\alternate_language", LyXRC::RC_ALT_LANG },
64 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
65 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
66 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
67 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
68 { "\\autosave", LyXRC::RC_AUTOSAVE },
69 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
70 { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
71 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
72 { "\\bind_file", LyXRC::RC_BINDFILE },
73 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
74 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
75 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
76 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
77 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
78 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
79 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
80 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
81 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
82 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
83 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
84 { "\\converter", LyXRC::RC_CONVERTER },
85 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
86 { "\\copier", LyXRC::RC_COPIER },
87 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
88 { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
89 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
90 { "\\def_file", LyXRC::RC_DEFFILE },
91 { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
92 { "\\default_language", LyXRC::RC_DEFAULT_LANGUAGE },
93 { "\\default_papersize", LyXRC::RC_DEFAULT_PAPERSIZE },
94 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
95 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
96 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
97 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
98 { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
99 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
100 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
101 { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE },
102 { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
103 { "\\force_paint_single_char", LyXRC::RC_FORCE_PAINT_SINGLE_CHAR },
104 { "\\format", LyXRC::RC_FILEFORMAT },
105 { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI },
106 { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF },
107 { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT },
108 { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR },
109 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
110 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
111 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
112 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
113 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
114 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
115 { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH },
116 { "\\icon_set", LyXRC::RC_ICON_SET },
117 { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
118 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
119 { "\\input", LyXRC::RC_INPUT },
120 { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
121 { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
122 { "\\kbmap", LyXRC::RC_KBMAP },
123 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
124 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
125 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
126 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
127 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
128 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
129 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
130 { "\\language_custom_package", LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE },
131 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
132 { "\\language_package_selection", LyXRC::RC_LANGUAGE_PACKAGE_SELECTION },
133 { "\\load_session", LyXRC::RC_LOADSESSION },
134 { "\\mac_dontswap_ctrl_meta", LyXRC::RC_MAC_DONTSWAP_CTRL_META },
135 { "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT },
136 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
137 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
138 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
139 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
140 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
141 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
142 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
143 { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS },
144 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
145 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
146 { "\\preview", LyXRC::RC_PREVIEW },
147 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
148 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
149 { "\\print_adapt_output", LyXRC::RC_PRINT_ADAPTOUTPUT },
150 { "\\print_collcopies_flag", LyXRC::RC_PRINTCOLLCOPIESFLAG },
151 { "\\print_command", LyXRC::RC_PRINT_COMMAND },
152 { "\\print_copies_flag", LyXRC::RC_PRINTCOPIESFLAG },
153 { "\\print_evenpage_flag", LyXRC::RC_PRINTEVENPAGEFLAG },
154 { "\\print_extra_options", LyXRC::RC_PRINTEXSTRAOPTIONS },
155 { "\\print_file_extension", LyXRC::RC_PRINTFILEEXTENSION },
156 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
157 { "\\print_oddpage_flag", LyXRC::RC_PRINTODDPAGEFLAG },
158 { "\\print_pagerange_flag", LyXRC::RC_PRINTPAGERANGEFLAG },
159 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
160 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
161 { "\\print_reverse_flag", LyXRC::RC_PRINTREVERSEFLAG },
162 { "\\print_spool_command", LyXRC::RC_PRINTSPOOL_COMMAND },
163 { "\\print_spool_printerprefix", LyXRC::RC_PRINTSPOOL_PRINTERPREFIX },
164 { "\\print_to_file", LyXRC::RC_PRINTTOFILE },
165 { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER },
166 { "\\printer", LyXRC::RC_PRINTER },
167 { "\\rtl", LyXRC::RC_RTL_SUPPORT },
168 { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
169 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
170 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
171 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
172 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
173 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
174 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
175 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
176 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
177 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
178 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
179 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
180 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
181 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
182 { "\\set_color", LyXRC::RC_SET_COLOR },
183 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
184 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
185 { "\\single_instance", LyXRC::RC_SINGLE_INSTANCE },
186 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
187 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
188 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
189 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
190 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
191 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
192 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
193 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
194 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
195 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
196 { "\\ui_file", LyXRC::RC_UIFILE },
197 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
198 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
199 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
200 // compatibility with versions older than 1.4.0 only
201 { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
202 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
203 { "\\user_email", LyXRC::RC_USER_EMAIL },
204 { "\\user_name", LyXRC::RC_USER_NAME },
205 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
206 // compatibility with versions older than 1.4.0 only
207 { "\\viewer", LyXRC::RC_VIEWER},
208 { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
209 { "\\visual_cursor", LyXRC::RC_VISUAL_CURSOR },
210 { "format", LyXRC::RC_LYXRCFORMAT }
213 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
224 void LyXRC::setDefaults()
228 def_file = "default";
230 // Get printer from the environment. If fail, use default "",
231 // assuming that everything is set up correctly.
232 printer = getEnv("PRINTER");
233 print_adapt_output = false;
234 print_command = "dvips";
235 print_evenpage_flag = "-B";
236 print_oddpage_flag = "-A";
237 print_pagerange_flag = "-pp";
238 print_copies_flag = "-c";
239 print_collcopies_flag = "-C";
240 print_reverse_flag = "-r";
241 print_landscape_flag = "-t landscape";
242 print_to_printer = "-P";
243 print_to_file = "-o ";
244 print_file_extension = ".ps";
245 print_paper_flag = "-t";
246 print_paper_dimension_flag = "-T";
247 document_path.erase();
248 view_dvi_paper_option.erase();
249 default_papersize = PAPER_DEFAULT;
250 default_view_format = "pdf2";
251 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
252 bibtex_command = "bibtex";
254 index_command = "makeindex -c -q";
255 nomencl_command = "makeindex -s nomencl.ist";
257 // Because a screen is typically wider than a piece of paper:
259 allow_geometry_session = true;
260 // Default LaTeX font size:
261 font_sizes[FONT_SIZE_TINY] = "5.0";
262 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
263 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
264 font_sizes[FONT_SIZE_SMALL] = "9.0";
265 font_sizes[FONT_SIZE_NORMAL] = "10.0";
266 font_sizes[FONT_SIZE_LARGE] = "12.0";
267 font_sizes[FONT_SIZE_LARGER] = "14.4";
268 font_sizes[FONT_SIZE_LARGEST] = "17.26";
269 font_sizes[FONT_SIZE_HUGE] = "20.74";
270 font_sizes[FONT_SIZE_HUGER] = "24.88";
271 use_scalable_fonts = true;
272 roman_font_name = "";
274 typewriter_font_name = "";
276 auto_region_delete = true;
277 auto_reset_options = false;
278 plaintext_linelen = 65;
279 mouse_wheel_speed = 1.0;
280 num_lastfiles = maxlastfiles;
281 check_lastfiles = true;
282 use_lastfilepos = true;
283 load_session = false;
285 save_compressed = false;
286 backupdir_path.erase();
287 display_graphics = true;
288 // Spellchecker settings:
289 // FIXME: this check should test the target platform (darwin)
290 #if defined(USE_MACOSX_PACKAGING)
291 spellchecker = "native";
292 #elif defined(USE_ASPELL)
293 spellchecker = "aspell";
294 #elif defined(USE_HUNSPELL)
295 spellchecker = "hunspell";
297 spellchecker = "aspell";
299 spellchecker_accept_compound = false;
300 spellcheck_continuously = false;
301 spellcheck_notes = true;
304 visual_cursor = false;
306 mark_foreign_language = true;
307 language_auto_begin = true;
308 language_auto_end = true;
309 language_global_options = true;
310 language_package_selection = LP_AUTO;
311 language_custom_package = "\\usepackage{babel}";
312 language_command_begin = "\\selectlanguage{$$lang}";
313 language_command_local = "\\foreignlanguage{$$lang}{";
314 sort_layouts = false;
315 group_layouts = true;
316 default_language = "english";
317 gui_language = "auto";
319 windows_style_tex_paths = false;
320 tex_allows_spaces = false;
321 date_insert_format = "%x";
322 cursor_follows_scrollbar = false;
323 scroll_below_document = false;
324 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
325 paragraph_markers = false;
326 mac_dontswap_ctrl_meta = false;
327 mac_like_word_movement = false;
328 macro_edit_style = MACRO_EDIT_INLINE_BOX;
329 dialogs_iconify_with_main = false;
330 preview = PREVIEW_OFF;
331 preview_hashed_labels = false;
332 preview_scale_factor = 1.0;
333 use_converter_cache = true;
334 use_system_colors = false;
336 use_pixmap_cache = false;
337 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
338 user_name = to_utf8(support::user_name());
339 user_email = to_utf8(support::user_email());
340 open_buffers_in_tabs = true;
341 single_close_tab_button = false;
342 single_instance = true;
343 forward_search_dvi = string();
344 forward_search_pdf = string();
345 export_overwrite = NO_FILES;
347 // Fullscreen settings
348 full_screen_limit = false;
349 full_screen_toolbars = true;
350 full_screen_tabbar = true;
351 full_screen_menubar = true;
352 full_screen_scrollbar = true;
353 full_screen_width = 700;
355 completion_cursor_text = true;
356 completion_popup_math = true;
357 completion_popup_text = false;
358 completion_popup_delay = 2.0;
359 completion_popup_after_complete = true;
360 autocorrection_math = false;
361 completion_inline_math = true;
362 completion_inline_text = false;
363 completion_inline_dots = -1;
364 completion_inline_delay = 0.2;
365 default_decimal_point = ".";
372 void oldFontFormat(string & family, string & foundry)
374 if (family.empty() || family[0] != '-')
376 foundry = token(family, '-', 1);
377 family = token(family, '-', 2);
385 bool LyXRC::read(FileName const & filename, bool check_format)
387 Lexer lexrc(lyxrcTags);
388 lexrc.setFile(filename);
389 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
390 ReturnValues retval = read(lexrc, check_format);
391 if (!check_format || retval != FormatMismatch)
392 return retval == ReadOK;
394 LYXERR(Debug::FILES, "Converting LyXRC file to " << LYXRC_FILEFORMAT);
395 FileName const tempfile = FileName::tempName("convert_lyxrc");
396 bool const success = prefs2prefs(filename, tempfile, false);
398 LYXERR0 ("Unable to convert " << filename.absFileName() <<
399 " to format " << LYXRC_FILEFORMAT);
402 Lexer lexrc2(lyxrcTags);
403 lexrc2.setFile(tempfile);
404 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
405 retval = read(lexrc2, check_format);
406 tempfile.removeFile();
407 return retval == ReadOK;
411 // don't need to worry about conversion, because this is always
412 // from an internal source
413 bool LyXRC::read(istream & is)
415 Lexer lexrc(lyxrcTags);
417 LYXERR(Debug::LYXRC, "Reading istream...");
418 return read(lexrc, false) == ReadOK;
422 LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
424 if (lyxerr.debugging(Debug::PARSER))
425 lexrc.printTable(lyxerr);
430 // default for current rowpainter capabilities
431 force_paint_single_char = true;
433 // format prior to 2.0 and introduction of format tag
434 unsigned int format = 0;
436 while (lexrc.isOK()) {
437 // By using two switches we take advantage of the compiler
438 // telling us if we have missed a LyXRCTags element in
439 // the second switch.
440 // Note that this also shows a problem with Lexer since it
441 // helps us avoid taking advantage of the strictness of the
444 int le = lexrc.lex();
446 case Lexer::LEX_UNDEF:
447 lexrc.printError("Unknown tag `$$Token'");
449 case Lexer::LEX_FEOF:
454 switch (static_cast<LyXRCTags>(le)) {
457 format = lexrc.getInteger();
459 case RC_INPUT: // Include file
462 libFileSearch(string(),
464 if (read(tmp, check_format)) {
466 "Error reading included file: " + tmp.absFileName());
472 bind_file = os::internal_path(lexrc.getString());
477 def_file = os::internal_path(lexrc.getString());
482 ui_file = os::internal_path(lexrc.getString());
485 case RC_AUTORESET_OPTIONS:
486 lexrc >> auto_reset_options;
489 case RC_DISPLAY_GRAPHICS:
491 display_graphics = lexrc.getString() == "true";
494 case RC_TEX_EXPECTS_WINDOWS_PATHS:
495 lexrc >> windows_style_tex_paths;
498 case RC_TEX_ALLOWS_SPACES:
499 lexrc >> tex_allows_spaces;
506 case RC_KBMAP_PRIMARY:
508 string const kmap(os::internal_path(lexrc.getString()));
509 if (!libFileSearch("kbd", kmap, "kmap").empty()
511 primary_kbmap = kmap;
513 lexrc.printError("LyX: Keymap `$$Token' not found");
518 case RC_KBMAP_SECONDARY:
520 string const kmap(os::internal_path(lexrc.getString()));
521 if (!libFileSearch("kbd", kmap, "kmap").empty()
523 secondary_kbmap = kmap;
525 lexrc.printError("LyX: Keymap `$$Token' not found");
530 case RC_FONT_ENCODING:
534 case RC_FORCE_PAINT_SINGLE_CHAR:
535 lexrc >> force_paint_single_char;
542 case RC_PRINT_COMMAND:
543 if (lexrc.next(true)) {
544 print_command = lexrc.getString();
548 case RC_PRINTEVENPAGEFLAG:
549 lexrc >> print_evenpage_flag;
552 case RC_PRINTODDPAGEFLAG:
553 lexrc >> print_oddpage_flag;
556 case RC_PRINTPAGERANGEFLAG:
557 lexrc >> print_pagerange_flag;
560 case RC_PRINTCOPIESFLAG:
561 lexrc >> print_copies_flag;
564 case RC_PRINTCOLLCOPIESFLAG:
565 lexrc >> print_collcopies_flag;
568 case RC_PRINTREVERSEFLAG:
569 lexrc >> print_reverse_flag;
572 case RC_PRINTLANDSCAPEFLAG:
573 lexrc >> print_landscape_flag;
576 case RC_PRINTTOPRINTER:
577 lexrc >> print_to_printer;
580 case RC_PRINT_ADAPTOUTPUT:
581 lexrc >> print_adapt_output;
586 print_to_file = os::internal_path(lexrc.getString());
590 case RC_PRINTFILEEXTENSION:
591 lexrc >> print_file_extension;
594 case RC_PRINTEXSTRAOPTIONS:
595 lexrc >> print_extra_options;
598 case RC_PRINTSPOOL_COMMAND:
599 if (lexrc.next(true)) {
600 print_spool_command = lexrc.getString();
604 case RC_PRINTSPOOL_PRINTERPREFIX:
605 lexrc >> print_spool_printerprefix;
608 case RC_PRINTPAPERDIMENSIONFLAG:
609 lexrc >> print_paper_dimension_flag;
612 case RC_PRINTPAPERFLAG:
613 lexrc >> print_paper_flag;
616 case RC_DEFAULT_PAPERSIZE:
618 string const size = ascii_lowercase(lexrc.getString());
619 if (size == "usletter")
620 default_papersize = PAPER_USLETTER;
621 else if (size == "legal")
622 default_papersize = PAPER_USLEGAL;
623 else if (size == "executive")
624 default_papersize = PAPER_USEXECUTIVE;
625 else if (size == "a3")
626 default_papersize = PAPER_A3;
627 else if (size == "a4")
628 default_papersize = PAPER_A4;
629 else if (size == "a5")
630 default_papersize = PAPER_A5;
631 else if (size == "b5")
632 default_papersize = PAPER_B5;
633 else if (size == "default")
634 default_papersize = PAPER_DEFAULT;
638 case RC_VIEWDVI_PAPEROPTION:
640 view_dvi_paper_option = lexrc.getString();
642 view_dvi_paper_option.erase();
645 case RC_CHKTEX_COMMAND:
646 if (lexrc.next(true)) {
647 chktex_command = lexrc.getString();
651 case RC_BIBTEX_ALTERNATIVES:
652 if (lexrc.next(true)) {
653 bibtex_alternatives.insert(lexrc.getString());
657 case RC_BIBTEX_COMMAND:
658 if (lexrc.next(true)) {
659 bibtex_command = lexrc.getString();
663 case RC_JBIBTEX_COMMAND:
664 if (lexrc.next(true)) {
665 jbibtex_command = lexrc.getString();
669 case RC_INDEX_ALTERNATIVES:
670 if (lexrc.next(true)) {
671 index_alternatives.insert(lexrc.getString());
675 case RC_INDEX_COMMAND:
676 if (lexrc.next(true)) {
677 index_command = lexrc.getString();
681 case RC_JINDEX_COMMAND:
682 if (lexrc.next(true)) {
683 jindex_command = lexrc.getString();
687 case RC_SPLITINDEX_COMMAND:
688 if (lexrc.next(true)) {
689 splitindex_command = lexrc.getString();
693 case RC_NOMENCL_COMMAND:
694 if (lexrc.next(true)) {
695 nomencl_command = lexrc.getString();
707 case RC_GEOMETRY_SESSION:
708 lexrc >> allow_geometry_session;
711 case RC_SCREEN_FONT_SIZES:
712 lexrc >> font_sizes[FONT_SIZE_TINY];
713 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
714 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
715 lexrc >> font_sizes[FONT_SIZE_SMALL];
716 lexrc >> font_sizes[FONT_SIZE_NORMAL];
717 lexrc >> font_sizes[FONT_SIZE_LARGE];
718 lexrc >> font_sizes[FONT_SIZE_LARGER];
719 lexrc >> font_sizes[FONT_SIZE_LARGEST];
720 lexrc >> font_sizes[FONT_SIZE_HUGE];
721 lexrc >> font_sizes[FONT_SIZE_HUGER];
724 case RC_SCREEN_FONT_SCALABLE:
725 lexrc >> use_scalable_fonts;
732 case RC_DOCUMENTPATH:
734 document_path = os::internal_path(lexrc.getString());
735 document_path = expandPath(document_path);
741 example_path = os::internal_path(lexrc.getString());
742 example_path = expandPath(example_path);
746 case RC_TEMPLATEPATH:
748 template_path = os::internal_path(lexrc.getString());
749 template_path = expandPath(template_path);
755 tempdir_path = os::internal_path(lexrc.getString());
756 tempdir_path = expandPath(tempdir_path);
760 case RC_THESAURUSDIRPATH:
762 thesaurusdir_path = os::internal_path(lexrc.getString());
763 thesaurusdir_path = expandPath(thesaurusdir_path);
767 case RC_HUNSPELLDIR_PATH:
769 hunspelldir_path = os::internal_path(lexrc.getString());
770 hunspelldir_path = expandPath(hunspelldir_path);
774 case RC_USELASTFILEPOS:
775 lexrc >> use_lastfilepos;
779 lexrc >> load_session;
782 case RC_MOUSE_WHEEL_SPEED:
783 lexrc >> mouse_wheel_speed;
786 case RC_COMPLETION_INLINE_DELAY:
787 lexrc >> completion_inline_delay;
790 case RC_COMPLETION_INLINE_MATH:
791 lexrc >> completion_inline_math;
794 case RC_COMPLETION_INLINE_TEXT:
795 lexrc >> completion_inline_text;
798 case RC_COMPLETION_INLINE_DOTS:
799 lexrc >> completion_inline_dots;
802 case RC_AUTOCORRECTION_MATH:
803 lexrc >> autocorrection_math;
806 case RC_COMPLETION_POPUP_DELAY:
807 lexrc >> completion_popup_delay;
810 case RC_COMPLETION_POPUP_MATH:
811 lexrc >> completion_popup_math;
814 case RC_COMPLETION_POPUP_TEXT:
815 lexrc >> completion_popup_text;
818 case RC_COMPLETION_CURSOR_TEXT:
819 lexrc >> completion_cursor_text;
822 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
823 lexrc >> completion_popup_after_complete;
826 case RC_NUMLASTFILES:
827 lexrc >> num_lastfiles;
830 case RC_CHECKLASTFILES:
831 lexrc >> check_lastfiles;
838 case RC_SCREEN_FONT_ROMAN:
840 roman_font_name = lexrc.getString();
841 oldFontFormat(roman_font_name,
846 case RC_SCREEN_FONT_SANS:
848 sans_font_name = lexrc.getString();
849 oldFontFormat(sans_font_name, sans_font_foundry);
853 case RC_SCREEN_FONT_TYPEWRITER:
855 typewriter_font_name = lexrc.getString();
856 oldFontFormat(typewriter_font_name,
857 typewriter_font_foundry);
861 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
862 lexrc >> roman_font_foundry;
865 case RC_SCREEN_FONT_SANS_FOUNDRY:
866 lexrc >> sans_font_foundry;
869 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
870 lexrc >> typewriter_font_foundry;
875 lexrc.printError("Missing color tag.");
878 string lyx_name = lexrc.getString();
881 lexrc.printError("Missing color name for color: `$$Token'");
884 string x11_name = lexrc.getString();
886 ColorCode const col =
887 lcolor.getFromLyXName(lyx_name);
888 if (col == Color_none ||
889 col == Color_inherit ||
893 if (!lcolor.setColor(col, x11_name))
894 LYXERR0("Bad lyxrc set_color for " << lyx_name);
898 case RC_AUTOREGIONDELETE:
899 // Auto region delete defaults to true
900 lexrc >> auto_region_delete;
905 lyxpipes = os::internal_path(lexrc.getString());
906 lyxpipes = expandPath(lyxpipes);
910 case RC_CURSOR_FOLLOWS_SCROLLBAR:
911 lexrc >> cursor_follows_scrollbar;
914 case RC_CURSOR_WIDTH:
915 lexrc >> cursor_width;
918 case RC_SCROLL_BELOW_DOCUMENT:
919 lexrc >> scroll_below_document;
922 case RC_PARAGRAPH_MARKERS:
923 lexrc >> paragraph_markers;
926 case RC_MAC_DONTSWAP_CTRL_META:
927 lexrc >> mac_dontswap_ctrl_meta;
930 case RC_MAC_LIKE_WORD_MOVEMENT:
931 lexrc >> mac_like_word_movement;
934 case RC_MACRO_EDIT_STYLE:
936 switch (lexrc.getInteger()) {
937 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
938 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
939 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
944 case RC_DIALOGS_ICONIFY_WITH_MAIN:
945 lexrc >> dialogs_iconify_with_main;
948 case RC_PLAINTEXT_LINELEN:
949 lexrc >> plaintext_linelen;
951 // Spellchecker settings:
952 case RC_ACCEPT_COMPOUND:
953 lexrc >> spellchecker_accept_compound;
955 case RC_USE_SYSTEM_COLORS:
956 lexrc >> use_system_colors;
959 lexrc >> use_tooltip;
961 case RC_USE_PIXMAP_CACHE:
962 lexrc >> use_pixmap_cache;
964 case RC_SPELLCHECKER:
965 lexrc >> spellchecker;
968 lexrc >> spellchecker_alt_lang;
971 lexrc >> spellchecker_esc_chars;
973 case RC_SPELLCHECK_CONTINUOUSLY:
974 lexrc >> spellcheck_continuously;
976 case RC_SPELLCHECK_NOTES:
977 lexrc >> spellcheck_notes;
980 lexrc >> make_backup;
982 case RC_SAVE_COMPRESSED:
983 lexrc >> save_compressed;
985 case RC_BACKUPDIR_PATH:
987 backupdir_path = os::internal_path(lexrc.getString());
988 backupdir_path = expandPath(backupdir_path);
991 case RC_DEFAULT_DECIMAL_POINT:
992 lexrc >> default_decimal_point;
994 case RC_DATE_INSERT_FORMAT:
995 lexrc >> date_insert_format;
997 case RC_LANGUAGE_CUSTOM_PACKAGE:
998 lexrc >> language_custom_package;
1000 case RC_LANGUAGE_AUTO_BEGIN:
1001 lexrc >> language_auto_begin;
1003 case RC_LANGUAGE_AUTO_END:
1004 lexrc >> language_auto_end;
1006 case RC_LANGUAGE_GLOBAL_OPTIONS:
1007 lexrc >> language_global_options;
1009 case RC_LANGUAGE_PACKAGE_SELECTION:
1011 switch (lexrc.getInteger()) {
1013 language_package_selection = LP_AUTO;
1016 language_package_selection = LP_BABEL;
1019 language_package_selection = LP_CUSTOM;
1022 language_package_selection = LP_NONE;
1027 case RC_LANGUAGE_COMMAND_BEGIN:
1028 lexrc >> language_command_begin;
1030 case RC_LANGUAGE_COMMAND_END:
1031 lexrc >> language_command_end;
1033 case RC_LANGUAGE_COMMAND_LOCAL:
1034 lexrc >> language_command_local;
1036 case RC_RTL_SUPPORT:
1037 lexrc >> rtl_support;
1039 case RC_VISUAL_CURSOR:
1040 lexrc >> visual_cursor;
1042 case RC_AUTO_NUMBER:
1043 lexrc >> auto_number;
1045 case RC_MARK_FOREIGN_LANGUAGE:
1046 lexrc >> mark_foreign_language;
1050 string fmt, command;
1052 fmt = lexrc.getString();
1053 if (lexrc.next(true))
1054 command = lexrc.getString();
1055 setMover(fmt, command);
1059 case RC_CONVERTER: {
1060 string from, to, command, flags;
1062 from = lexrc.getString();
1064 to = lexrc.getString();
1065 if (lexrc.next(true))
1066 command = lexrc.getString();
1068 flags = lexrc.getString();
1069 if (command.empty())
1070 theConverters().erase(from, to);
1072 theConverters().add(from, to, command, flags);
1075 // compatibility with versions older than 1.4.0 only
1077 string format, command;
1078 lexrc >> format >> command;
1079 formats.setViewer(format, command);
1082 case RC_FILEFORMAT: {
1083 string format, extension, prettyname, shortcut;
1084 lexrc >> format >> extension >> prettyname >> shortcut;
1085 string viewer, editor;
1086 if (lexrc.next(true))
1087 viewer = lexrc.getString();
1088 if (lexrc.next(true))
1089 editor = lexrc.getString();
1091 // Hack to ensure compatibility with versions older
1093 int le = lexrc.lex();
1094 if (le != Lexer::LEX_FEOF && le != Lexer::LEX_UNDEF) {
1095 flags = lexrc.getString();
1096 if (le != Lexer::LEX_DATA) {
1097 // We have got a known token.
1098 // Therefore this is an old style
1099 // format definition without
1101 lexrc.pushToken(flags);
1105 int flgs = Format::none;
1106 while (!flags.empty()) {
1108 flags = split(flags, flag, ',');
1109 if (flag == "document")
1110 flgs |= Format::document;
1111 else if (flag == "vector")
1112 flgs |= Format::vector;
1113 else if (flag == "menu=export")
1114 flgs |= Format::export_menu;
1116 LYXERR0("Ignoring unknown flag `"
1117 << flag << "' for format `"
1120 if (prettyname.empty()) {
1121 if (theConverters().formatIsUsed(format))
1122 LYXERR0("Can't delete format " << format);
1124 formats.erase(format);
1126 formats.add(format, extension, prettyname,
1127 shortcut, viewer, editor, flgs);
1131 case RC_VIEWER_ALTERNATIVES: {
1132 string format, command;
1134 format = lexrc.getString();
1135 if (lexrc.eatLine())
1136 command = lexrc.getString();
1137 viewer_alternatives[format].insert(command);
1140 case RC_EDITOR_ALTERNATIVES: {
1141 string format, command;
1143 format = lexrc.getString();
1144 if (lexrc.eatLine())
1145 command = lexrc.getString();
1146 editor_alternatives[format].insert(command);
1150 case RC_DEFAULT_VIEW_FORMAT:
1151 lexrc >> default_view_format;
1154 case RC_DEFAULT_LANGUAGE:
1155 lexrc >> default_language;
1158 case RC_GUI_LANGUAGE:
1159 lexrc >> gui_language;
1162 case RC_SHOW_BANNER:
1163 lexrc >> show_banner;
1168 string const tmp = lexrc.getString();
1169 if (tmp == "true" || tmp == "on")
1170 preview = PREVIEW_ON;
1171 else if (tmp == "no_math")
1172 preview = PREVIEW_NO_MATH;
1174 preview = PREVIEW_OFF;
1175 if (tmp != "false" && tmp != "off")
1176 LYXERR0("Unrecognized preview status \""
1182 case RC_PREVIEW_HASHED_LABELS:
1183 lexrc >> preview_hashed_labels;
1186 case RC_PREVIEW_SCALE_FACTOR:
1187 lexrc >> preview_scale_factor;
1194 lexrc >> user_email;
1197 case RC_PATH_PREFIX:
1198 lexrc >> path_prefix;
1201 case RC_USE_CONVERTER_CACHE:
1202 lexrc >> use_converter_cache;
1204 case RC_CONVERTER_CACHE_MAXAGE:
1205 lexrc >> converter_cache_maxage;
1208 case RC_SORT_LAYOUTS:
1209 lexrc >> sort_layouts;
1211 case RC_GROUP_LAYOUTS:
1212 lexrc >> group_layouts;
1214 case RC_FULL_SCREEN_LIMIT:
1215 lexrc >> full_screen_limit;
1217 case RC_FULL_SCREEN_TOOLBARS:
1218 lexrc >> full_screen_toolbars;
1220 case RC_FULL_SCREEN_SCROLLBAR:
1221 lexrc >> full_screen_scrollbar;
1223 case RC_FULL_SCREEN_TABBAR:
1224 lexrc >> full_screen_tabbar;
1226 case RC_FULL_SCREEN_MENUBAR:
1227 lexrc >> full_screen_menubar;
1229 case RC_FULL_SCREEN_WIDTH:
1230 lexrc >> full_screen_width;
1232 case RC_OPEN_BUFFERS_IN_TABS:
1233 lexrc >> open_buffers_in_tabs;
1235 case RC_SINGLE_CLOSE_TAB_BUTTON:
1236 lexrc >> single_close_tab_button;
1238 case RC_SINGLE_INSTANCE:
1239 lexrc >> single_instance;
1240 if (run_mode == PREFERRED)
1241 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1243 case RC_FORWARD_SEARCH_DVI:
1244 if (lexrc.next(true))
1245 forward_search_dvi = lexrc.getString();
1247 case RC_FORWARD_SEARCH_PDF:
1248 if (lexrc.next(true))
1249 forward_search_pdf = lexrc.getString();
1251 case RC_EXPORT_OVERWRITE:
1253 string const tmp = lexrc.getString();
1254 if (tmp == "all" || tmp == "true")
1255 export_overwrite = ALL_FILES;
1256 else if (tmp == "main")
1257 export_overwrite = MAIN_FILE;
1259 export_overwrite = NO_FILES;
1260 if (tmp != "ask" && tmp != "false")
1261 LYXERR0("Unrecognized export_overwrite status \""
1266 case RC_SCROLL_WHEEL_ZOOM:
1268 string const tmp = lexrc.getString();
1270 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1271 else if (tmp == "shift")
1272 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1273 else if (tmp == "alt")
1274 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1276 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1277 if (tmp != "off" && tmp != "false")
1278 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1285 break; // this is just a dummy
1288 // This is triggered the first time through the loop unless
1289 // we hit a format tag.
1290 if (check_format && format != LYXRC_FILEFORMAT)
1291 return FormatMismatch;
1294 /// Update converters data-structures
1295 theConverters().update(formats);
1296 theConverters().buildGraph();
1302 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1304 ofstream ofs(filename.toFilesystemEncoding().c_str());
1306 write(ofs, ignore_system_lyxrc);
1310 void LyXRC::print() const
1312 if (lyxerr.debugging())
1313 write(lyxerr, false);
1321 typedef pair<string, SpecialisedMover> Data;
1323 SameMover(Data const & comparison)
1324 : comparison_(comparison) {}
1326 bool operator()(Data const & data) const
1328 return data.first == comparison_.first &&
1329 data.second.command() == comparison_.second.command();
1339 // Escape \ and " so that LyXLex can read the string later
1340 string escapeCommand(string const & str) {
1341 return subst(subst(str , "\\", "\\\\"),
1348 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1350 LyXRCTags tag = RC_LAST;
1352 if (!name.empty()) {
1353 for (int i = 0; i != lyxrcCount; ++i)
1354 if ("\\" + name == lyxrcTags[i].tag)
1355 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1359 os << "# LyX " << lyx_version
1360 << " generated this file. If you want to make your own\n"
1361 << "# modifications you should do them from inside LyX and save.\n\n"
1362 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1364 // Why the switch you might ask. It is a trick to ensure that all
1365 // the elements in the LyXRCTags enum are handled. As you can see
1366 // there are no breaks at all. So it is just a huge fall-through.
1367 // The nice thing is that we will get a warning from the compiler
1368 // if we forget an element.
1372 // input/include files are not done here
1373 case RC_LYXRCFORMAT:
1375 if (ignore_system_lyxrc ||
1376 bind_file != system_lyxrc.bind_file) {
1377 string const path = os::external_path(bind_file);
1378 os << "\\bind_file \"" << path << "\"\n";
1384 if (ignore_system_lyxrc ||
1385 def_file != system_lyxrc.def_file) {
1386 string const path = os::external_path(def_file);
1387 os << "\\def_file \"" << path << "\"\n";
1396 << "# MISC SECTION ######################################\n"
1398 // bind files are not done here.
1400 case RC_PATH_PREFIX:
1401 if (ignore_system_lyxrc ||
1402 path_prefix != system_lyxrc.path_prefix) {
1403 os << "\\path_prefix \"" << path_prefix << "\"\n";
1408 if (ignore_system_lyxrc ||
1409 ui_file != system_lyxrc.ui_file) {
1410 string const path = os::external_path(ui_file);
1411 os << "\\ui_file \"" << path << "\"\n";
1415 case RC_AUTOREGIONDELETE:
1416 if (ignore_system_lyxrc ||
1417 auto_region_delete != system_lyxrc.auto_region_delete) {
1418 os << "# Set to false to inhibit automatic replacement of\n"
1419 << "# the current selection.\n"
1420 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1425 case RC_AUTORESET_OPTIONS:
1426 if (ignore_system_lyxrc ||
1427 auto_reset_options != system_lyxrc.auto_reset_options) {
1428 os << "# Set to false to inhibit automatic reset of\n"
1429 << "# the class options to defaults on class change.\n"
1430 << "\\auto_reset_options "
1431 << convert<string>(auto_reset_options)
1437 if (ignore_system_lyxrc ||
1438 autosave != system_lyxrc.autosave) {
1439 os << "# The time interval between auto-saves in seconds.\n"
1440 << "\\autosave " << autosave << '\n';
1444 case RC_DISPLAY_GRAPHICS:
1445 if (ignore_system_lyxrc ||
1446 display_graphics != system_lyxrc.display_graphics) {
1447 os << "# Display graphics within LyX\n"
1449 << "\\display_graphics "
1450 << (display_graphics ? "true" : "false")
1455 case RC_SORT_LAYOUTS:
1456 if (ignore_system_lyxrc ||
1457 sort_layouts != system_lyxrc.sort_layouts) {
1458 os << "# Sort layouts alphabetically.\n"
1459 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1463 case RC_GROUP_LAYOUTS:
1464 if (ignore_system_lyxrc ||
1465 group_layouts != system_lyxrc.group_layouts) {
1466 os << "# Group layouts by their category.\n"
1467 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1471 case RC_VIEWDVI_PAPEROPTION:
1472 if (ignore_system_lyxrc ||
1473 view_dvi_paper_option
1474 != system_lyxrc.view_dvi_paper_option) {
1475 os << "# Options used to specify paper size to the\n"
1476 << "# view_dvi_command (e.g. -paper)\n"
1477 << "\\view_dvi_paper_option \""
1478 << view_dvi_paper_option << "\"\n";
1482 case RC_DEFAULT_PAPERSIZE:
1483 if (ignore_system_lyxrc ||
1484 default_papersize != system_lyxrc.default_papersize) {
1485 os << "# The default papersize to use.\n"
1486 << "\\default_papersize \"";
1487 switch (default_papersize) {
1489 os << "default"; break;
1490 case PAPER_USLETTER:
1491 os << "usletter"; break;
1493 os << "legal"; break;
1494 case PAPER_USEXECUTIVE:
1495 os << "executive"; break;
1528 case PAPER_JISB6: break;
1534 case RC_CHKTEX_COMMAND:
1535 if (ignore_system_lyxrc ||
1536 chktex_command != system_lyxrc.chktex_command) {
1537 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1541 case RC_BIBTEX_ALTERNATIVES: {
1542 CommandSet::const_iterator it = bibtex_alternatives.begin();
1543 CommandSet::const_iterator end = bibtex_alternatives.end();
1544 for ( ; it != end; ++it) {
1545 if (ignore_system_lyxrc
1546 || !system_lyxrc.bibtex_alternatives.count(*it))
1547 os << "\\bibtex_alternatives \""
1553 case RC_BIBTEX_COMMAND:
1554 if (ignore_system_lyxrc ||
1555 bibtex_command != system_lyxrc.bibtex_command) {
1556 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1560 case RC_JBIBTEX_COMMAND:
1561 if (ignore_system_lyxrc ||
1562 jbibtex_command != system_lyxrc.jbibtex_command) {
1563 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1567 case RC_INDEX_ALTERNATIVES: {
1568 CommandSet::const_iterator it = index_alternatives.begin();
1569 CommandSet::const_iterator end = index_alternatives.end();
1570 for ( ; it != end; ++it) {
1571 if (ignore_system_lyxrc
1572 || !system_lyxrc.index_alternatives.count(*it))
1573 os << "\\index_alternatives \""
1579 case RC_INDEX_COMMAND:
1580 if (ignore_system_lyxrc ||
1581 index_command != system_lyxrc.index_command) {
1582 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1586 case RC_JINDEX_COMMAND:
1587 if (ignore_system_lyxrc ||
1588 jindex_command != system_lyxrc.jindex_command) {
1589 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1593 case RC_SPLITINDEX_COMMAND:
1594 if (ignore_system_lyxrc ||
1595 splitindex_command != system_lyxrc.splitindex_command) {
1596 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1600 case RC_NOMENCL_COMMAND:
1601 if (ignore_system_lyxrc ||
1602 nomencl_command != system_lyxrc.nomencl_command) {
1603 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1607 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1608 if (ignore_system_lyxrc ||
1609 windows_style_tex_paths != system_lyxrc.windows_style_tex_paths) {
1610 os << "\\tex_expects_windows_paths "
1611 << convert<string>(windows_style_tex_paths) << '\n';
1615 case RC_TEX_ALLOWS_SPACES:
1616 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1617 os << "\\tex_allows_spaces "
1618 << convert<string>(tex_allows_spaces) << '\n';
1623 if (ignore_system_lyxrc ||
1624 use_kbmap != system_lyxrc.use_kbmap) {
1625 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1629 case RC_KBMAP_PRIMARY:
1630 if (ignore_system_lyxrc ||
1631 primary_kbmap != system_lyxrc.primary_kbmap) {
1632 string const path = os::external_path(primary_kbmap);
1633 os << "\\kbmap_primary \"" << path << "\"\n";
1637 case RC_KBMAP_SECONDARY:
1638 if (ignore_system_lyxrc ||
1639 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1640 string const path = os::external_path(secondary_kbmap);
1641 os << "\\kbmap_secondary \"" << path << "\"\n";
1646 if (ignore_system_lyxrc ||
1647 lyxpipes != system_lyxrc.lyxpipes) {
1648 string const path = os::external_path(lyxpipes);
1649 os << "\\serverpipe \"" << path << "\"\n";
1653 case RC_DATE_INSERT_FORMAT:
1654 if (ignore_system_lyxrc ||
1655 date_insert_format != system_lyxrc.date_insert_format) {
1656 os << "\\date_insert_format \"" << date_insert_format
1663 os << "\\user_name \"" << user_name << "\"\n";
1668 os << "\\user_email \"" << user_email << "\"\n";
1672 case RC_SHOW_BANNER:
1673 if (ignore_system_lyxrc ||
1674 show_banner != system_lyxrc.show_banner) {
1675 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1681 if (ignore_system_lyxrc ||
1682 preview != system_lyxrc.preview) {
1688 case PREVIEW_NO_MATH:
1695 os << "\\preview " << status << '\n';
1700 case RC_PREVIEW_HASHED_LABELS:
1701 if (ignore_system_lyxrc ||
1702 preview_hashed_labels !=
1703 system_lyxrc.preview_hashed_labels) {
1704 os << "\\preview_hashed_labels "
1705 << convert<string>(preview_hashed_labels) << '\n';
1710 case RC_PREVIEW_SCALE_FACTOR:
1711 if (ignore_system_lyxrc ||
1712 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1713 os << "\\preview_scale_factor "
1714 << preview_scale_factor << '\n';
1719 case RC_USE_CONVERTER_CACHE:
1720 if (ignore_system_lyxrc ||
1721 use_converter_cache != system_lyxrc.use_converter_cache) {
1722 os << "\\use_converter_cache "
1723 << convert<string>(use_converter_cache) << '\n';
1728 case RC_CONVERTER_CACHE_MAXAGE:
1729 if (ignore_system_lyxrc ||
1730 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1731 os << "\\converter_cache_maxage "
1732 << converter_cache_maxage << '\n';
1738 << "# SCREEN & FONTS SECTION ############################\n"
1742 if (ignore_system_lyxrc ||
1743 icon_set != system_lyxrc.icon_set) {
1744 os << "\\icon_set \"" << icon_set
1751 if (ignore_system_lyxrc ||
1752 dpi != system_lyxrc.dpi) {
1753 os << "\\screen_dpi " << dpi << '\n';
1757 case RC_SCREEN_ZOOM:
1758 if (ignore_system_lyxrc ||
1759 zoom != system_lyxrc.zoom) {
1760 os << "\\screen_zoom " << zoom << '\n';
1764 case RC_GEOMETRY_SESSION:
1765 if (ignore_system_lyxrc ||
1766 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1767 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1772 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1773 if (ignore_system_lyxrc ||
1774 cursor_follows_scrollbar
1775 != system_lyxrc.cursor_follows_scrollbar) {
1776 os << "\\cursor_follows_scrollbar "
1777 << convert<string>(cursor_follows_scrollbar) << '\n';
1781 case RC_CURSOR_WIDTH:
1782 if (ignore_system_lyxrc ||
1784 != system_lyxrc.cursor_width) {
1785 os << "\\cursor_width "
1786 << cursor_width << '\n';
1790 case RC_SCROLL_BELOW_DOCUMENT:
1791 if (ignore_system_lyxrc ||
1792 scroll_below_document
1793 != system_lyxrc.scroll_below_document) {
1794 os << "\\scroll_below_document "
1795 << convert<string>(scroll_below_document) << '\n';
1799 case RC_PARAGRAPH_MARKERS:
1800 if (ignore_system_lyxrc ||
1802 != system_lyxrc.paragraph_markers) {
1803 os << "\\paragraph_markers "
1804 << convert<string>(paragraph_markers) << '\n';
1808 case RC_MAC_DONTSWAP_CTRL_META:
1809 if (ignore_system_lyxrc ||
1810 mac_dontswap_ctrl_meta
1811 != system_lyxrc.mac_dontswap_ctrl_meta) {
1812 os << "\\mac_dontswap_ctrl_meta "
1813 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1817 case RC_MAC_LIKE_WORD_MOVEMENT:
1818 if (ignore_system_lyxrc ||
1819 mac_like_word_movement
1820 != system_lyxrc.mac_like_word_movement) {
1821 os << "\\mac_like_word_movement "
1822 << convert<string>(mac_like_word_movement) << '\n';
1826 case RC_MACRO_EDIT_STYLE:
1827 if (ignore_system_lyxrc ||
1829 != system_lyxrc.macro_edit_style) {
1830 os << "\\macro_edit_style ";
1831 switch (macro_edit_style) {
1832 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1833 case MACRO_EDIT_INLINE: os << "1\n"; break;
1834 case MACRO_EDIT_LIST: os << "2\n"; break;
1839 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1840 if (ignore_system_lyxrc ||
1841 dialogs_iconify_with_main
1842 != system_lyxrc.dialogs_iconify_with_main) {
1843 os << "\\dialogs_iconify_with_main "
1844 << convert<string>(dialogs_iconify_with_main) << '\n';
1848 case RC_SCREEN_FONT_ROMAN:
1849 if (ignore_system_lyxrc ||
1850 roman_font_name != system_lyxrc.roman_font_name) {
1851 os << "\\screen_font_roman \"" << roman_font_name
1856 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1857 if (ignore_system_lyxrc ||
1858 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1859 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1864 case RC_SCREEN_FONT_SANS:
1865 if (ignore_system_lyxrc ||
1866 sans_font_name != system_lyxrc.sans_font_name) {
1867 os << "\\screen_font_sans \"" << sans_font_name
1872 case RC_SCREEN_FONT_SANS_FOUNDRY:
1873 if (ignore_system_lyxrc ||
1874 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1875 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1880 case RC_SCREEN_FONT_TYPEWRITER:
1881 if (ignore_system_lyxrc ||
1882 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1883 os << "\\screen_font_typewriter \""
1884 << typewriter_font_name << "\"\n";
1888 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1889 if (ignore_system_lyxrc ||
1890 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1891 os << "\\screen_font_typewriter_foundry \""
1892 << typewriter_font_foundry << "\"\n";
1897 case RC_SCREEN_FONT_SCALABLE:
1898 if (ignore_system_lyxrc ||
1899 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1900 os << "\\screen_font_scalable "
1901 << convert<string>(use_scalable_fonts)
1906 case RC_SCREEN_FONT_SIZES:
1907 if (ignore_system_lyxrc ||
1908 font_sizes[FONT_SIZE_TINY]
1909 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1910 font_sizes[FONT_SIZE_SCRIPT]
1911 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1912 font_sizes[FONT_SIZE_FOOTNOTE]
1913 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1914 font_sizes[FONT_SIZE_SMALL]
1915 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1916 font_sizes[FONT_SIZE_NORMAL]
1917 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1918 font_sizes[FONT_SIZE_LARGE]
1919 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1920 font_sizes[FONT_SIZE_LARGER]
1921 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1922 font_sizes[FONT_SIZE_LARGEST]
1923 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1924 font_sizes[FONT_SIZE_HUGE]
1925 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1926 font_sizes[FONT_SIZE_HUGER]
1927 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1928 os.setf(ios::fixed);
1930 os << "\\screen_font_sizes"
1931 << ' ' << font_sizes[FONT_SIZE_TINY]
1932 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1933 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1934 << ' ' << font_sizes[FONT_SIZE_SMALL]
1935 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1936 << ' ' << font_sizes[FONT_SIZE_LARGE]
1937 << ' ' << font_sizes[FONT_SIZE_LARGER]
1938 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1939 << ' ' << font_sizes[FONT_SIZE_HUGE]
1940 << ' ' << font_sizes[FONT_SIZE_HUGER]
1945 case RC_FULL_SCREEN_LIMIT:
1946 if (ignore_system_lyxrc ||
1947 full_screen_limit != system_lyxrc.full_screen_limit) {
1948 os << "\\fullscreen_limit "
1949 << convert<string>(full_screen_limit)
1954 case RC_FULL_SCREEN_TOOLBARS:
1955 if (ignore_system_lyxrc ||
1956 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1957 os << "\\fullscreen_toolbars "
1958 << convert<string>(full_screen_toolbars)
1963 case RC_FULL_SCREEN_SCROLLBAR:
1964 if (ignore_system_lyxrc ||
1965 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1966 os << "\\fullscreen_scrollbar "
1967 << convert<string>(full_screen_scrollbar)
1972 case RC_FULL_SCREEN_TABBAR:
1973 if (ignore_system_lyxrc ||
1974 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1975 os << "\\fullscreen_tabbar "
1976 << convert<string>(full_screen_tabbar)
1981 case RC_FULL_SCREEN_MENUBAR:
1982 if (ignore_system_lyxrc ||
1983 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1984 os << "\\fullscreen_menubar "
1985 << convert<string>(full_screen_menubar)
1990 case RC_FULL_SCREEN_WIDTH:
1991 if (ignore_system_lyxrc ||
1992 full_screen_width != system_lyxrc.full_screen_width) {
1993 os << "\\fullscreen_width "
1994 << convert<string>(full_screen_width)
1999 case RC_OPEN_BUFFERS_IN_TABS:
2000 if (ignore_system_lyxrc ||
2001 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
2002 os << "\\open_buffers_in_tabs "
2003 << convert<string>(open_buffers_in_tabs)
2008 case RC_SINGLE_CLOSE_TAB_BUTTON:
2009 if (ignore_system_lyxrc ||
2010 single_close_tab_button != system_lyxrc.single_close_tab_button) {
2011 os << "\\single_close_tab_button "
2012 << convert<string>(single_close_tab_button)
2017 case RC_SINGLE_INSTANCE:
2018 if (ignore_system_lyxrc ||
2019 single_instance != system_lyxrc.single_instance) {
2020 os << "\\single_instance "
2021 << convert<string>(single_instance)
2026 case RC_FORWARD_SEARCH_DVI:
2027 if (ignore_system_lyxrc ||
2028 forward_search_dvi != system_lyxrc.forward_search_dvi) {
2029 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
2033 case RC_FORWARD_SEARCH_PDF:
2034 if (ignore_system_lyxrc ||
2035 forward_search_pdf != system_lyxrc.forward_search_pdf) {
2036 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
2042 << "# COLOR SECTION ###################################\n"
2046 for (int i = 0; i < Color_ignore; ++i) {
2047 ColorCode lc = static_cast<ColorCode>(i);
2048 string const col = lcolor.getX11Name(lc);
2049 if (ignore_system_lyxrc
2050 || col != system_lcolor.getX11Name(lc)) {
2051 os << "\\set_color \""
2052 << lcolor.getLyXName(lc) << "\" \""
2060 << "# PRINTER SECTION ###################################\n"
2064 if (ignore_system_lyxrc ||
2065 printer != system_lyxrc.printer) {
2066 os << "\\printer \"" << printer << "\"\n";
2070 case RC_PRINT_ADAPTOUTPUT:
2071 if (ignore_system_lyxrc ||
2072 print_adapt_output != system_lyxrc.print_adapt_output) {
2073 os << "\\print_adapt_output "
2074 << convert<string>(print_adapt_output)
2079 case RC_PRINT_COMMAND:
2080 if (ignore_system_lyxrc ||
2081 print_command != system_lyxrc.print_command) {
2082 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
2086 case RC_PRINTEXSTRAOPTIONS:
2087 if (ignore_system_lyxrc ||
2088 print_extra_options != system_lyxrc.print_extra_options) {
2089 os << "\\print_extra_options \"" << print_extra_options
2094 case RC_PRINTSPOOL_COMMAND:
2095 if (ignore_system_lyxrc ||
2096 print_spool_command != system_lyxrc.print_spool_command) {
2097 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
2102 case RC_PRINTSPOOL_PRINTERPREFIX:
2103 if (ignore_system_lyxrc ||
2104 print_spool_printerprefix
2105 != system_lyxrc.print_spool_printerprefix) {
2106 os << "\\print_spool_printerprefix \""
2107 << print_spool_printerprefix << "\"\n";
2111 case RC_PRINTEVENPAGEFLAG:
2112 if (ignore_system_lyxrc ||
2113 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
2114 os << "\\print_evenpage_flag \"" << print_evenpage_flag
2119 case RC_PRINTODDPAGEFLAG:
2120 if (ignore_system_lyxrc ||
2121 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
2122 os << "\\print_oddpage_flag \"" << print_oddpage_flag
2127 case RC_PRINTREVERSEFLAG:
2128 if (ignore_system_lyxrc ||
2129 print_reverse_flag != system_lyxrc.print_reverse_flag) {
2130 os << "\\print_reverse_flag \"" << print_reverse_flag
2135 case RC_PRINTLANDSCAPEFLAG:
2136 if (ignore_system_lyxrc ||
2137 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2138 os << "\\print_landscape_flag \"" << print_landscape_flag
2143 case RC_PRINTPAGERANGEFLAG:
2144 if (ignore_system_lyxrc ||
2145 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
2146 os << "\\print_pagerange_flag \"" << print_pagerange_flag
2151 case RC_PRINTCOPIESFLAG:
2152 if (ignore_system_lyxrc ||
2153 print_copies_flag != system_lyxrc.print_copies_flag) {
2154 os << "\\print_copies_flag \"" << print_copies_flag
2159 case RC_PRINTCOLLCOPIESFLAG:
2160 if (ignore_system_lyxrc ||
2161 print_collcopies_flag
2162 != system_lyxrc.print_collcopies_flag) {
2163 os << "\\print_collcopies_flag \""
2164 << print_collcopies_flag
2169 case RC_PRINTPAPERFLAG:
2170 if (ignore_system_lyxrc ||
2171 print_paper_flag != system_lyxrc.print_paper_flag) {
2172 os << "\\print_paper_flag \"" << print_paper_flag
2177 case RC_PRINTPAPERDIMENSIONFLAG:
2178 if (ignore_system_lyxrc ||
2179 print_paper_dimension_flag
2180 != system_lyxrc.print_paper_dimension_flag) {
2181 os << "\\print_paper_dimension_flag \""
2182 << print_paper_dimension_flag << "\"\n";
2186 case RC_PRINTTOPRINTER:
2187 if (ignore_system_lyxrc ||
2188 print_to_printer != system_lyxrc.print_to_printer) {
2189 os << "\\print_to_printer \"" << print_to_printer
2194 case RC_PRINTTOFILE:
2195 if (ignore_system_lyxrc ||
2196 print_to_file != system_lyxrc.print_to_file) {
2197 string const path = os::external_path(print_to_file);
2198 os << "\\print_to_file \"" << path << "\"\n";
2202 case RC_PRINTFILEEXTENSION:
2203 if (ignore_system_lyxrc ||
2204 print_file_extension != system_lyxrc.print_file_extension) {
2205 os << "\\print_file_extension \""
2206 << print_file_extension
2213 << "# TEX SECTION #######################################\n"
2216 case RC_FONT_ENCODING:
2217 if (ignore_system_lyxrc ||
2218 fontenc != system_lyxrc.fontenc) {
2219 os << "\\font_encoding \"" << fontenc << "\"\n";
2224 case RC_FORCE_PAINT_SINGLE_CHAR:
2225 if (ignore_system_lyxrc ||
2226 force_paint_single_char != system_lyxrc.force_paint_single_char) {
2227 os << "\\force_paint_single_char \"" << force_paint_single_char << "\"\n";
2233 << "# FILE SECTION ######################################\n"
2236 case RC_DOCUMENTPATH:
2237 if (ignore_system_lyxrc ||
2238 document_path != system_lyxrc.document_path) {
2239 string const path = os::external_path(document_path);
2240 os << "\\document_path \"" << path << "\"\n";
2244 case RC_USELASTFILEPOS:
2245 if (ignore_system_lyxrc ||
2246 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2247 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2252 case RC_LOADSESSION:
2253 if (ignore_system_lyxrc ||
2254 load_session != system_lyxrc.load_session) {
2255 os << "\\load_session " << convert<string>(load_session)
2260 case RC_MOUSE_WHEEL_SPEED:
2261 if (ignore_system_lyxrc ||
2262 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2263 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2267 case RC_COMPLETION_INLINE_DELAY:
2268 if (ignore_system_lyxrc ||
2269 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2270 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2274 case RC_COMPLETION_INLINE_MATH:
2275 if (ignore_system_lyxrc ||
2276 completion_inline_math != system_lyxrc.completion_inline_math) {
2277 os << "\\completion_inline_math "
2278 << convert<string>(completion_inline_math) << '\n';
2282 case RC_COMPLETION_INLINE_TEXT:
2283 if (ignore_system_lyxrc ||
2284 completion_inline_text != system_lyxrc.completion_inline_text) {
2285 os << "\\completion_inline_text "
2286 << convert<string>(completion_inline_text) << '\n';
2290 case RC_COMPLETION_INLINE_DOTS:
2291 if (ignore_system_lyxrc ||
2292 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2293 os << "\\completion_inline_dots "
2294 << convert<string>(completion_inline_dots) << '\n';
2298 case RC_AUTOCORRECTION_MATH:
2299 if (ignore_system_lyxrc ||
2300 autocorrection_math != system_lyxrc.autocorrection_math) {
2301 os << "\\autocorrection_math "
2302 << convert<string>(autocorrection_math) << '\n';
2306 case RC_COMPLETION_POPUP_DELAY:
2307 if (ignore_system_lyxrc ||
2308 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2309 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2313 case RC_COMPLETION_POPUP_MATH:
2314 if (ignore_system_lyxrc ||
2315 completion_popup_math != system_lyxrc.completion_popup_math) {
2316 os << "\\completion_popup_math "
2317 << convert<string>(completion_popup_math) << '\n';
2321 case RC_COMPLETION_POPUP_TEXT:
2322 if (ignore_system_lyxrc ||
2323 completion_popup_text != system_lyxrc.completion_popup_text) {
2324 os << "\\completion_popup_text "
2325 << convert<string>(completion_popup_text) << '\n';
2329 case RC_COMPLETION_CURSOR_TEXT:
2330 if (ignore_system_lyxrc ||
2331 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2332 os << "\\completion_cursor_text "
2333 << convert<string>(completion_cursor_text) << '\n';
2337 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2338 if (ignore_system_lyxrc ||
2339 completion_popup_after_complete
2340 != system_lyxrc.completion_popup_after_complete) {
2341 os << "\\completion_popup_after_complete "
2342 << convert<string>(completion_popup_after_complete) << '\n';
2346 case RC_NUMLASTFILES:
2347 if (ignore_system_lyxrc ||
2348 num_lastfiles != system_lyxrc.num_lastfiles) {
2349 os << "\\num_lastfiles " << num_lastfiles << '\n';
2353 case RC_CHECKLASTFILES:
2354 if (ignore_system_lyxrc ||
2355 check_lastfiles != system_lyxrc.check_lastfiles) {
2356 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2361 case RC_EXAMPLEPATH:
2362 if (ignore_system_lyxrc ||
2363 example_path != system_lyxrc.example_path) {
2364 string const path = os::external_path(example_path);
2365 os << "\\example_path \"" << path << "\"\n";
2369 case RC_TEMPLATEPATH:
2370 if (ignore_system_lyxrc ||
2371 template_path != system_lyxrc.template_path) {
2372 string const path = os::external_path(template_path);
2373 os << "\\template_path \"" << path << "\"\n";
2377 case RC_TEMPDIRPATH:
2378 if (ignore_system_lyxrc ||
2379 tempdir_path != system_lyxrc.tempdir_path) {
2380 string const path = os::external_path(tempdir_path);
2381 os << "\\tempdir_path \"" << path << "\"\n";
2385 case RC_THESAURUSDIRPATH:
2386 if (ignore_system_lyxrc ||
2387 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2388 string const path = os::external_path(thesaurusdir_path);
2389 os << "\\thesaurusdir_path \"" << path << "\"\n";
2393 case RC_HUNSPELLDIR_PATH:
2394 if (ignore_system_lyxrc ||
2395 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2396 string const path = os::external_path(hunspelldir_path);
2397 os << "\\hunspelldir_path \"" << path << "\"\n";
2401 case RC_PLAINTEXT_LINELEN:
2402 if (ignore_system_lyxrc ||
2403 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2404 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2408 case RC_MAKE_BACKUP:
2409 if (ignore_system_lyxrc ||
2410 make_backup != system_lyxrc.make_backup) {
2411 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2415 case RC_SAVE_COMPRESSED:
2416 if (ignore_system_lyxrc ||
2417 save_compressed != system_lyxrc.save_compressed) {
2418 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2422 case RC_BACKUPDIR_PATH:
2423 if (ignore_system_lyxrc ||
2424 backupdir_path != system_lyxrc.backupdir_path) {
2425 string const path = os::external_path(backupdir_path);
2426 os << "\\backupdir_path \"" << path << "\"\n";
2432 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2436 << "# SPELLCHECKER SECTION ##############################\n"
2439 case RC_ACCEPT_COMPOUND:
2440 if (ignore_system_lyxrc ||
2441 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2442 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2448 if (ignore_system_lyxrc ||
2449 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2450 os << "\\alternate_language \"" << spellchecker_alt_lang
2456 if (ignore_system_lyxrc ||
2457 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2458 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2462 case RC_USE_SYSTEM_COLORS:
2463 if (ignore_system_lyxrc ||
2464 use_system_colors != system_lyxrc.use_system_colors) {
2465 os << "\\use_system_colors "
2466 << convert<string>(use_system_colors)
2471 case RC_USE_TOOLTIP:
2472 if (ignore_system_lyxrc ||
2473 use_tooltip != system_lyxrc.use_tooltip) {
2474 os << "\\use_tooltip "
2475 << convert<string>(use_tooltip)
2480 case RC_USE_PIXMAP_CACHE:
2481 if (ignore_system_lyxrc ||
2482 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2483 os << "\\use_pixmap_cache "
2484 << convert<string>(use_pixmap_cache)
2491 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2496 case RC_DEFAULT_DECIMAL_POINT:
2497 if (ignore_system_lyxrc ||
2498 default_decimal_point != system_lyxrc.default_decimal_point) {
2499 os << "\\default_decimal_point " << default_decimal_point << '\n';
2504 case RC_SPELLCHECKER:
2505 if (ignore_system_lyxrc ||
2506 spellchecker != system_lyxrc.spellchecker) {
2507 os << "\\spellchecker " << spellchecker << '\n';
2512 case RC_SPELLCHECK_CONTINUOUSLY:
2513 if (ignore_system_lyxrc ||
2514 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2515 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2521 case RC_SPELLCHECK_NOTES:
2522 if (ignore_system_lyxrc ||
2523 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2524 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2530 case RC_RTL_SUPPORT:
2531 if (ignore_system_lyxrc ||
2532 rtl_support != system_lyxrc.rtl_support) {
2533 os << "\\rtl " << convert<string>(rtl_support) << '\n';
2537 case RC_VISUAL_CURSOR:
2538 if (ignore_system_lyxrc ||
2539 visual_cursor != system_lyxrc.visual_cursor) {
2540 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2544 case RC_LANGUAGE_CUSTOM_PACKAGE:
2545 if (ignore_system_lyxrc ||
2546 language_custom_package != system_lyxrc.language_custom_package) {
2547 os << "\\language_custom_package \"" << language_custom_package
2552 case RC_LANGUAGE_GLOBAL_OPTIONS:
2553 if (ignore_system_lyxrc ||
2554 language_global_options
2555 != system_lyxrc.language_global_options) {
2556 os << "\\language_global_options \""
2557 << convert<string>(language_global_options)
2562 case RC_LANGUAGE_PACKAGE_SELECTION:
2563 if (ignore_system_lyxrc ||
2564 language_package_selection != system_lyxrc.language_package_selection) {
2565 os << "\\language_package_selection ";
2566 switch (language_package_selection) {
2583 case RC_LANGUAGE_COMMAND_BEGIN:
2584 if (ignore_system_lyxrc ||
2585 language_command_begin
2586 != system_lyxrc.language_command_begin) {
2587 os << "\\language_command_begin \""
2588 << language_command_begin
2593 case RC_LANGUAGE_COMMAND_END:
2594 if (ignore_system_lyxrc ||
2595 language_command_end
2596 != system_lyxrc.language_command_end) {
2597 os << "\\language_command_end \"" << language_command_end
2602 case RC_LANGUAGE_COMMAND_LOCAL:
2603 if (ignore_system_lyxrc ||
2604 language_command_local
2605 != system_lyxrc.language_command_local) {
2606 os << "\\language_command_local \""
2607 << language_command_local
2612 case RC_LANGUAGE_AUTO_BEGIN:
2613 if (ignore_system_lyxrc ||
2614 language_auto_begin != system_lyxrc.language_auto_begin) {
2615 os << "\\language_auto_begin "
2616 << convert<string>(language_auto_begin) << '\n';
2620 case RC_LANGUAGE_AUTO_END:
2621 if (ignore_system_lyxrc ||
2622 language_auto_end != system_lyxrc.language_auto_end) {
2623 os << "\\language_auto_end "
2624 << convert<string>(language_auto_end) << '\n';
2628 case RC_MARK_FOREIGN_LANGUAGE:
2629 if (ignore_system_lyxrc ||
2630 mark_foreign_language
2631 != system_lyxrc.mark_foreign_language) {
2632 os << "\\mark_foreign_language " <<
2633 convert<string>(mark_foreign_language) << '\n';
2639 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2642 case RC_AUTO_NUMBER:
2643 if (ignore_system_lyxrc ||
2644 auto_number != system_lyxrc.auto_number) {
2645 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2649 case RC_DEFAULT_LANGUAGE:
2650 if (ignore_system_lyxrc ||
2651 default_language != system_lyxrc.default_language) {
2652 os << "\\default_language " << default_language << '\n';
2656 case RC_GUI_LANGUAGE:
2657 if (ignore_system_lyxrc ||
2658 gui_language != system_lyxrc.gui_language) {
2659 os << "\\gui_language " << gui_language << '\n';
2663 case RC_EXPORT_OVERWRITE:
2664 if (ignore_system_lyxrc ||
2665 export_overwrite != system_lyxrc.export_overwrite) {
2667 switch (export_overwrite) {
2678 os << "\\export_overwrite " << status << '\n';
2683 case RC_SCROLL_WHEEL_ZOOM:
2684 if (ignore_system_lyxrc ||
2685 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2687 switch (scroll_wheel_zoom) {
2688 case SCROLL_WHEEL_ZOOM_OFF:
2691 case SCROLL_WHEEL_ZOOM_CTRL:
2694 case SCROLL_WHEEL_ZOOM_SHIFT:
2697 case SCROLL_WHEEL_ZOOM_ALT:
2701 os << "\\scroll_wheel_zoom " << status << '\n';
2707 << "# FORMATS SECTION ##########################\n"
2711 // New/modified formats
2712 for (Formats::const_iterator cit = formats.begin();
2713 cit != formats.end(); ++cit) {
2714 Format const * format =
2715 system_formats.getFormat(cit->name());
2717 format->extension() != cit->extension() ||
2718 format->prettyname() != cit->prettyname() ||
2719 format->shortcut() != cit->shortcut() ||
2720 format->viewer() != cit->viewer() ||
2721 format->editor() != cit->editor() ||
2722 format->documentFormat() != cit->documentFormat() ||
2723 format->vectorFormat() != cit->vectorFormat() ||
2724 format->inExportMenu() != cit->inExportMenu()) {
2725 os << "\\format \"" << cit->name() << "\" \""
2726 << cit->extension() << "\" \""
2727 << cit->prettyname() << "\" \""
2728 << cit->shortcut() << "\" \""
2729 << escapeCommand(cit->viewer()) << "\" \""
2730 << escapeCommand(cit->editor()) << "\" \"";
2731 vector<string> flags;
2732 if (cit->documentFormat())
2733 flags.push_back("document");
2734 if (cit->vectorFormat())
2735 flags.push_back("vector");
2736 if (cit->inExportMenu())
2737 flags.push_back("menu=export");
2739 os << getStringFromVector(flags);
2744 // Look for deleted formats
2745 for (Formats::const_iterator cit = system_formats.begin();
2746 cit != system_formats.end(); ++cit)
2747 if (!formats.getFormat(cit->name()))
2748 os << "\\format \"" << cit->name()
2749 << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2752 case RC_VIEWER_ALTERNATIVES: {
2753 Alternatives::const_iterator it = viewer_alternatives.begin();
2754 Alternatives::const_iterator const en = viewer_alternatives.end();
2755 Alternatives::const_iterator const sysend =
2756 system_lyxrc.viewer_alternatives.end();
2757 for (; it != en; ++it) {
2758 string const & fmt = it->first;
2759 CommandSet const & cmd = it->second;
2760 CommandSet::const_iterator sit = cmd.begin();
2761 CommandSet::const_iterator const sen = cmd.end();
2762 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2763 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2764 system_lyxrc.viewer_alternatives.find(fmt);
2765 for (; sit != sen; ++sit) {
2766 string const & cmd = *sit;
2767 if (ignore_system_lyxrc
2768 || sysfmt == sysend // format not found
2769 || sysfmt->second.count(cmd) == 0 // this command not found
2771 os << "\\viewer_alternatives " << fmt << " " << cmd << "\n";
2777 case RC_EDITOR_ALTERNATIVES: {
2778 Alternatives::const_iterator it = editor_alternatives.begin();
2779 Alternatives::const_iterator const en = editor_alternatives.end();
2780 Alternatives::const_iterator const sysend =
2781 system_lyxrc.editor_alternatives.end();
2782 for (; it != en; ++it) {
2783 string const & fmt = it->first;
2784 CommandSet const & cmd = it->second;
2785 CommandSet::const_iterator sit = cmd.begin();
2786 CommandSet::const_iterator const sen = cmd.end();
2787 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2788 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2789 system_lyxrc.editor_alternatives.find(fmt);
2790 for (; sit != sen; ++sit) {
2791 string const & cmd = *sit;
2792 if (ignore_system_lyxrc
2793 || sysfmt == sysend // format not found
2794 || sysfmt->second.count(cmd) == 0 // this command not found
2796 os << "\\editor_alternatives " << fmt << " " << cmd << "\n";
2802 case RC_DEFAULT_VIEW_FORMAT:
2803 if (ignore_system_lyxrc ||
2804 default_view_format != system_lyxrc.default_view_format) {
2805 os << "\\default_view_format " << default_view_format << '\n';
2815 << "# CONVERTERS SECTION ##########################\n"
2819 // Look for new converters
2820 for (Converters::const_iterator cit = theConverters().begin();
2821 cit != theConverters().end(); ++cit) {
2822 Converter const * converter =
2823 theSystemConverters().getConverter(cit->from,
2826 converter->command != cit->command ||
2827 converter->flags != cit->flags)
2828 os << "\\converter \"" << cit->from << "\" \""
2829 << cit->to << "\" \""
2830 << escapeCommand(cit->command) << "\" \""
2831 << cit->flags << "\"\n";
2834 // New/modifed converters
2835 for (Converters::const_iterator cit = theSystemConverters().begin();
2836 cit != theSystemConverters().end(); ++cit)
2837 if (!theConverters().getConverter(cit->from, cit->to))
2838 os << "\\converter \"" << cit->from
2839 << "\" \"" << cit->to << "\" \"\" \"\"\n";
2846 << "# COPIERS SECTION ##########################\n"
2849 // Look for new movers
2850 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2851 Movers::const_iterator const sysend = theSystemMovers().end();
2852 Movers::const_iterator it = theMovers().begin();
2853 Movers::const_iterator end = theMovers().end();
2855 for (; it != end; ++it) {
2856 Movers::const_iterator const sysit =
2857 find_if(sysbegin, sysend, SameMover(*it));
2858 if (sysit == sysend) {
2859 string const & fmt = it->first;
2860 string const & command =
2861 it->second.command();
2863 os << "\\copier " << fmt
2864 << " \"" << escapeCommand(command) << "\"\n";
2870 // We don't actually delete SpecialisedMover(s) from the
2871 // map, just clear their 'command', so there's no need
2872 // to test for anything else.
2879 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2881 // Why the switch you might ask. It is a trick to ensure that all
2882 // the elements in the LyXRCTags enum is handled. As you can see
2883 // there are no breaks at all. So it is just a huge fall-through.
2884 // The nice thing is that we will get a warning from the compiler
2885 // if we forget an element.
2886 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2888 case LyXRC::RC_ACCEPT_COMPOUND:
2889 case LyXRC::RC_ALT_LANG:
2890 case LyXRC::RC_PLAINTEXT_LINELEN:
2891 case LyXRC::RC_AUTOCORRECTION_MATH:
2892 case LyXRC::RC_AUTOREGIONDELETE:
2893 case LyXRC::RC_AUTORESET_OPTIONS:
2894 case LyXRC::RC_AUTOSAVE:
2895 case LyXRC::RC_AUTO_NUMBER:
2896 case LyXRC::RC_BACKUPDIR_PATH:
2897 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2898 case LyXRC::RC_BIBTEX_COMMAND:
2899 case LyXRC::RC_BINDFILE:
2900 case LyXRC::RC_CHECKLASTFILES:
2901 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2902 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2903 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2904 case LyXRC::RC_COMPLETION_INLINE_MATH:
2905 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2906 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2907 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2908 case LyXRC::RC_COMPLETION_POPUP_MATH:
2909 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2910 case LyXRC::RC_USELASTFILEPOS:
2911 case LyXRC::RC_LOADSESSION:
2912 case LyXRC::RC_CHKTEX_COMMAND:
2913 case LyXRC::RC_CONVERTER:
2914 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2915 case LyXRC::RC_COPIER:
2916 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2917 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2918 case LyXRC::RC_DATE_INSERT_FORMAT:
2919 case LyXRC::RC_DEFAULT_LANGUAGE:
2920 case LyXRC::RC_GUI_LANGUAGE:
2921 case LyXRC::RC_DEFAULT_PAPERSIZE:
2922 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2923 case LyXRC::RC_DEFFILE:
2924 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2925 case LyXRC::RC_DISPLAY_GRAPHICS:
2926 case LyXRC::RC_DOCUMENTPATH:
2927 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2928 FileName path(lyxrc_new.document_path);
2929 if (path.exists() && path.isDirectory())
2930 package().document_dir() = FileName(lyxrc.document_path);
2932 case LyXRC::RC_EDITOR_ALTERNATIVES:
2933 case LyXRC::RC_ESC_CHARS:
2934 case LyXRC::RC_EXAMPLEPATH:
2935 case LyXRC::RC_FONT_ENCODING:
2936 case LyXRC::RC_FORCE_PAINT_SINGLE_CHAR:
2937 case LyXRC::RC_FILEFORMAT:
2938 case LyXRC::RC_GROUP_LAYOUTS:
2939 case LyXRC::RC_HUNSPELLDIR_PATH:
2940 case LyXRC::RC_ICON_SET:
2941 if (lyxrc_orig.icon_set != lyxrc_new.icon_set) {
2942 lyxrc.icon_set = lyxrc_new.icon_set;
2944 case LyXRC::RC_INDEX_ALTERNATIVES:
2945 case LyXRC::RC_INDEX_COMMAND:
2946 case LyXRC::RC_JBIBTEX_COMMAND:
2947 case LyXRC::RC_JINDEX_COMMAND:
2948 case LyXRC::RC_NOMENCL_COMMAND:
2949 case LyXRC::RC_INPUT:
2950 case LyXRC::RC_KBMAP:
2951 case LyXRC::RC_KBMAP_PRIMARY:
2952 case LyXRC::RC_KBMAP_SECONDARY:
2953 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2954 case LyXRC::RC_LANGUAGE_AUTO_END:
2955 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2956 case LyXRC::RC_LANGUAGE_COMMAND_END:
2957 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2958 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2959 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2960 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2961 case LyXRC::RC_LYXRCFORMAT:
2962 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2963 case LyXRC::RC_MAC_LIKE_WORD_MOVEMENT:
2964 case LyXRC::RC_MACRO_EDIT_STYLE:
2965 case LyXRC::RC_MAKE_BACKUP:
2966 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2967 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2968 case LyXRC::RC_NUMLASTFILES:
2969 case LyXRC::RC_PARAGRAPH_MARKERS:
2970 case LyXRC::RC_PATH_PREFIX:
2971 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2972 prependEnvPath("PATH", lyxrc.path_prefix);
2974 case LyXRC::RC_PREVIEW:
2975 case LyXRC::RC_PREVIEW_HASHED_LABELS:
2976 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
2977 case LyXRC::RC_PRINTCOLLCOPIESFLAG:
2978 case LyXRC::RC_PRINTCOPIESFLAG:
2979 case LyXRC::RC_PRINTER:
2980 case LyXRC::RC_PRINTEVENPAGEFLAG:
2981 case LyXRC::RC_PRINTEXSTRAOPTIONS:
2982 case LyXRC::RC_PRINTFILEEXTENSION:
2983 case LyXRC::RC_PRINTLANDSCAPEFLAG:
2984 case LyXRC::RC_PRINTODDPAGEFLAG:
2985 case LyXRC::RC_PRINTPAGERANGEFLAG:
2986 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
2987 case LyXRC::RC_PRINTPAPERFLAG:
2988 case LyXRC::RC_PRINTREVERSEFLAG:
2989 case LyXRC::RC_PRINTSPOOL_COMMAND:
2990 case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
2991 case LyXRC::RC_PRINTTOFILE:
2992 case LyXRC::RC_PRINTTOPRINTER:
2993 case LyXRC::RC_PRINT_ADAPTOUTPUT:
2994 case LyXRC::RC_PRINT_COMMAND:
2995 case LyXRC::RC_RTL_SUPPORT:
2996 case LyXRC::RC_SAVE_COMPRESSED:
2997 case LyXRC::RC_SCREEN_DPI:
2998 case LyXRC::RC_SCREEN_FONT_ROMAN:
2999 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
3000 case LyXRC::RC_SCREEN_FONT_SANS:
3001 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
3002 case LyXRC::RC_SCREEN_FONT_SCALABLE:
3003 case LyXRC::RC_SCREEN_FONT_SIZES:
3004 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
3005 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3006 case LyXRC::RC_GEOMETRY_SESSION:
3007 case LyXRC::RC_SCREEN_ZOOM:
3008 case LyXRC::RC_SERVERPIPE:
3009 case LyXRC::RC_SET_COLOR:
3010 case LyXRC::RC_SHOW_BANNER:
3011 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
3012 case LyXRC::RC_SPELLCHECKER:
3013 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
3014 case LyXRC::RC_SPELLCHECK_NOTES:
3015 case LyXRC::RC_SPLITINDEX_COMMAND:
3016 case LyXRC::RC_TEMPDIRPATH:
3017 case LyXRC::RC_TEMPLATEPATH:
3018 case LyXRC::RC_TEX_ALLOWS_SPACES:
3019 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
3020 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
3021 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
3023 case LyXRC::RC_THESAURUSDIRPATH:
3024 case LyXRC::RC_UIFILE:
3025 case LyXRC::RC_USER_EMAIL:
3026 case LyXRC::RC_USER_NAME:
3027 case LyXRC::RC_USE_CONVERTER_CACHE:
3028 case LyXRC::RC_USE_SYSTEM_COLORS:
3029 case LyXRC::RC_USE_TOOLTIP:
3030 case LyXRC::RC_USE_PIXMAP_CACHE:
3031 case LyXRC::RC_VIEWDVI_PAPEROPTION:
3032 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
3033 case LyXRC::RC_SINGLE_INSTANCE:
3034 case LyXRC::RC_SORT_LAYOUTS:
3035 case LyXRC::RC_FULL_SCREEN_LIMIT:
3036 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
3037 case LyXRC::RC_FULL_SCREEN_MENUBAR:
3038 case LyXRC::RC_FULL_SCREEN_TABBAR:
3039 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
3040 case LyXRC::RC_FULL_SCREEN_WIDTH:
3041 case LyXRC::RC_VISUAL_CURSOR:
3042 case LyXRC::RC_VIEWER:
3043 case LyXRC::RC_VIEWER_ALTERNATIVES:
3044 case LyXRC::RC_FORWARD_SEARCH_DVI:
3045 case LyXRC::RC_FORWARD_SEARCH_PDF:
3046 case LyXRC::RC_EXPORT_OVERWRITE:
3047 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
3048 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3049 case LyXRC::RC_CURSOR_WIDTH:
3050 case LyXRC::RC_LAST:
3057 string const LyXRC::getDescription(LyXRCTags tag)
3062 case RC_ACCEPT_COMPOUND:
3063 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3067 str = _("Specify an alternate language. The default is to use the language of the document.");
3070 case RC_PLAINTEXT_LINELEN:
3071 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.");
3074 case RC_AUTOREGIONDELETE:
3075 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3078 case RC_AUTORESET_OPTIONS:
3079 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3083 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3086 case RC_AUTO_NUMBER:
3089 case RC_BACKUPDIR_PATH:
3090 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.");
3093 case RC_BIBTEX_COMMAND:
3094 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3097 case RC_JBIBTEX_COMMAND:
3098 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3102 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3105 case RC_CHECKLASTFILES:
3106 str = _("Select to check whether the lastfiles still exist.");
3109 case RC_CHKTEX_COMMAND:
3110 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3119 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3120 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.");
3123 case RC_CURSOR_WIDTH:
3124 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3127 case RC_SCROLL_BELOW_DOCUMENT:
3128 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");
3131 case RC_MAC_DONTSWAP_CTRL_META:
3132 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3135 case RC_MAC_LIKE_WORD_MOVEMENT:
3136 str = _("Use the Mac OS X conventions for the word-level cursor movement");
3139 case RC_SHOW_MACRO_LABEL:
3140 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3143 case RC_DATE_INSERT_FORMAT:
3144 //xgettext:no-c-format
3145 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3149 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3152 case RC_DEFAULT_VIEW_FORMAT:
3153 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3156 case RC_DEFAULT_LANGUAGE:
3157 str = _("New documents will be assigned this language.");
3160 case RC_DEFAULT_PAPERSIZE:
3161 str = _("Specify the default paper size.");
3164 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3165 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3168 case RC_DISPLAY_GRAPHICS:
3169 str = _("Select how LyX will display any graphics.");
3172 case RC_DOCUMENTPATH:
3173 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3177 str = _("Specify additional chars that can be part of a word.");
3180 case RC_EXAMPLEPATH:
3181 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3184 case RC_FONT_ENCODING:
3185 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3188 case RC_FORCE_PAINT_SINGLE_CHAR:
3189 str = _("Disable any kerning and ligatures for text drawing on screen.");
3195 case RC_INDEX_COMMAND:
3196 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\".");
3199 case RC_JINDEX_COMMAND:
3200 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3203 case RC_NOMENCL_COMMAND:
3204 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3211 case RC_KBMAP_PRIMARY:
3212 case RC_KBMAP_SECONDARY:
3213 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.");
3216 case RC_LANGUAGE_AUTO_BEGIN:
3217 str = _("Select if a language switching command is needed at the beginning of the document.");
3220 case RC_LANGUAGE_AUTO_END:
3221 str = _("Select if a language switching command is needed at the end of the document.");
3224 case RC_LANGUAGE_COMMAND_BEGIN:
3225 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.");
3228 case RC_LANGUAGE_COMMAND_END:
3229 str = _("The LaTeX command for changing back to the language of the document.");
3232 case RC_LANGUAGE_COMMAND_LOCAL:
3233 str = _("The LaTeX command for local changing of the language.");
3236 case RC_LANGUAGE_GLOBAL_OPTIONS:
3237 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3240 case RC_LANGUAGE_CUSTOM_PACKAGE:
3241 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3244 case RC_LANGUAGE_PACKAGE_SELECTION:
3245 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3248 case RC_USELASTFILEPOS:
3249 str = _("De-select if you do not want LyX to scroll to saved position.");
3252 case RC_LOADSESSION:
3253 str = _("De-select to prevent loading files opened from the last LyX session.");
3256 case RC_MAKE_BACKUP:
3257 str = _("De-select if you don't want LyX to create backup files.");
3260 case RC_MARK_FOREIGN_LANGUAGE:
3261 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3264 case RC_MOUSE_WHEEL_SPEED:
3265 str = bformat(_("The scrolling speed of the mouse wheel."),
3269 case RC_COMPLETION_POPUP_DELAY:
3270 str = _("The completion popup delay.");
3273 case RC_COMPLETION_POPUP_MATH:
3274 str = _("Select to display the completion popup in math mode.");
3277 case RC_COMPLETION_POPUP_TEXT:
3278 str = _("Select to display the completion popup in text mode.");
3281 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3282 str = _("Show the completion popup without delay after non-unique completion attempt.");
3285 case RC_COMPLETION_POPUP_TEXT:
3286 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3289 case RC_COMPLETION_POPUP_DELAY:
3290 str = _("The inline completion delay.");
3293 case RC_COMPLETION_INLINE_MATH:
3294 str = _("Select to display the inline completion in math mode.");
3297 case RC_COMPLETION_INLINE_TEXT:
3298 str = _("Select to display the inline completion in text mode.");
3301 case RC_COMPLETION_INLINE_DOTS:
3302 str = _("Use \"...\" to shorten long completions.");
3305 case RC_AUTOCORRECTION_MATH:
3306 str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
3309 case RC_NUMLASTFILES:
3310 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3314 case RC_PATH_PREFIX:
3315 str = _("Specify those directories which should be "
3316 "prepended to the PATH environment variable. "
3317 "Use the OS native format.");
3321 str = _("Shows a typeset preview of things such as math");
3324 case RC_PREVIEW_HASHED_LABELS:
3325 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3328 case RC_PREVIEW_SCALE_FACTOR:
3329 str = _("Scale the preview size to suit.");
3332 case RC_PRINTCOLLCOPIESFLAG:
3333 str = _("The option for specifying whether the copies should be collated.");
3336 case RC_PRINTCOPIESFLAG:
3337 str = _("The option for specifying the number of copies to print.");
3341 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
3344 case RC_PRINTEVENPAGEFLAG:
3345 str = _("The option to print only even pages.");
3348 case RC_PRINTEXSTRAOPTIONS:
3349 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
3352 case RC_PRINTFILEEXTENSION:
3353 str = _("Extension of printer program output file. Usually \".ps\".");
3356 case RC_PRINTLANDSCAPEFLAG:
3357 str = _("The option to print out in landscape.");
3360 case RC_PRINTODDPAGEFLAG:
3361 str = _("The option to print only odd pages.");
3364 case RC_PRINTPAGERANGEFLAG:
3365 str = _("The option for specifying a comma-separated list of pages to print.");
3368 case RC_PRINTPAPERDIMENSIONFLAG:
3369 str = _("Option to specify the dimensions of the print paper.");
3372 case RC_PRINTPAPERFLAG:
3373 str = _("The option to specify paper type.");
3376 case RC_PRINTREVERSEFLAG:
3377 str = _("The option to reverse the order of the pages printed.");
3380 case RC_PRINTSPOOL_COMMAND:
3381 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.");
3384 case RC_PRINTSPOOL_PRINTERPREFIX:
3385 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.");
3388 case RC_PRINTTOFILE:
3389 str = _("Option to pass to the print program to print to a file.");
3392 case RC_PRINTTOPRINTER:
3393 str = _("Option to pass to the print program to print on a specific printer.");
3396 case RC_PRINT_ADAPTOUTPUT:
3397 str = _("Select for LyX to pass the name of the destination printer to your print command.");
3400 case RC_PRINT_COMMAND:
3401 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
3404 case RC_RTL_SUPPORT:
3405 str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
3408 case RC_VISUAL_CURSOR:
3409 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3413 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3416 case RC_SCREEN_FONT_ROMAN:
3417 case RC_SCREEN_FONT_SANS:
3418 case RC_SCREEN_FONT_TYPEWRITER:
3419 str = _("The screen fonts used to display the text while editing.");
3422 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3423 case RC_SCREEN_FONT_SANS_FOUNDRY:
3424 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3427 case RC_SCREEN_FONT_SCALABLE:
3428 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.");
3431 case RC_SCREEN_FONT_SIZES:
3432 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3435 case RC_SCREEN_ZOOM:
3436 //xgettext:no-c-format
3437 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3440 case RC_GEOMETRY_SESSION:
3441 str = _("Allow session manager to save and restore windows geometry.");
3445 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3451 case RC_SHOW_BANNER:
3452 str = _("De-select if you don't want the startup banner.");
3455 case RC_TEMPDIRPATH:
3456 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3459 case RC_THESAURUSDIRPATH:
3460 str = _("This is the place where the files of the thesaurus library reside.");
3463 case RC_TEMPLATEPATH:
3464 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3467 case RC_TEX_ALLOWS_SPACES:
3470 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3474 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3483 case RC_USE_USE_SYSTEM_COLORS:
3484 str = _("Enable use the system colors for some things like main window background and selection.");
3487 case RC_USE_TOOLTIP:
3488 str = _("Enable the automatic appearance of tool tips in the work area.");
3491 case RC_USE_PIXMAP_CACHE:
3492 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3495 case RC_VIEWDVI_PAPEROPTION:
3496 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3511 // The global instance
3514 // The global copy of the system lyxrc entries (everything except preferences)