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"
30 #include "graphics/GraphicsTypes.h"
32 #include "support/convert.h"
33 #include "support/debug.h"
34 #include "support/environment.h"
35 #include "support/filetools.h"
36 #include "support/gettext.h"
37 #include "support/lstrings.h"
38 #include "support/os.h"
39 #include "support/userinfo.h"
45 using namespace lyx::support;
49 namespace os = support::os;
53 // when adding something to this array keep it sorted!
54 LexerKeyword lyxrcTags[] = {
55 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
56 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
57 { "\\alternate_language", LyXRC::RC_ALT_LANG },
58 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
59 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
60 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
61 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
62 { "\\autosave", LyXRC::RC_AUTOSAVE },
63 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
64 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
65 { "\\bind_file", LyXRC::RC_BINDFILE },
66 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
67 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
68 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
69 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
70 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
71 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
72 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
73 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
74 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
75 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
76 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
77 { "\\converter", LyXRC::RC_CONVERTER },
78 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
79 { "\\copier", LyXRC::RC_COPIER },
80 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
81 { "\\custom_export_command", LyXRC::RC_CUSTOM_EXPORT_COMMAND },
82 { "\\custom_export_format", LyXRC::RC_CUSTOM_EXPORT_FORMAT },
83 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
84 { "\\def_file", LyXRC::RC_DEFFILE },
85 { "\\default_language", LyXRC::RC_DEFAULT_LANGUAGE },
86 { "\\default_papersize", LyXRC::RC_DEFAULT_PAPERSIZE },
87 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
88 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
89 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
90 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
91 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
92 { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
93 { "\\format", LyXRC::RC_FORMAT },
94 { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT },
95 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
96 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
97 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
98 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
99 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
100 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
101 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
102 { "\\input", LyXRC::RC_INPUT },
103 { "\\kbmap", LyXRC::RC_KBMAP },
104 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
105 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
106 { "\\label_init_length", LyXRC::RC_LABEL_INIT_LENGTH },
107 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
108 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
109 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
110 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
111 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
112 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
113 { "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE },
114 { "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL },
115 { "\\load_session", LyXRC::RC_LOADSESSION },
116 { "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT },
117 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
118 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
119 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
120 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
121 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
122 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
123 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
124 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
125 { "\\personal_dictionary", LyXRC::RC_PERS_DICT },
126 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
127 { "\\plaintext_roff_command", LyXRC::RC_PLAINTEXT_ROFF_COMMAND },
128 { "\\preview", LyXRC::RC_PREVIEW },
129 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
130 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
131 { "\\print_adapt_output", LyXRC::RC_PRINT_ADAPTOUTPUT },
132 { "\\print_collcopies_flag", LyXRC::RC_PRINTCOLLCOPIESFLAG },
133 { "\\print_command", LyXRC::RC_PRINT_COMMAND },
134 { "\\print_copies_flag", LyXRC::RC_PRINTCOPIESFLAG },
135 { "\\print_evenpage_flag", LyXRC::RC_PRINTEVENPAGEFLAG },
136 { "\\print_extra_options", LyXRC::RC_PRINTEXSTRAOPTIONS },
137 { "\\print_file_extension", LyXRC::RC_PRINTFILEEXTENSION },
138 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
139 { "\\print_oddpage_flag", LyXRC::RC_PRINTODDPAGEFLAG },
140 { "\\print_pagerange_flag", LyXRC::RC_PRINTPAGERANGEFLAG },
141 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
142 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
143 { "\\print_reverse_flag", LyXRC::RC_PRINTREVERSEFLAG },
144 { "\\print_spool_command", LyXRC::RC_PRINTSPOOL_COMMAND },
145 { "\\print_spool_printerprefix", LyXRC::RC_PRINTSPOOL_PRINTERPREFIX },
146 { "\\print_to_file", LyXRC::RC_PRINTTOFILE },
147 { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER },
148 { "\\printer", LyXRC::RC_PRINTER },
149 { "\\rtl", LyXRC::RC_RTL_SUPPORT },
150 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
151 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
152 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
153 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
154 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
155 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
156 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
157 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
158 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
159 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
160 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
161 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
162 { "\\set_color", LyXRC::RC_SET_COLOR },
163 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
164 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
165 { "\\spell_command", LyXRC::RC_SPELL_COMMAND },
166 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
167 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
168 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
169 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
170 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
171 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
172 { "\\ui_file", LyXRC::RC_UIFILE },
173 { "\\use_alt_language", LyXRC::RC_USE_ALT_LANG },
174 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
175 { "\\use_escape_chars", LyXRC::RC_USE_ESC_CHARS },
176 { "\\use_input_encoding", LyXRC::RC_USE_INP_ENC },
177 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
178 { "\\use_personal_dictionary", LyXRC::RC_USE_PERS_DICT },
179 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
180 // compatibility with versions older than 1.4.0 only
181 { "\\use_pspell", LyXRC::RC_USE_SPELL_LIB },
182 // compatibility with versions older than 1.4.0 only
183 { "\\use_tempdir", LyXRC::RC_USETEMPDIR },
184 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
185 { "\\user_email", LyXRC::RC_USER_EMAIL },
186 { "\\user_name", LyXRC::RC_USER_NAME },
187 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
188 // compatibility with versions older than 1.4.0 only
189 { "\\viewer", LyXRC::RC_VIEWER},
190 { "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR}
193 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
204 void LyXRC::setDefaults()
207 def_file = "default";
209 // Get printer from the environment. If fail, use default "",
210 // assuming that everything is set up correctly.
211 printer = getEnv("PRINTER");
212 print_adapt_output = false;
213 print_command = "dvips";
214 print_evenpage_flag = "-B";
215 print_oddpage_flag = "-A";
216 print_pagerange_flag = "-pp";
217 print_copies_flag = "-c";
218 print_collcopies_flag = "-C";
219 print_reverse_flag = "-r";
220 print_landscape_flag = "-t landscape";
221 print_to_printer = "-P";
222 print_to_file = "-o ";
223 print_file_extension = ".ps";
224 print_paper_flag = "-t";
225 print_paper_dimension_flag = "-T";
226 document_path.erase();
227 view_dvi_paper_option.erase();
228 default_papersize = PAPER_DEFAULT;
229 custom_export_format = "ps";
230 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
231 bibtex_command = "bibtex";
233 index_command = "makeindex -c -q";
234 nomencl_command = "makeindex -s nomencl.ist";
236 // Because a screen typically is wider than a piece of paper:
238 allow_geometry_session = true;
239 // Default LaTeX font size:
240 font_sizes[FONT_SIZE_TINY] = "5.0";
241 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
242 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
243 font_sizes[FONT_SIZE_SMALL] = "9.0";
244 font_sizes[FONT_SIZE_NORMAL] = "10.0";
245 font_sizes[FONT_SIZE_LARGE] = "12.0";
246 font_sizes[FONT_SIZE_LARGER] = "14.4";
247 font_sizes[FONT_SIZE_LARGEST] = "17.26";
248 font_sizes[FONT_SIZE_HUGE] = "20.74";
249 font_sizes[FONT_SIZE_HUGER] = "24.88";
250 use_scalable_fonts = true;
251 roman_font_name = "";
253 typewriter_font_name = "";
255 auto_region_delete = true;
256 auto_reset_options = false;
257 plaintext_linelen = 65;
258 mouse_wheel_speed = 1.0;
259 num_lastfiles = maxlastfiles;
260 check_lastfiles = true;
261 use_lastfilepos = true;
262 load_session = false;
264 backupdir_path.erase();
265 display_graphics = true;
266 // Spellchecker settings:
267 spellchecker_accept_compound = false;
268 spellchecker_use_input_encoding = false;
269 spellchecker_use_alt_lang = false;
270 spellchecker_use_pers_dict = false;
271 spellchecker_use_esc_chars = false;
272 spellcheck_continuously = false;
275 visual_cursor = false;
277 mark_foreign_language = true;
278 language_auto_begin = true;
279 language_auto_end = true;
280 language_global_options = true;
281 language_use_babel = true;
282 language_package = "\\usepackage{babel}";
283 language_command_begin = "\\selectlanguage{$$lang}";
284 language_command_local = "\\foreignlanguage{$$lang}{";
285 sort_layouts = false;
286 group_layouts = true;
287 default_language = "english";
288 gui_language = "auto";
290 windows_style_tex_paths = false;
291 tex_allows_spaces = false;
292 date_insert_format = "%x";
293 cursor_follows_scrollbar = false;
294 scroll_below_document = false;
295 mac_like_word_movement = false;
296 macro_edit_style = MACRO_EDIT_INLINE_BOX;
297 dialogs_iconify_with_main = false;
298 label_init_length = 3;
299 preview = PREVIEW_OFF;
300 preview_hashed_labels = false;
301 preview_scale_factor = "0.9";
302 use_converter_cache = true;
304 use_pixmap_cache = false;
305 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
306 user_name = to_utf8(support::user_name());
307 user_email = to_utf8(support::user_email());
308 open_buffers_in_tabs = true;
310 // Fullscreen settings
311 full_screen_limit = false;
312 full_screen_toolbars = true;
313 full_screen_tabbar = true;
314 full_screen_scrollbar = true;
315 full_screen_width = 700;
317 completion_cursor_text = true;
318 completion_popup_math = true;
319 completion_popup_text = false;
320 completion_popup_delay = 2.0;
321 completion_popup_after_complete = true;
322 autocorrection_math = false;
323 completion_inline_math = true;
324 completion_inline_text = false;
325 completion_inline_dots = -1;
326 completion_inline_delay = 0.2;
332 void oldFontFormat(string & family, string & foundry)
334 if (family.empty() || family[0] != '-')
336 foundry = token(family, '-', 1);
337 family = token(family, '-', 2);
345 int LyXRC::read(FileName const & filename)
347 Lexer lexrc(lyxrcTags);
348 if (lyxerr.debugging(Debug::PARSER))
349 lexrc.printTable(lyxerr);
351 lexrc.setFile(filename);
355 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
361 int LyXRC::read(istream & is)
363 Lexer lexrc(lyxrcTags);
364 if (lyxerr.debugging(Debug::PARSER))
365 lexrc.printTable(lyxerr);
371 LYXERR(Debug::LYXRC, "Reading istream...");
377 int LyXRC::read(Lexer & lexrc)
382 while (lexrc.isOK()) {
383 // By using two switches we take advantage of the compiler
384 // telling us if we have missed a LyXRCTags element in
385 // the second switch.
386 // Note that this also shows a problem with Lexer since it
387 // helps us avoid taking advantage of the strictness of the
390 int le = lexrc.lex();
392 case Lexer::LEX_UNDEF:
393 lexrc.printError("Unknown tag `$$Token'");
395 case Lexer::LEX_FEOF:
400 switch (static_cast<LyXRCTags>(le)) {
401 case RC_INPUT: // Include file
404 libFileSearch(string(),
407 lexrc.printError("Error reading "
408 "included file: " + tmp.absFilename());
414 bind_file = os::internal_path(lexrc.getString());
419 def_file = os::internal_path(lexrc.getString());
424 ui_file = os::internal_path(lexrc.getString());
427 case RC_AUTORESET_OPTIONS:
428 lexrc >> auto_reset_options;
431 case RC_DISPLAY_GRAPHICS:
433 display_graphics = lexrc.getString() == "true";
436 case RC_TEX_EXPECTS_WINDOWS_PATHS:
437 lexrc >> windows_style_tex_paths;
440 case RC_TEX_ALLOWS_SPACES:
441 lexrc >> tex_allows_spaces;
448 case RC_KBMAP_PRIMARY:
450 string const kmap(os::internal_path(lexrc.getString()));
453 } else if (!libFileSearch("kbd", kmap,
455 primary_kbmap = kmap;
457 lexrc.printError("LyX: Keymap `$$Token' not found");
462 case RC_KBMAP_SECONDARY:
464 string const kmap(os::internal_path(lexrc.getString()));
467 } else if (!libFileSearch("kbd", kmap,
469 secondary_kbmap = kmap;
471 lexrc.printError("LyX: Keymap `$$Token' not found");
476 case RC_FONT_ENCODING:
484 case RC_PRINT_COMMAND:
485 if (lexrc.next(true)) {
486 print_command = lexrc.getString();
490 case RC_PRINTEVENPAGEFLAG:
491 lexrc >> print_evenpage_flag;
494 case RC_PRINTODDPAGEFLAG:
495 lexrc >> print_oddpage_flag;
498 case RC_PRINTPAGERANGEFLAG:
499 lexrc >> print_pagerange_flag;
502 case RC_PRINTCOPIESFLAG:
503 lexrc >> print_copies_flag;
506 case RC_PRINTCOLLCOPIESFLAG:
507 lexrc >> print_collcopies_flag;
510 case RC_PRINTREVERSEFLAG:
511 lexrc >> print_reverse_flag;
514 case RC_PRINTLANDSCAPEFLAG:
515 lexrc >> print_landscape_flag;
518 case RC_PRINTTOPRINTER:
519 lexrc >> print_to_printer;
522 case RC_PRINT_ADAPTOUTPUT:
523 lexrc >> print_adapt_output;
528 print_to_file = os::internal_path(lexrc.getString());
532 case RC_PRINTFILEEXTENSION:
533 lexrc >> print_file_extension;
536 case RC_PRINTEXSTRAOPTIONS:
537 lexrc >> print_extra_options;
540 case RC_PRINTSPOOL_COMMAND:
541 if (lexrc.next(true)) {
542 print_spool_command = lexrc.getString();
546 case RC_PRINTSPOOL_PRINTERPREFIX:
547 lexrc >> print_spool_printerprefix;
550 case RC_PRINTPAPERDIMENSIONFLAG:
551 lexrc >> print_paper_dimension_flag;
554 case RC_PRINTPAPERFLAG:
555 lexrc >> print_paper_flag;
558 case RC_CUSTOM_EXPORT_COMMAND:
559 lexrc >> custom_export_command;
562 case RC_CUSTOM_EXPORT_FORMAT:
563 lexrc >> custom_export_format;
566 case RC_DEFAULT_PAPERSIZE:
568 string const size = ascii_lowercase(lexrc.getString());
569 if (size == "usletter")
570 default_papersize = PAPER_USLETTER;
571 else if (size == "legal")
572 default_papersize = PAPER_USLEGAL;
573 else if (size == "executive")
574 default_papersize = PAPER_USEXECUTIVE;
575 else if (size == "a3")
576 default_papersize = PAPER_A3;
577 else if (size == "a4")
578 default_papersize = PAPER_A4;
579 else if (size == "a5")
580 default_papersize = PAPER_A5;
581 else if (size == "b5")
582 default_papersize = PAPER_B5;
583 else if (size == "default")
584 default_papersize = PAPER_DEFAULT;
588 case RC_VIEWDVI_PAPEROPTION:
590 view_dvi_paper_option = lexrc.getString();
592 view_dvi_paper_option.erase();
595 case RC_CHKTEX_COMMAND:
596 if (lexrc.next(true)) {
597 chktex_command = lexrc.getString();
601 case RC_BIBTEX_COMMAND:
602 if (lexrc.next(true)) {
603 bibtex_command = lexrc.getString();
607 case RC_INDEX_COMMAND:
608 if (lexrc.next(true)) {
609 index_command = lexrc.getString();
613 case RC_NOMENCL_COMMAND:
614 if (lexrc.next(true)) {
615 nomencl_command = lexrc.getString();
627 case RC_GEOMETRY_SESSION:
628 lexrc >> allow_geometry_session;
631 case RC_SCREEN_FONT_SIZES:
632 lexrc >> font_sizes[FONT_SIZE_TINY];
633 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
634 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
635 lexrc >> font_sizes[FONT_SIZE_SMALL];
636 lexrc >> font_sizes[FONT_SIZE_NORMAL];
637 lexrc >> font_sizes[FONT_SIZE_LARGE];
638 lexrc >> font_sizes[FONT_SIZE_LARGER];
639 lexrc >> font_sizes[FONT_SIZE_LARGEST];
640 lexrc >> font_sizes[FONT_SIZE_HUGE];
641 lexrc >> font_sizes[FONT_SIZE_HUGER];
644 case RC_SCREEN_FONT_SCALABLE:
645 lexrc >> use_scalable_fonts;
652 case RC_DOCUMENTPATH:
654 document_path = os::internal_path(lexrc.getString());
655 document_path = expandPath(document_path);
661 example_path = os::internal_path(lexrc.getString());
662 example_path = expandPath(example_path);
666 case RC_TEMPLATEPATH:
668 template_path = os::internal_path(lexrc.getString());
669 template_path = expandPath(template_path);
675 tempdir_path = os::internal_path(lexrc.getString());
676 tempdir_path = expandPath(tempdir_path);
680 case RC_THESAURUSDIRPATH:
682 thesaurusdir_path = os::internal_path(lexrc.getString());
683 thesaurusdir_path = expandPath(thesaurusdir_path);
689 LYXERR0("Ignoring obsolete use_tempdir flag.");
692 case RC_USELASTFILEPOS:
693 lexrc >> use_lastfilepos;
697 lexrc >> load_session;
700 case RC_MOUSE_WHEEL_SPEED:
701 lexrc >> mouse_wheel_speed;
704 case RC_COMPLETION_INLINE_DELAY:
705 lexrc >> completion_inline_delay;
708 case RC_COMPLETION_INLINE_MATH:
709 lexrc >> completion_inline_math;
712 case RC_COMPLETION_INLINE_TEXT:
713 lexrc >> completion_inline_text;
716 case RC_COMPLETION_INLINE_DOTS:
717 lexrc >> completion_inline_dots;
720 case RC_AUTOCORRECTION_MATH:
721 lexrc >> autocorrection_math;
724 case RC_COMPLETION_POPUP_DELAY:
725 lexrc >> completion_popup_delay;
728 case RC_COMPLETION_POPUP_MATH:
729 lexrc >> completion_popup_math;
732 case RC_COMPLETION_POPUP_TEXT:
733 lexrc >> completion_popup_text;
736 case RC_COMPLETION_CURSOR_TEXT:
737 lexrc >> completion_cursor_text;
740 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
741 lexrc >> completion_popup_after_complete;
744 case RC_NUMLASTFILES:
745 lexrc >> num_lastfiles;
748 case RC_CHECKLASTFILES:
749 lexrc >> check_lastfiles;
752 case RC_SCREEN_FONT_ROMAN:
754 roman_font_name = lexrc.getString();
755 oldFontFormat(roman_font_name,
760 case RC_SCREEN_FONT_SANS:
762 sans_font_name = lexrc.getString();
763 oldFontFormat(sans_font_name, sans_font_foundry);
767 case RC_SCREEN_FONT_TYPEWRITER:
769 typewriter_font_name = lexrc.getString();
770 oldFontFormat(typewriter_font_name,
771 typewriter_font_foundry);
775 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
776 lexrc >> roman_font_foundry;
779 case RC_SCREEN_FONT_SANS_FOUNDRY:
780 lexrc >> sans_font_foundry;
783 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
784 lexrc >> typewriter_font_foundry;
789 lexrc.printError("Missing color tag.");
792 string lyx_name = lexrc.getString();
795 lexrc.printError("Missing color name for color: `$$Token'");
798 string x11_name = lexrc.getString();
800 ColorCode const col =
801 lcolor.getFromLyXName(lyx_name);
802 if (col == Color_none ||
803 col == Color_inherit ||
807 if (!lcolor.setColor(col, x11_name))
808 LYXERR0("Bad lyxrc set_color for " << lyx_name);
812 case RC_AUTOREGIONDELETE:
813 // Auto region delete defaults to true
814 lexrc >> auto_region_delete;
819 lyxpipes = os::internal_path(lexrc.getString());
820 lyxpipes = expandPath(lyxpipes);
824 case RC_CURSOR_FOLLOWS_SCROLLBAR:
825 lexrc >> cursor_follows_scrollbar;
828 case RC_SCROLL_BELOW_DOCUMENT:
829 lexrc >> scroll_below_document;
832 case RC_MAC_LIKE_WORD_MOVEMENT:
833 lexrc >> mac_like_word_movement;
836 case RC_MACRO_EDIT_STYLE:
838 switch (lexrc.getInteger()) {
839 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
840 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
841 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
846 case RC_DIALOGS_ICONIFY_WITH_MAIN:
847 lexrc >> dialogs_iconify_with_main;
850 case RC_PLAINTEXT_ROFF_COMMAND:
851 (void) lexrc.getString(); // Obsoleted in 2.0
853 case RC_PLAINTEXT_LINELEN:
854 lexrc >> plaintext_linelen;
856 // Spellchecker settings:
857 case RC_ACCEPT_COMPOUND:
858 lexrc >> spellchecker_accept_compound;
861 lexrc >> spellchecker_use_input_encoding;
863 case RC_USE_ALT_LANG:
864 lexrc >> spellchecker_use_alt_lang;
866 case RC_USE_PERS_DICT:
867 lexrc >> spellchecker_use_pers_dict;
870 lexrc >> use_tooltip;
872 case RC_USE_PIXMAP_CACHE:
873 lexrc >> use_pixmap_cache;
875 case RC_USE_ESC_CHARS:
876 lexrc >> spellchecker_use_esc_chars;
879 lexrc >> spellchecker_alt_lang;
883 spellchecker_pers_dict = os::internal_path(lexrc.getString());
886 lexrc >> spellchecker_esc_chars;
888 case RC_SPELLCHECK_CONTINUOUSLY:
889 lexrc >> spellcheck_continuously;
892 lexrc >> make_backup;
894 case RC_BACKUPDIR_PATH:
896 backupdir_path = os::internal_path(lexrc.getString());
897 backupdir_path = expandPath(backupdir_path);
900 case RC_DATE_INSERT_FORMAT:
901 lexrc >> date_insert_format;
903 case RC_LANGUAGE_PACKAGE:
904 lexrc >> language_package;
906 case RC_LANGUAGE_AUTO_BEGIN:
907 lexrc >> language_auto_begin;
909 case RC_LANGUAGE_AUTO_END:
910 lexrc >> language_auto_end;
912 case RC_LANGUAGE_GLOBAL_OPTIONS:
913 lexrc >> language_global_options;
915 case RC_LANGUAGE_USE_BABEL:
916 lexrc >> language_use_babel;
918 case RC_LANGUAGE_COMMAND_BEGIN:
919 lexrc >> language_command_begin;
921 case RC_LANGUAGE_COMMAND_END:
922 lexrc >> language_command_end;
924 case RC_LANGUAGE_COMMAND_LOCAL:
925 lexrc >> language_command_local;
928 lexrc >> rtl_support;
930 case RC_VISUAL_CURSOR:
931 lexrc >> visual_cursor;
934 lexrc >> auto_number;
936 case RC_MARK_FOREIGN_LANGUAGE:
937 lexrc >> mark_foreign_language;
943 fmt = lexrc.getString();
944 if (lexrc.next(true))
945 command = lexrc.getString();
946 setMover(fmt, command);
951 string from, to, command, flags;
953 from = lexrc.getString();
955 to = lexrc.getString();
956 if (lexrc.next(true))
957 command = lexrc.getString();
959 flags = lexrc.getString();
961 theConverters().erase(from, to);
963 theConverters().add(from, to, command, flags);
966 // compatibility with versions older than 1.4.0 only
968 string format, command;
969 lexrc >> format >> command;
970 formats.setViewer(format, command);
974 string format, extension, prettyname, shortcut;
975 lexrc >> format >> extension >> prettyname >> shortcut;
976 string viewer, editor;
977 if (lexrc.next(true))
978 viewer = lexrc.getString();
979 if (lexrc.next(true))
980 editor = lexrc.getString();
982 // Hack to ensure compatibility with versions older
984 int le = lexrc.lex();
985 if (le != Lexer::LEX_FEOF && le != Lexer::LEX_UNDEF) {
986 flags = lexrc.getString();
987 if (le != Lexer::LEX_DATA) {
988 // We have got a known token.
989 // Therefore this is an old style
990 // format definition without
992 lexrc.pushToken(flags);
996 int flgs = Format::none;
997 while (!flags.empty()) {
999 flags = split(flags, flag, ',');
1000 if (flag == "document")
1001 flgs |= Format::document;
1002 else if (flag == "vector")
1003 flgs |= Format::vector;
1005 LYXERR0("Ignoring unknown flag `"
1006 << flag << "' for format `"
1009 if (prettyname.empty()) {
1010 if (theConverters().formatIsUsed(format))
1011 LYXERR0("Can't delete format " << format);
1013 formats.erase(format);
1015 formats.add(format, extension, prettyname,
1016 shortcut, viewer, editor, flgs);
1020 case RC_DEFAULT_LANGUAGE:
1021 lexrc >> default_language;
1024 case RC_GUI_LANGUAGE:
1025 lexrc >> gui_language;
1028 case RC_LABEL_INIT_LENGTH:
1029 lexrc >> label_init_length;
1032 case RC_SHOW_BANNER:
1033 lexrc >> show_banner;
1038 string const tmp = lexrc.getString();
1039 if (tmp == "true" || tmp == "on")
1040 preview = PREVIEW_ON;
1041 else if (tmp == "no_math")
1042 preview = PREVIEW_NO_MATH;
1044 preview = PREVIEW_OFF;
1045 if (tmp != "false" && tmp != "off")
1046 LYXERR0("Unrecognized preview status \""
1052 case RC_PREVIEW_HASHED_LABELS:
1053 lexrc >> preview_hashed_labels;
1056 case RC_PREVIEW_SCALE_FACTOR:
1057 lexrc >> preview_scale_factor;
1064 lexrc >> user_email;
1067 case RC_PATH_PREFIX:
1068 lexrc >> path_prefix;
1071 case RC_USE_CONVERTER_CACHE:
1072 lexrc >> use_converter_cache;
1074 case RC_CONVERTER_CACHE_MAXAGE:
1075 lexrc >> converter_cache_maxage;
1078 case RC_SORT_LAYOUTS:
1079 lexrc >> sort_layouts;
1081 case RC_GROUP_LAYOUTS:
1082 lexrc >> group_layouts;
1084 case RC_FULL_SCREEN_LIMIT:
1085 lexrc >> full_screen_limit;
1087 case RC_FULL_SCREEN_TOOLBARS:
1088 lexrc >> full_screen_toolbars;
1090 case RC_FULL_SCREEN_SCROLLBAR:
1091 lexrc >> full_screen_scrollbar;
1093 case RC_FULL_SCREEN_TABBAR:
1094 lexrc >> full_screen_tabbar;
1096 case RC_FULL_SCREEN_WIDTH:
1097 lexrc >> full_screen_width;
1099 case RC_OPEN_BUFFERS_IN_TABS:
1100 lexrc >> open_buffers_in_tabs;
1104 case RC_SPELL_COMMAND:
1105 case RC_USE_SPELL_LIB:
1106 (void) lexrc.getString();
1110 break; // this is just a dummy
1114 /// Update converters data-structures
1115 theConverters().update(formats);
1116 theConverters().buildGraph();
1122 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1124 ofstream ofs(filename.toFilesystemEncoding().c_str());
1126 write(ofs, ignore_system_lyxrc);
1130 void LyXRC::print() const
1132 if (lyxerr.debugging())
1133 write(lyxerr, false);
1141 typedef pair<string, SpecialisedMover> Data;
1143 SameMover(Data const & comparison)
1144 : comparison_(comparison) {}
1146 bool operator()(Data const & data) const
1148 return data.first == comparison_.first &&
1149 data.second.command() == comparison_.second.command();
1159 // Escape \ and " so that LyXLex can read the string later
1160 string escapeCommand(string const & str) {
1161 return subst(subst(str , "\\", "\\\\"),
1168 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1170 LyXRCTags tag = RC_LAST;
1172 if (!name.empty()) {
1173 for (int i = 0; i != lyxrcCount; ++i)
1174 if ("\\" + name == lyxrcTags[i].tag)
1175 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1179 os << "# LyX " << lyx_version
1180 << " generated this file. If you want to make your own\n"
1181 << "# modifications you should do them from inside LyX and save.\n"
1184 // Why the switch you might ask. It is a trick to ensure that all
1185 // the elements in the LyXRCTags enum are handled. As you can see
1186 // there are no breaks at all. So it is just a huge fall-through.
1187 // The nice thing is that we will get a warning from the compiler
1188 // if we forget an element.
1192 // input/include files are not done here
1194 if (ignore_system_lyxrc ||
1195 bind_file != system_lyxrc.bind_file) {
1196 string const path = os::external_path(bind_file);
1197 os << "\\bind_file \"" << path << "\"\n";
1203 if (ignore_system_lyxrc ||
1204 def_file != system_lyxrc.def_file) {
1205 string const path = os::external_path(def_file);
1206 os << "\\def_file \"" << path << "\"\n";
1215 << "# MISC SECTION ######################################\n"
1217 // bind files are not done here.
1219 case RC_PATH_PREFIX:
1220 if (ignore_system_lyxrc ||
1221 path_prefix != system_lyxrc.path_prefix) {
1222 os << "\\path_prefix \"" << path_prefix << "\"\n";
1227 if (ignore_system_lyxrc ||
1228 ui_file != system_lyxrc.ui_file) {
1229 string const path = os::external_path(ui_file);
1230 os << "\\ui_file \"" << path << "\"\n";
1234 case RC_AUTOREGIONDELETE:
1235 if (ignore_system_lyxrc ||
1236 auto_region_delete != system_lyxrc.auto_region_delete) {
1237 os << "# Set to false to inhibit automatic replacement of\n"
1238 << "# the current selection.\n"
1239 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1244 case RC_AUTORESET_OPTIONS:
1245 if (ignore_system_lyxrc ||
1246 auto_reset_options != system_lyxrc.auto_reset_options) {
1247 os << "# Set to false to inhibit automatic reset of\n"
1248 << "# the class options to defaults on class change.\n"
1249 << "\\auto_reset_options "
1250 << convert<string>(auto_reset_options)
1256 if (ignore_system_lyxrc ||
1257 autosave != system_lyxrc.autosave) {
1258 os << "# The time interval between auto-saves in seconds.\n"
1259 << "\\autosave " << autosave << '\n';
1263 case RC_DISPLAY_GRAPHICS:
1264 if (ignore_system_lyxrc ||
1265 display_graphics != system_lyxrc.display_graphics) {
1266 os << "# Display graphics within LyX\n"
1268 << "\\display_graphics "
1269 << (display_graphics ? "true" : "false")
1274 case RC_SORT_LAYOUTS:
1275 if (ignore_system_lyxrc ||
1276 sort_layouts != system_lyxrc.sort_layouts) {
1277 os << "# Sort layouts alphabetically.\n"
1278 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1282 case RC_GROUP_LAYOUTS:
1283 if (ignore_system_lyxrc ||
1284 group_layouts != system_lyxrc.group_layouts) {
1285 os << "# Group layouts by their category.\n"
1286 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1290 case RC_VIEWDVI_PAPEROPTION:
1291 if (ignore_system_lyxrc ||
1292 view_dvi_paper_option
1293 != system_lyxrc.view_dvi_paper_option) {
1294 os << "# Options used to specify paper size to the\n"
1295 << "# view_dvi_command (e.g. -paper)\n"
1296 << "\\view_dvi_paper_option \""
1297 << view_dvi_paper_option << "\"\n";
1301 case RC_DEFAULT_PAPERSIZE:
1302 if (ignore_system_lyxrc ||
1303 default_papersize != system_lyxrc.default_papersize) {
1304 os << "# The default papersize to use.\n"
1305 << "\\default_papersize \"";
1306 switch (default_papersize) {
1308 os << "default"; break;
1309 case PAPER_USLETTER:
1310 os << "usletter"; break;
1312 os << "legal"; break;
1313 case PAPER_USEXECUTIVE:
1314 os << "executive"; break;
1325 case PAPER_B4: break;
1331 case RC_CHKTEX_COMMAND:
1332 if (ignore_system_lyxrc ||
1333 chktex_command != system_lyxrc.chktex_command) {
1334 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1338 case RC_BIBTEX_COMMAND:
1339 if (ignore_system_lyxrc ||
1340 bibtex_command != system_lyxrc.bibtex_command) {
1341 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1345 case RC_INDEX_COMMAND:
1346 if (ignore_system_lyxrc ||
1347 index_command != system_lyxrc.index_command) {
1348 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1352 case RC_NOMENCL_COMMAND:
1353 if (ignore_system_lyxrc ||
1354 nomencl_command != system_lyxrc.nomencl_command) {
1355 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1359 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1360 if (ignore_system_lyxrc ||
1361 windows_style_tex_paths != system_lyxrc.windows_style_tex_paths) {
1362 os << "\\tex_expects_windows_paths "
1363 << convert<string>(windows_style_tex_paths) << '\n';
1367 case RC_TEX_ALLOWS_SPACES:
1368 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1369 os << "\\tex_allows_spaces "
1370 << convert<string>(tex_allows_spaces) << '\n';
1375 if (ignore_system_lyxrc ||
1376 use_kbmap != system_lyxrc.use_kbmap) {
1377 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1381 case RC_KBMAP_PRIMARY:
1382 if (ignore_system_lyxrc ||
1383 primary_kbmap != system_lyxrc.primary_kbmap) {
1384 string const path = os::external_path(primary_kbmap);
1385 os << "\\kbmap_primary \"" << path << "\"\n";
1389 case RC_KBMAP_SECONDARY:
1390 if (ignore_system_lyxrc ||
1391 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1392 string const path = os::external_path(secondary_kbmap);
1393 os << "\\kbmap_secondary \"" << path << "\"\n";
1398 if (ignore_system_lyxrc ||
1399 lyxpipes != system_lyxrc.lyxpipes) {
1400 string const path = os::external_path(lyxpipes);
1401 os << "\\serverpipe \"" << path << "\"\n";
1405 case RC_DATE_INSERT_FORMAT:
1406 if (ignore_system_lyxrc ||
1407 date_insert_format != system_lyxrc.date_insert_format) {
1408 os << "\\date_insert_format \"" << date_insert_format
1413 case RC_LABEL_INIT_LENGTH:
1414 if (ignore_system_lyxrc ||
1415 label_init_length != system_lyxrc.label_init_length) {
1416 os << "\\label_init_length " << label_init_length
1423 os << "\\user_name \"" << user_name << "\"\n";
1428 os << "\\user_email \"" << user_email << "\"\n";
1432 case RC_SHOW_BANNER:
1433 if (ignore_system_lyxrc ||
1434 show_banner != system_lyxrc.show_banner) {
1435 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1441 if (ignore_system_lyxrc ||
1442 preview != system_lyxrc.preview) {
1448 case PREVIEW_NO_MATH:
1455 os << "\\preview " << status << '\n';
1460 case RC_PREVIEW_HASHED_LABELS:
1461 if (ignore_system_lyxrc ||
1462 preview_hashed_labels !=
1463 system_lyxrc.preview_hashed_labels) {
1464 os << "\\preview_hashed_labels "
1465 << convert<string>(preview_hashed_labels) << '\n';
1470 case RC_PREVIEW_SCALE_FACTOR:
1471 if (ignore_system_lyxrc ||
1472 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1473 os << "\\preview_scale_factor "
1474 << preview_scale_factor << '\n';
1479 case RC_USE_CONVERTER_CACHE:
1480 if (ignore_system_lyxrc ||
1481 use_converter_cache != system_lyxrc.use_converter_cache) {
1482 os << "\\use_converter_cache "
1483 << convert<string>(use_converter_cache) << '\n';
1488 case RC_CONVERTER_CACHE_MAXAGE:
1489 if (ignore_system_lyxrc ||
1490 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1491 os << "\\converter_cache_maxage "
1492 << converter_cache_maxage << '\n';
1498 << "# SCREEN & FONTS SECTION ############################\n"
1502 if (ignore_system_lyxrc ||
1503 dpi != system_lyxrc.dpi) {
1504 os << "\\screen_dpi " << dpi << '\n';
1508 case RC_SCREEN_ZOOM:
1509 if (ignore_system_lyxrc ||
1510 zoom != system_lyxrc.zoom) {
1511 os << "\\screen_zoom " << zoom << '\n';
1515 case RC_GEOMETRY_SESSION:
1516 if (ignore_system_lyxrc ||
1517 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1518 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1523 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1524 if (ignore_system_lyxrc ||
1525 cursor_follows_scrollbar
1526 != system_lyxrc.cursor_follows_scrollbar) {
1527 os << "\\cursor_follows_scrollbar "
1528 << convert<string>(cursor_follows_scrollbar) << '\n';
1532 case RC_SCROLL_BELOW_DOCUMENT:
1533 if (ignore_system_lyxrc ||
1534 scroll_below_document
1535 != system_lyxrc.scroll_below_document) {
1536 os << "\\scroll_below_document "
1537 << convert<string>(scroll_below_document) << '\n';
1541 case RC_MAC_LIKE_WORD_MOVEMENT:
1542 if (ignore_system_lyxrc ||
1543 mac_like_word_movement
1544 != system_lyxrc.mac_like_word_movement) {
1545 os << "\\mac_like_word_movement "
1546 << convert<string>(mac_like_word_movement) << '\n';
1550 case RC_MACRO_EDIT_STYLE:
1551 if (ignore_system_lyxrc ||
1553 != system_lyxrc.macro_edit_style) {
1554 os << "\\macro_edit_style ";
1555 switch (macro_edit_style) {
1556 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1557 case MACRO_EDIT_INLINE: os << "1\n"; break;
1558 case MACRO_EDIT_LIST: os << "2\n"; break;
1563 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1564 if (ignore_system_lyxrc ||
1565 dialogs_iconify_with_main
1566 != system_lyxrc.dialogs_iconify_with_main) {
1567 os << "\\dialogs_iconify_with_main "
1568 << convert<string>(dialogs_iconify_with_main) << '\n';
1572 case RC_SCREEN_FONT_ROMAN:
1573 if (ignore_system_lyxrc ||
1574 roman_font_name != system_lyxrc.roman_font_name) {
1575 os << "\\screen_font_roman \"" << roman_font_name
1580 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1581 if (ignore_system_lyxrc ||
1582 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1583 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1588 case RC_SCREEN_FONT_SANS:
1589 if (ignore_system_lyxrc ||
1590 sans_font_name != system_lyxrc.sans_font_name) {
1591 os << "\\screen_font_sans \"" << sans_font_name
1596 case RC_SCREEN_FONT_SANS_FOUNDRY:
1597 if (ignore_system_lyxrc ||
1598 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1599 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1604 case RC_SCREEN_FONT_TYPEWRITER:
1605 if (ignore_system_lyxrc ||
1606 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1607 os << "\\screen_font_typewriter \""
1608 << typewriter_font_name << "\"\n";
1612 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1613 if (ignore_system_lyxrc ||
1614 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1615 os << "\\screen_font_typewriter_foundry \""
1616 << typewriter_font_foundry << "\"\n";
1621 case RC_SCREEN_FONT_SCALABLE:
1622 if (ignore_system_lyxrc ||
1623 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1624 os << "\\screen_font_scalable "
1625 << convert<string>(use_scalable_fonts)
1630 case RC_SCREEN_FONT_SIZES:
1631 if (ignore_system_lyxrc ||
1632 font_sizes[FONT_SIZE_TINY]
1633 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1634 font_sizes[FONT_SIZE_SCRIPT]
1635 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1636 font_sizes[FONT_SIZE_FOOTNOTE]
1637 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1638 font_sizes[FONT_SIZE_SMALL]
1639 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1640 font_sizes[FONT_SIZE_NORMAL]
1641 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1642 font_sizes[FONT_SIZE_LARGE]
1643 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1644 font_sizes[FONT_SIZE_LARGER]
1645 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1646 font_sizes[FONT_SIZE_LARGEST]
1647 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1648 font_sizes[FONT_SIZE_HUGE]
1649 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1650 font_sizes[FONT_SIZE_HUGER]
1651 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1652 os.setf(ios::fixed);
1654 os << "\\screen_font_sizes"
1655 << ' ' << font_sizes[FONT_SIZE_TINY]
1656 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1657 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1658 << ' ' << font_sizes[FONT_SIZE_SMALL]
1659 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1660 << ' ' << font_sizes[FONT_SIZE_LARGE]
1661 << ' ' << font_sizes[FONT_SIZE_LARGER]
1662 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1663 << ' ' << font_sizes[FONT_SIZE_HUGE]
1664 << ' ' << font_sizes[FONT_SIZE_HUGER]
1669 case RC_FULL_SCREEN_LIMIT:
1670 if (ignore_system_lyxrc ||
1671 full_screen_limit != system_lyxrc.full_screen_limit) {
1672 os << "\\fullscreen_limit "
1673 << convert<string>(full_screen_limit)
1678 case RC_FULL_SCREEN_TOOLBARS:
1679 if (ignore_system_lyxrc ||
1680 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1681 os << "\\fullscreen_toolbars "
1682 << convert<string>(full_screen_toolbars)
1687 case RC_FULL_SCREEN_SCROLLBAR:
1688 if (ignore_system_lyxrc ||
1689 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1690 os << "\\fullscreen_scrollbar "
1691 << convert<string>(full_screen_scrollbar)
1696 case RC_FULL_SCREEN_TABBAR:
1697 if (ignore_system_lyxrc ||
1698 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1699 os << "\\fullscreen_tabbar "
1700 << convert<string>(full_screen_tabbar)
1705 case RC_FULL_SCREEN_WIDTH:
1706 if (ignore_system_lyxrc ||
1707 full_screen_width != system_lyxrc.full_screen_width) {
1708 os << "\\fullscreen_width "
1709 << convert<string>(full_screen_width)
1714 case RC_OPEN_BUFFERS_IN_TABS:
1715 if (ignore_system_lyxrc ||
1716 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1717 os << "\\open_buffers_in_tabs "
1718 << convert<string>(open_buffers_in_tabs)
1725 << "# COLOR SECTION ###################################\n"
1729 for (int i = 0; i < Color_ignore; ++i) {
1730 ColorCode lc = static_cast<ColorCode>(i);
1731 string const col = lcolor.getX11Name(lc);
1732 if (ignore_system_lyxrc
1733 || col != system_lcolor.getX11Name(lc)) {
1734 os << "\\set_color \""
1735 << lcolor.getLyXName(lc) << "\" \""
1743 << "# PRINTER SECTION ###################################\n"
1747 if (ignore_system_lyxrc ||
1748 printer != system_lyxrc.printer) {
1749 os << "\\printer \"" << printer << "\"\n";
1753 case RC_PRINT_ADAPTOUTPUT:
1754 if (ignore_system_lyxrc ||
1755 print_adapt_output != system_lyxrc.print_adapt_output) {
1756 os << "\\print_adapt_output "
1757 << convert<string>(print_adapt_output)
1762 case RC_PRINT_COMMAND:
1763 if (ignore_system_lyxrc ||
1764 print_command != system_lyxrc.print_command) {
1765 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
1769 case RC_PRINTEXSTRAOPTIONS:
1770 if (ignore_system_lyxrc ||
1771 print_extra_options != system_lyxrc.print_extra_options) {
1772 os << "\\print_extra_options \"" << print_extra_options
1777 case RC_PRINTSPOOL_COMMAND:
1778 if (ignore_system_lyxrc ||
1779 print_spool_command != system_lyxrc.print_spool_command) {
1780 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
1785 case RC_PRINTSPOOL_PRINTERPREFIX:
1786 if (ignore_system_lyxrc ||
1787 print_spool_printerprefix
1788 != system_lyxrc.print_spool_printerprefix) {
1789 os << "\\print_spool_printerprefix \""
1790 << print_spool_printerprefix << "\"\n";
1794 case RC_PRINTEVENPAGEFLAG:
1795 if (ignore_system_lyxrc ||
1796 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
1797 os << "\\print_evenpage_flag \"" << print_evenpage_flag
1802 case RC_PRINTODDPAGEFLAG:
1803 if (ignore_system_lyxrc ||
1804 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
1805 os << "\\print_oddpage_flag \"" << print_oddpage_flag
1810 case RC_PRINTREVERSEFLAG:
1811 if (ignore_system_lyxrc ||
1812 print_reverse_flag != system_lyxrc.print_reverse_flag) {
1813 os << "\\print_reverse_flag \"" << print_reverse_flag
1818 case RC_PRINTLANDSCAPEFLAG:
1819 if (ignore_system_lyxrc ||
1820 print_landscape_flag != system_lyxrc.print_landscape_flag) {
1821 os << "\\print_landscape_flag \"" << print_landscape_flag
1826 case RC_PRINTPAGERANGEFLAG:
1827 if (ignore_system_lyxrc ||
1828 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
1829 os << "\\print_pagerange_flag \"" << print_pagerange_flag
1834 case RC_PRINTCOPIESFLAG:
1835 if (ignore_system_lyxrc ||
1836 print_copies_flag != system_lyxrc.print_copies_flag) {
1837 os << "\\print_copies_flag \"" << print_copies_flag
1842 case RC_PRINTCOLLCOPIESFLAG:
1843 if (ignore_system_lyxrc ||
1844 print_collcopies_flag
1845 != system_lyxrc.print_collcopies_flag) {
1846 os << "\\print_collcopies_flag \""
1847 << print_collcopies_flag
1852 case RC_PRINTPAPERFLAG:
1853 if (ignore_system_lyxrc ||
1854 print_paper_flag != system_lyxrc.print_paper_flag) {
1855 os << "\\print_paper_flag \"" << print_paper_flag
1860 case RC_PRINTPAPERDIMENSIONFLAG:
1861 if (ignore_system_lyxrc ||
1862 print_paper_dimension_flag
1863 != system_lyxrc.print_paper_dimension_flag) {
1864 os << "\\print_paper_dimension_flag \""
1865 << print_paper_dimension_flag << "\"\n";
1869 case RC_PRINTTOPRINTER:
1870 if (ignore_system_lyxrc ||
1871 print_to_printer != system_lyxrc.print_to_printer) {
1872 os << "\\print_to_printer \"" << print_to_printer
1877 case RC_PRINTTOFILE:
1878 if (ignore_system_lyxrc ||
1879 print_to_file != system_lyxrc.print_to_file) {
1880 string const path = os::external_path(print_to_file);
1881 os << "\\print_to_file \"" << path << "\"\n";
1885 case RC_PRINTFILEEXTENSION:
1886 if (ignore_system_lyxrc ||
1887 print_file_extension != system_lyxrc.print_file_extension) {
1888 os << "\\print_file_extension \""
1889 << print_file_extension
1896 << "# EXPORT SECTION ####################################\n"
1899 case RC_CUSTOM_EXPORT_COMMAND:
1900 if (ignore_system_lyxrc ||
1901 custom_export_command
1902 != system_lyxrc.custom_export_command) {
1903 os << "\\custom_export_command \""
1904 << custom_export_command
1909 case RC_CUSTOM_EXPORT_FORMAT:
1910 if (ignore_system_lyxrc ||
1911 custom_export_format
1912 != system_lyxrc.custom_export_format) {
1913 os << "\\custom_export_format \"" << custom_export_format
1920 << "# TEX SECTION #######################################\n"
1923 case RC_FONT_ENCODING:
1924 if (ignore_system_lyxrc ||
1925 fontenc != system_lyxrc.fontenc) {
1926 os << "\\font_encoding \"" << fontenc << "\"\n";
1932 << "# FILE SECTION ######################################\n"
1935 case RC_DOCUMENTPATH:
1936 if (ignore_system_lyxrc ||
1937 document_path != system_lyxrc.document_path) {
1938 string const path = os::external_path(document_path);
1939 os << "\\document_path \"" << path << "\"\n";
1943 case RC_USELASTFILEPOS:
1944 if (ignore_system_lyxrc ||
1945 use_lastfilepos != system_lyxrc.use_lastfilepos) {
1946 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
1951 case RC_LOADSESSION:
1952 if (ignore_system_lyxrc ||
1953 load_session != system_lyxrc.load_session) {
1954 os << "\\load_session " << convert<string>(load_session)
1959 case RC_MOUSE_WHEEL_SPEED:
1960 if (ignore_system_lyxrc ||
1961 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
1962 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
1966 case RC_COMPLETION_INLINE_DELAY:
1967 if (ignore_system_lyxrc ||
1968 completion_inline_delay != system_lyxrc.completion_inline_delay) {
1969 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
1973 case RC_COMPLETION_INLINE_MATH:
1974 if (ignore_system_lyxrc ||
1975 completion_inline_math != system_lyxrc.completion_inline_math) {
1976 os << "\\completion_inline_math "
1977 << convert<string>(completion_inline_math) << '\n';
1981 case RC_COMPLETION_INLINE_TEXT:
1982 if (ignore_system_lyxrc ||
1983 completion_inline_text != system_lyxrc.completion_inline_text) {
1984 os << "\\completion_inline_text "
1985 << convert<string>(completion_inline_text) << '\n';
1989 case RC_COMPLETION_INLINE_DOTS:
1990 if (ignore_system_lyxrc ||
1991 completion_inline_dots != system_lyxrc.completion_inline_dots) {
1992 os << "\\completion_inline_dots "
1993 << convert<string>(completion_inline_dots) << '\n';
1997 case RC_AUTOCORRECTION_MATH:
1998 if (ignore_system_lyxrc ||
1999 autocorrection_math != system_lyxrc.autocorrection_math) {
2000 os << "\\autocorrection_math "
2001 << convert<string>(autocorrection_math) << '\n';
2005 case RC_COMPLETION_POPUP_DELAY:
2006 if (ignore_system_lyxrc ||
2007 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2008 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2012 case RC_COMPLETION_POPUP_MATH:
2013 if (ignore_system_lyxrc ||
2014 completion_popup_math != system_lyxrc.completion_popup_math) {
2015 os << "\\completion_popup_math "
2016 << convert<string>(completion_popup_math) << '\n';
2020 case RC_COMPLETION_POPUP_TEXT:
2021 if (ignore_system_lyxrc ||
2022 completion_popup_text != system_lyxrc.completion_popup_text) {
2023 os << "\\completion_popup_text "
2024 << convert<string>(completion_popup_text) << '\n';
2028 case RC_COMPLETION_CURSOR_TEXT:
2029 if (ignore_system_lyxrc ||
2030 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2031 os << "\\completion_cursor_text "
2032 << convert<string>(completion_cursor_text) << '\n';
2036 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2037 if (ignore_system_lyxrc ||
2038 completion_popup_after_complete
2039 != system_lyxrc.completion_popup_after_complete) {
2040 os << "\\completion_popup_after_complete "
2041 << convert<string>(completion_popup_after_complete) << '\n';
2045 case RC_NUMLASTFILES:
2046 if (ignore_system_lyxrc ||
2047 num_lastfiles != system_lyxrc.num_lastfiles) {
2048 os << "\\num_lastfiles " << num_lastfiles << '\n';
2052 case RC_CHECKLASTFILES:
2053 if (ignore_system_lyxrc ||
2054 check_lastfiles != system_lyxrc.check_lastfiles) {
2055 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2060 case RC_EXAMPLEPATH:
2061 if (ignore_system_lyxrc ||
2062 example_path != system_lyxrc.example_path) {
2063 string const path = os::external_path(example_path);
2064 os << "\\example_path \"" << path << "\"\n";
2068 case RC_TEMPLATEPATH:
2069 if (ignore_system_lyxrc ||
2070 template_path != system_lyxrc.template_path) {
2071 string const path = os::external_path(template_path);
2072 os << "\\template_path \"" << path << "\"\n";
2076 case RC_TEMPDIRPATH:
2077 if (ignore_system_lyxrc ||
2078 tempdir_path != system_lyxrc.tempdir_path) {
2079 string const path = os::external_path(tempdir_path);
2080 os << "\\tempdir_path \"" << path << "\"\n";
2084 case RC_THESAURUSDIRPATH:
2085 if (ignore_system_lyxrc ||
2086 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2087 string const path = os::external_path(thesaurusdir_path);
2088 os << "\\thesaurusdir_path \"" << path << "\"\n";
2096 case RC_PLAINTEXT_ROFF_COMMAND: // Obsoleted in 2.0
2099 case RC_PLAINTEXT_LINELEN:
2100 if (ignore_system_lyxrc ||
2101 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2102 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2106 case RC_MAKE_BACKUP:
2107 if (ignore_system_lyxrc ||
2108 make_backup != system_lyxrc.make_backup) {
2109 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2113 case RC_BACKUPDIR_PATH:
2114 if (ignore_system_lyxrc ||
2115 backupdir_path != system_lyxrc.backupdir_path) {
2116 string const path = os::external_path(backupdir_path);
2117 os << "\\backupdir_path \"" << path << "\"\n";
2123 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2127 << "# SPELLCHECKER SECTION ##############################\n"
2130 case RC_SPELL_COMMAND:
2131 case RC_USE_SPELL_LIB:
2135 case RC_ACCEPT_COMPOUND:
2136 if (ignore_system_lyxrc ||
2137 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2138 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2143 case RC_USE_ALT_LANG:
2144 if (ignore_system_lyxrc ||
2145 spellchecker_use_alt_lang != system_lyxrc.spellchecker_use_alt_lang) {
2146 os << "\\use_alt_language " << convert<string>(spellchecker_use_alt_lang)
2152 if (ignore_system_lyxrc ||
2153 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2154 os << "\\alternate_language \"" << spellchecker_alt_lang
2159 case RC_USE_ESC_CHARS:
2160 if (ignore_system_lyxrc ||
2161 spellchecker_use_esc_chars != system_lyxrc.spellchecker_use_esc_chars) {
2162 os << "\\use_escape_chars " << convert<string>(spellchecker_use_esc_chars)
2168 if (ignore_system_lyxrc ||
2169 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2170 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2174 case RC_USE_PERS_DICT:
2175 if (ignore_system_lyxrc ||
2176 spellchecker_use_pers_dict != system_lyxrc.spellchecker_use_pers_dict) {
2177 os << "\\use_personal_dictionary "
2178 << convert<string>(spellchecker_use_pers_dict)
2183 case RC_USE_TOOLTIP:
2184 if (ignore_system_lyxrc ||
2185 use_tooltip != system_lyxrc.use_tooltip) {
2186 os << "\\use_tooltip "
2187 << convert<string>(use_tooltip)
2190 case RC_USE_PIXMAP_CACHE:
2191 if (ignore_system_lyxrc ||
2192 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2193 os << "\\use_pixmap_cache "
2194 << convert<string>(use_pixmap_cache)
2198 if (spellchecker_pers_dict != system_lyxrc.spellchecker_pers_dict) {
2199 string const path = os::external_path(spellchecker_pers_dict);
2200 os << "\\personal_dictionary \"" << path << "\"\n";
2204 case RC_USE_INP_ENC:
2205 if (ignore_system_lyxrc ||
2206 spellchecker_use_input_encoding
2207 != system_lyxrc.spellchecker_use_input_encoding) {
2208 os << "\\use_input_encoding "
2209 << convert<string>(spellchecker_use_input_encoding)
2216 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2219 case RC_SPELLCHECK_CONTINUOUSLY:
2220 if (ignore_system_lyxrc ||
2221 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2222 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2228 case RC_RTL_SUPPORT:
2229 if (ignore_system_lyxrc ||
2230 rtl_support != system_lyxrc.rtl_support) {
2231 os << "\\rtl " << convert<string>(rtl_support) << '\n';
2235 case RC_VISUAL_CURSOR:
2236 if (ignore_system_lyxrc ||
2237 visual_cursor != system_lyxrc.visual_cursor) {
2238 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2242 case RC_LANGUAGE_PACKAGE:
2243 if (ignore_system_lyxrc ||
2244 language_package != system_lyxrc.language_package) {
2245 os << "\\language_package \"" << language_package
2250 case RC_LANGUAGE_GLOBAL_OPTIONS:
2251 if (ignore_system_lyxrc ||
2252 language_global_options
2253 != system_lyxrc.language_global_options) {
2254 os << "\\language_global_options \""
2255 << convert<string>(language_global_options)
2260 case RC_LANGUAGE_USE_BABEL:
2261 if (ignore_system_lyxrc ||
2262 language_use_babel != system_lyxrc.language_use_babel) {
2263 os << "\\language_use_babel \""
2264 << convert<string>(language_use_babel)
2269 case RC_LANGUAGE_COMMAND_BEGIN:
2270 if (ignore_system_lyxrc ||
2271 language_command_begin
2272 != system_lyxrc.language_command_begin) {
2273 os << "\\language_command_begin \""
2274 << language_command_begin
2279 case RC_LANGUAGE_COMMAND_END:
2280 if (ignore_system_lyxrc ||
2281 language_command_end
2282 != system_lyxrc.language_command_end) {
2283 os << "\\language_command_end \"" << language_command_end
2288 case RC_LANGUAGE_COMMAND_LOCAL:
2289 if (ignore_system_lyxrc ||
2290 language_command_local
2291 != system_lyxrc.language_command_local) {
2292 os << "\\language_command_local \""
2293 << language_command_local
2298 case RC_LANGUAGE_AUTO_BEGIN:
2299 if (ignore_system_lyxrc ||
2300 language_auto_begin != system_lyxrc.language_auto_begin) {
2301 os << "\\language_auto_begin "
2302 << convert<string>(language_auto_begin) << '\n';
2306 case RC_LANGUAGE_AUTO_END:
2307 if (ignore_system_lyxrc ||
2308 language_auto_end != system_lyxrc.language_auto_end) {
2309 os << "\\language_auto_end "
2310 << convert<string>(language_auto_end) << '\n';
2314 case RC_MARK_FOREIGN_LANGUAGE:
2315 if (ignore_system_lyxrc ||
2316 mark_foreign_language
2317 != system_lyxrc.mark_foreign_language) {
2318 os << "\\mark_foreign_language " <<
2319 convert<string>(mark_foreign_language) << '\n';
2325 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2328 case RC_AUTO_NUMBER:
2329 if (ignore_system_lyxrc ||
2330 auto_number != system_lyxrc.auto_number) {
2331 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2335 case RC_DEFAULT_LANGUAGE:
2336 if (ignore_system_lyxrc ||
2337 default_language != system_lyxrc.default_language) {
2338 os << "\\default_language " << default_language << '\n';
2342 case RC_GUI_LANGUAGE:
2343 if (ignore_system_lyxrc ||
2344 gui_language != system_lyxrc.gui_language) {
2345 os << "\\gui_language " << gui_language << '\n';
2351 << "# FORMATS SECTION ##########################\n"
2355 // New/modified formats
2356 for (Formats::const_iterator cit = formats.begin();
2357 cit != formats.end(); ++cit) {
2358 Format const * format =
2359 system_formats.getFormat(cit->name());
2361 format->extension() != cit->extension() ||
2362 format->prettyname() != cit->prettyname() ||
2363 format->shortcut() != cit->shortcut() ||
2364 format->viewer() != cit->viewer() ||
2365 format->editor() != cit->editor() ||
2366 format->documentFormat() != cit->documentFormat() ||
2367 format->vectorFormat() != cit->vectorFormat()) {
2368 os << "\\format \"" << cit->name() << "\" \""
2369 << cit->extension() << "\" \""
2370 << cit->prettyname() << "\" \""
2371 << cit->shortcut() << "\" \""
2372 << escapeCommand(cit->viewer()) << "\" \""
2373 << escapeCommand(cit->editor()) << "\" \"";
2374 vector<string> flags;
2375 if (cit->documentFormat())
2376 flags.push_back("document");
2377 if (cit->vectorFormat())
2378 flags.push_back("vector");
2379 os << getStringFromVector(flags);
2384 // Look for deleted formats
2385 for (Formats::const_iterator cit = system_formats.begin();
2386 cit != system_formats.end(); ++cit)
2387 if (!formats.getFormat(cit->name()))
2388 os << "\\format \"" << cit->name()
2389 << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2398 << "# CONVERTERS SECTION ##########################\n"
2402 // Look for new converters
2403 for (Converters::const_iterator cit = theConverters().begin();
2404 cit != theConverters().end(); ++cit) {
2405 Converter const * converter =
2406 theSystemConverters().getConverter(cit->from,
2409 converter->command != cit->command ||
2410 converter->flags != cit->flags)
2411 os << "\\converter \"" << cit->from << "\" \""
2412 << cit->to << "\" \""
2413 << escapeCommand(cit->command) << "\" \""
2414 << cit->flags << "\"\n";
2417 // New/modifed converters
2418 for (Converters::const_iterator cit = theSystemConverters().begin();
2419 cit != theSystemConverters().end(); ++cit)
2420 if (!theConverters().getConverter(cit->from, cit->to))
2421 os << "\\converter \"" << cit->from
2422 << "\" \"" << cit->to << "\" \"\" \"\"\n";
2429 << "# COPIERS SECTION ##########################\n"
2432 // Look for new movers
2433 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2434 Movers::const_iterator const sysend = theSystemMovers().end();
2435 Movers::const_iterator it = theMovers().begin();
2436 Movers::const_iterator end = theMovers().end();
2438 for (; it != end; ++it) {
2439 Movers::const_iterator const sysit =
2440 find_if(sysbegin, sysend, SameMover(*it));
2441 if (sysit == sysend) {
2442 string const & fmt = it->first;
2443 string const & command =
2444 it->second.command();
2446 os << "\\copier " << fmt
2447 << " \"" << escapeCommand(command) << "\"\n";
2453 // We don't actually delete SpecialisedMover(s) from the
2454 // map, just clear their 'command', so there's no need
2455 // to test for anything else.
2463 string const LyXRC::getDescription(LyXRCTags tag)
2468 case RC_ACCEPT_COMPOUND:
2469 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
2473 case RC_USE_ALT_LANG:
2474 str = _("Specify an alternate language. The default is to use the language of the document.");
2477 case RC_PLAINTEXT_ROFF_COMMAND:
2478 str = _("Use to define an external program to render tables in plain text output. E.g. \"groff -t -Tlatin1 $$FName\" where $$FName is the input file. If \"\" is specified, an internal routine is used.");
2481 case RC_PLAINTEXT_LINELEN:
2482 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.");
2485 case RC_AUTOREGIONDELETE:
2486 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
2489 case RC_AUTORESET_OPTIONS:
2490 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
2494 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
2497 case RC_AUTO_NUMBER:
2500 case RC_BACKUPDIR_PATH:
2501 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.");
2504 case RC_BIBTEX_COMMAND:
2505 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
2509 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
2512 case RC_CHECKLASTFILES:
2513 str = _("Select to check whether the lastfiles still exist.");
2516 case RC_CHKTEX_COMMAND:
2517 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
2526 case RC_CURSOR_FOLLOWS_SCROLLBAR:
2527 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.");
2530 case RC_SCROLL_BELOW_DOCUMENT:
2531 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");
2534 case RC_MAC_LIKE_WORD_MOVEMENT:
2535 str = _("Use the Mac OS X conventions for the word-level cursor movement");
2538 case RC_SHOW_MACRO_LABEL:
2539 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
2542 case RC_CUSTOM_EXPORT_COMMAND:
2545 case RC_CUSTOM_EXPORT_FORMAT:
2548 case RC_DATE_INSERT_FORMAT:
2549 //xgettext:no-c-format
2550 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
2554 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
2557 case RC_DEFAULT_LANGUAGE:
2558 str = _("New documents will be assigned this language.");
2561 case RC_DEFAULT_PAPERSIZE:
2562 str = _("Specify the default paper size.");
2565 case RC_DIALOGS_ICONIFY_WITH_MAIN:
2566 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
2569 case RC_DISPLAY_GRAPHICS:
2570 str = _("Select how LyX will display any graphics.");
2573 case RC_DOCUMENTPATH:
2574 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
2578 case RC_USE_ESC_CHARS:
2579 str = _("Specify additional chars that can be part of a word.");
2582 case RC_EXAMPLEPATH:
2583 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
2586 case RC_FONT_ENCODING:
2587 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
2593 case RC_INDEX_COMMAND:
2594 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\".");
2597 case RC_NOMENCL_COMMAND:
2598 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
2605 case RC_KBMAP_PRIMARY:
2606 case RC_KBMAP_SECONDARY:
2607 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.");
2610 case RC_LABEL_INIT_LENGTH:
2611 str = _("Maximum number of words in the initialization string for a new label");
2614 case RC_LANGUAGE_AUTO_BEGIN:
2615 str = _("Select if a language switching command is needed at the beginning of the document.");
2618 case RC_LANGUAGE_AUTO_END:
2619 str = _("Select if a language switching command is needed at the end of the document.");
2622 case RC_LANGUAGE_COMMAND_BEGIN:
2623 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.");
2626 case RC_LANGUAGE_COMMAND_END:
2627 str = _("The LaTeX command for changing back to the language of the document.");
2630 case RC_LANGUAGE_COMMAND_LOCAL:
2631 str = _("The LaTeX command for local changing of the language.");
2634 case RC_LANGUAGE_GLOBAL_OPTIONS:
2635 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
2638 case RC_LANGUAGE_PACKAGE:
2639 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
2642 case RC_LANGUAGE_USE_BABEL:
2643 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
2646 case RC_USELASTFILEPOS:
2647 str = _("De-select if you do not want LyX to scroll to saved position.");
2650 case RC_LOADSESSION:
2651 str = _("De-select to prevent loading files opened from the last LyX session.");
2654 case RC_MAKE_BACKUP:
2655 str = _("De-select if you don't want LyX to create backup files.");
2658 case RC_MARK_FOREIGN_LANGUAGE:
2659 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
2662 case RC_MOUSE_WHEEL_SPEED:
2663 str = bformat(_("The scrolling speed of the mouse wheel."),
2667 case RC_COMPLETION_POPUP_DELAY:
2668 str = _("The completion popup delay.");
2671 case RC_COMPLETION_POPUP_MATH:
2672 str = _("Select to display the completion popup in math mode.");
2675 case RC_COMPLETION_POPUP_TEXT:
2676 str = _("Select to display the completion popup in text mode.");
2679 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2680 str = _("Show the completion popup without delay after non-unique completion attempt.");
2683 case RC_COMPLETION_POPUP_TEXT:
2684 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
2687 case RC_COMPLETION_POPUP_DELAY:
2688 str = _("The inline completion delay.");
2691 case RC_COMPLETION_INLINE_MATH:
2692 str = _("Select to display the inline completion in math mode.");
2695 case RC_COMPLETION_INLINE_TEXT:
2696 str = _("Select to display the inline completion in text mode.");
2699 case RC_COMPLETION_INLINE_DOTS:
2700 str = _("Use \"...\" to shorten long completions.");
2703 case RC_AUTOCORRECTION_MATH:
2704 str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
2707 case RC_NUMLASTFILES:
2708 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
2712 case RC_PATH_PREFIX:
2713 str = _("Specify those directories which should be "
2714 "prepended to the PATH environment variable. "
2715 "Use the OS native format.");
2719 case RC_USE_PERS_DICT:
2720 str = _("Specify an alternate personal dictionary file. E.g. \".aspell_english\".");
2724 str = _("Shows a typeset preview of things such as math");
2727 case RC_PREVIEW_HASHED_LABELS:
2728 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
2731 case RC_PREVIEW_SCALE_FACTOR:
2732 str = _("Scale the preview size to suit.");
2735 case RC_PRINTCOLLCOPIESFLAG:
2736 str = _("The option for specifying whether the copies should be collated.");
2739 case RC_PRINTCOPIESFLAG:
2740 str = _("The option for specifying the number of copies to print.");
2744 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
2747 case RC_PRINTEVENPAGEFLAG:
2748 str = _("The option to print only even pages.");
2751 case RC_PRINTEXSTRAOPTIONS:
2752 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
2755 case RC_PRINTFILEEXTENSION:
2756 str = _("Extension of printer program output file. Usually \".ps\".");
2759 case RC_PRINTLANDSCAPEFLAG:
2760 str = _("The option to print out in landscape.");
2763 case RC_PRINTODDPAGEFLAG:
2764 str = _("The option to print only odd pages.");
2767 case RC_PRINTPAGERANGEFLAG:
2768 str = _("The option for specifying a comma-separated list of pages to print.");
2771 case RC_PRINTPAPERDIMENSIONFLAG:
2772 str = _("Option to specify the dimensions of the print paper.");
2775 case RC_PRINTPAPERFLAG:
2776 str = _("The option to specify paper type.");
2779 case RC_PRINTREVERSEFLAG:
2780 str = _("The option to reverse the order of the pages printed.");
2783 case RC_PRINTSPOOL_COMMAND:
2784 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.");
2787 case RC_PRINTSPOOL_PRINTERPREFIX:
2788 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.");
2791 case RC_PRINTTOFILE:
2792 str = _("Option to pass to the print program to print to a file.");
2795 case RC_PRINTTOPRINTER:
2796 str = _("Option to pass to the print program to print on a specific printer.");
2799 case RC_PRINT_ADAPTOUTPUT:
2800 str = _("Select for LyX to pass the name of the destination printer to your print command.");
2803 case RC_PRINT_COMMAND:
2804 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
2807 case RC_RTL_SUPPORT:
2808 str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
2811 case RC_VISUAL_CURSOR:
2812 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
2816 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
2819 case RC_SCREEN_FONT_ROMAN:
2820 case RC_SCREEN_FONT_SANS:
2821 case RC_SCREEN_FONT_TYPEWRITER:
2822 str = _("The screen fonts used to display the text while editing.");
2825 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
2826 case RC_SCREEN_FONT_SANS_FOUNDRY:
2827 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
2830 case RC_SCREEN_FONT_SCALABLE:
2831 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.");
2834 case RC_SCREEN_FONT_SIZES:
2835 str = _("The font sizes used for calculating the scaling of the screen fonts.");
2838 case RC_SCREEN_ZOOM:
2839 //xgettext:no-c-format
2840 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
2843 case RC_GEOMETRY_SESSION:
2844 str = _("Allow session manager to save and restore windows geometry.");
2848 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
2854 case RC_SHOW_BANNER:
2855 str = _("De-select if you don't want the startup banner.");
2858 case RC_TEMPDIRPATH:
2859 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
2862 case RC_THESAURUSDIRPATH:
2863 str = _("This is the place where the files of the thesaurus library reside.");
2866 case RC_TEMPLATEPATH:
2867 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
2870 case RC_TEX_ALLOWS_SPACES:
2873 case RC_TEX_EXPECTS_WINDOWS_PATHS:
2877 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
2889 case RC_USE_INP_ENC:
2890 str = _("Specify whether to pass the -T input encoding option to aspell. Enable this if you cannot check the spelling of words containing accented letters. This may not work with all dictionaries.");
2893 case RC_USE_TOOLTIP:
2894 str = _("Enable the automatic appearance of tool tips in the work area.");
2897 case RC_USE_PIXMAP_CACHE:
2898 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
2901 case RC_USE_SPELL_LIB:
2904 case RC_VIEWDVI_PAPEROPTION:
2905 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
2920 // The global instance
2923 // The global copy of the system lyxrc entries (everything except preferences)