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_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
65 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
66 { "\\bind_file", LyXRC::RC_BINDFILE },
67 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
68 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
69 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
70 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
71 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
72 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
73 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
74 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
75 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
76 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
77 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
78 { "\\converter", LyXRC::RC_CONVERTER },
79 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
80 { "\\copier", LyXRC::RC_COPIER },
81 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
82 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
83 { "\\def_file", LyXRC::RC_DEFFILE },
84 { "\\default_language", LyXRC::RC_DEFAULT_LANGUAGE },
85 { "\\default_papersize", LyXRC::RC_DEFAULT_PAPERSIZE },
86 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
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_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR },
96 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
97 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
98 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
99 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
100 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
101 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
102 { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
103 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
104 { "\\input", LyXRC::RC_INPUT },
105 { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
106 { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
107 { "\\kbmap", LyXRC::RC_KBMAP },
108 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
109 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
110 { "\\label_init_length", LyXRC::RC_LABEL_INIT_LENGTH },
111 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
112 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
113 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
114 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
115 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
116 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
117 { "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE },
118 { "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL },
119 { "\\load_session", LyXRC::RC_LOADSESSION },
120 { "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT },
121 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
122 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
123 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
124 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
125 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
126 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
127 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
128 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
129 { "\\personal_dictionary", LyXRC::RC_PERS_DICT },
130 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
131 { "\\plaintext_roff_command", LyXRC::RC_PLAINTEXT_ROFF_COMMAND },
132 { "\\preview", LyXRC::RC_PREVIEW },
133 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
134 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
135 { "\\print_adapt_output", LyXRC::RC_PRINT_ADAPTOUTPUT },
136 { "\\print_collcopies_flag", LyXRC::RC_PRINTCOLLCOPIESFLAG },
137 { "\\print_command", LyXRC::RC_PRINT_COMMAND },
138 { "\\print_copies_flag", LyXRC::RC_PRINTCOPIESFLAG },
139 { "\\print_evenpage_flag", LyXRC::RC_PRINTEVENPAGEFLAG },
140 { "\\print_extra_options", LyXRC::RC_PRINTEXSTRAOPTIONS },
141 { "\\print_file_extension", LyXRC::RC_PRINTFILEEXTENSION },
142 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
143 { "\\print_oddpage_flag", LyXRC::RC_PRINTODDPAGEFLAG },
144 { "\\print_pagerange_flag", LyXRC::RC_PRINTPAGERANGEFLAG },
145 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
146 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
147 { "\\print_reverse_flag", LyXRC::RC_PRINTREVERSEFLAG },
148 { "\\print_spool_command", LyXRC::RC_PRINTSPOOL_COMMAND },
149 { "\\print_spool_printerprefix", LyXRC::RC_PRINTSPOOL_PRINTERPREFIX },
150 { "\\print_to_file", LyXRC::RC_PRINTTOFILE },
151 { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER },
152 { "\\printer", LyXRC::RC_PRINTER },
153 { "\\rtl", LyXRC::RC_RTL_SUPPORT },
154 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
155 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
156 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
157 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
158 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
159 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
160 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
161 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
162 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
163 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
164 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
165 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
166 { "\\set_color", LyXRC::RC_SET_COLOR },
167 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
168 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
169 { "\\spell_command", LyXRC::RC_SPELL_COMMAND },
170 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
171 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
172 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
173 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
174 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
175 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
176 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
177 { "\\ui_file", LyXRC::RC_UIFILE },
178 { "\\use_alt_language", LyXRC::RC_USE_ALT_LANG },
179 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
180 { "\\use_escape_chars", LyXRC::RC_USE_ESC_CHARS },
181 { "\\use_input_encoding", LyXRC::RC_USE_INP_ENC },
182 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
183 { "\\use_personal_dictionary", LyXRC::RC_USE_PERS_DICT },
184 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
185 // compatibility with versions older than 1.4.0 only
186 { "\\use_pspell", LyXRC::RC_USE_SPELL_LIB },
187 // compatibility with versions older than 1.4.0 only
188 { "\\use_tempdir", LyXRC::RC_USETEMPDIR },
189 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
190 { "\\user_email", LyXRC::RC_USER_EMAIL },
191 { "\\user_name", LyXRC::RC_USER_NAME },
192 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
193 // compatibility with versions older than 1.4.0 only
194 { "\\viewer", LyXRC::RC_VIEWER},
195 { "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR}
198 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
209 void LyXRC::setDefaults()
212 def_file = "default";
214 // Get printer from the environment. If fail, use default "",
215 // assuming that everything is set up correctly.
216 printer = getEnv("PRINTER");
217 print_adapt_output = false;
218 print_command = "dvips";
219 print_evenpage_flag = "-B";
220 print_oddpage_flag = "-A";
221 print_pagerange_flag = "-pp";
222 print_copies_flag = "-c";
223 print_collcopies_flag = "-C";
224 print_reverse_flag = "-r";
225 print_landscape_flag = "-t landscape";
226 print_to_printer = "-P";
227 print_to_file = "-o ";
228 print_file_extension = ".ps";
229 print_paper_flag = "-t";
230 print_paper_dimension_flag = "-T";
231 document_path.erase();
232 view_dvi_paper_option.erase();
233 default_papersize = PAPER_DEFAULT;
234 default_view_format = "pdf2";
235 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
236 bibtex_command = "bibtex";
238 index_command = "makeindex -c -q";
239 nomencl_command = "makeindex -s nomencl.ist";
241 // Because a screen typically is wider than a piece of paper:
243 allow_geometry_session = true;
244 // Default LaTeX font size:
245 font_sizes[FONT_SIZE_TINY] = "5.0";
246 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
247 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
248 font_sizes[FONT_SIZE_SMALL] = "9.0";
249 font_sizes[FONT_SIZE_NORMAL] = "10.0";
250 font_sizes[FONT_SIZE_LARGE] = "12.0";
251 font_sizes[FONT_SIZE_LARGER] = "14.4";
252 font_sizes[FONT_SIZE_LARGEST] = "17.26";
253 font_sizes[FONT_SIZE_HUGE] = "20.74";
254 font_sizes[FONT_SIZE_HUGER] = "24.88";
255 use_scalable_fonts = true;
256 roman_font_name = "";
258 typewriter_font_name = "";
260 auto_region_delete = true;
261 auto_reset_options = false;
262 plaintext_linelen = 65;
263 mouse_wheel_speed = 1.0;
264 num_lastfiles = maxlastfiles;
265 check_lastfiles = true;
266 use_lastfilepos = true;
267 load_session = false;
269 backupdir_path.erase();
270 display_graphics = true;
271 // Spellchecker settings:
272 spellchecker_accept_compound = false;
273 spellchecker_use_alt_lang = false;
274 spellchecker_use_esc_chars = false;
275 spellcheck_continuously = false;
278 visual_cursor = false;
280 mark_foreign_language = true;
281 language_auto_begin = true;
282 language_auto_end = true;
283 language_global_options = true;
284 language_use_babel = true;
285 language_package = "\\usepackage{babel}";
286 language_command_begin = "\\selectlanguage{$$lang}";
287 language_command_local = "\\foreignlanguage{$$lang}{";
288 sort_layouts = false;
289 group_layouts = true;
290 default_language = "english";
291 gui_language = "auto";
293 windows_style_tex_paths = false;
294 tex_allows_spaces = false;
295 date_insert_format = "%x";
296 cursor_follows_scrollbar = false;
297 scroll_below_document = false;
298 mac_like_word_movement = false;
299 macro_edit_style = MACRO_EDIT_INLINE_BOX;
300 dialogs_iconify_with_main = false;
301 label_init_length = 3;
302 preview = PREVIEW_OFF;
303 preview_hashed_labels = false;
304 preview_scale_factor = "0.9";
305 use_converter_cache = true;
307 use_pixmap_cache = false;
308 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
309 user_name = to_utf8(support::user_name());
310 user_email = to_utf8(support::user_email());
311 open_buffers_in_tabs = true;
313 // Fullscreen settings
314 full_screen_limit = false;
315 full_screen_toolbars = true;
316 full_screen_tabbar = true;
317 full_screen_menubar = true;
318 full_screen_scrollbar = true;
319 full_screen_width = 700;
321 completion_cursor_text = true;
322 completion_popup_math = true;
323 completion_popup_text = false;
324 completion_popup_delay = 2.0;
325 completion_popup_after_complete = true;
326 autocorrection_math = false;
327 completion_inline_math = true;
328 completion_inline_text = false;
329 completion_inline_dots = -1;
330 completion_inline_delay = 0.2;
336 void oldFontFormat(string & family, string & foundry)
338 if (family.empty() || family[0] != '-')
340 foundry = token(family, '-', 1);
341 family = token(family, '-', 2);
349 int LyXRC::read(FileName const & filename)
351 Lexer lexrc(lyxrcTags);
352 if (lyxerr.debugging(Debug::PARSER))
353 lexrc.printTable(lyxerr);
355 lexrc.setFile(filename);
359 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
365 int LyXRC::read(istream & is)
367 Lexer lexrc(lyxrcTags);
368 if (lyxerr.debugging(Debug::PARSER))
369 lexrc.printTable(lyxerr);
375 LYXERR(Debug::LYXRC, "Reading istream...");
381 int LyXRC::read(Lexer & lexrc)
386 while (lexrc.isOK()) {
387 // By using two switches we take advantage of the compiler
388 // telling us if we have missed a LyXRCTags element in
389 // the second switch.
390 // Note that this also shows a problem with Lexer since it
391 // helps us avoid taking advantage of the strictness of the
394 int le = lexrc.lex();
396 case Lexer::LEX_UNDEF:
397 lexrc.printError("Unknown tag `$$Token'");
399 case Lexer::LEX_FEOF:
404 switch (static_cast<LyXRCTags>(le)) {
405 case RC_INPUT: // Include file
408 libFileSearch(string(),
411 lexrc.printError("Error reading "
412 "included file: " + tmp.absFilename());
418 bind_file = os::internal_path(lexrc.getString());
423 def_file = os::internal_path(lexrc.getString());
428 ui_file = os::internal_path(lexrc.getString());
431 case RC_AUTORESET_OPTIONS:
432 lexrc >> auto_reset_options;
435 case RC_DISPLAY_GRAPHICS:
437 display_graphics = lexrc.getString() == "true";
440 case RC_TEX_EXPECTS_WINDOWS_PATHS:
441 lexrc >> windows_style_tex_paths;
444 case RC_TEX_ALLOWS_SPACES:
445 lexrc >> tex_allows_spaces;
452 case RC_KBMAP_PRIMARY:
454 string const kmap(os::internal_path(lexrc.getString()));
457 } else if (!libFileSearch("kbd", kmap,
459 primary_kbmap = kmap;
461 lexrc.printError("LyX: Keymap `$$Token' not found");
466 case RC_KBMAP_SECONDARY:
468 string const kmap(os::internal_path(lexrc.getString()));
471 } else if (!libFileSearch("kbd", kmap,
473 secondary_kbmap = kmap;
475 lexrc.printError("LyX: Keymap `$$Token' not found");
480 case RC_FONT_ENCODING:
488 case RC_PRINT_COMMAND:
489 if (lexrc.next(true)) {
490 print_command = lexrc.getString();
494 case RC_PRINTEVENPAGEFLAG:
495 lexrc >> print_evenpage_flag;
498 case RC_PRINTODDPAGEFLAG:
499 lexrc >> print_oddpage_flag;
502 case RC_PRINTPAGERANGEFLAG:
503 lexrc >> print_pagerange_flag;
506 case RC_PRINTCOPIESFLAG:
507 lexrc >> print_copies_flag;
510 case RC_PRINTCOLLCOPIESFLAG:
511 lexrc >> print_collcopies_flag;
514 case RC_PRINTREVERSEFLAG:
515 lexrc >> print_reverse_flag;
518 case RC_PRINTLANDSCAPEFLAG:
519 lexrc >> print_landscape_flag;
522 case RC_PRINTTOPRINTER:
523 lexrc >> print_to_printer;
526 case RC_PRINT_ADAPTOUTPUT:
527 lexrc >> print_adapt_output;
532 print_to_file = os::internal_path(lexrc.getString());
536 case RC_PRINTFILEEXTENSION:
537 lexrc >> print_file_extension;
540 case RC_PRINTEXSTRAOPTIONS:
541 lexrc >> print_extra_options;
544 case RC_PRINTSPOOL_COMMAND:
545 if (lexrc.next(true)) {
546 print_spool_command = lexrc.getString();
550 case RC_PRINTSPOOL_PRINTERPREFIX:
551 lexrc >> print_spool_printerprefix;
554 case RC_PRINTPAPERDIMENSIONFLAG:
555 lexrc >> print_paper_dimension_flag;
558 case RC_PRINTPAPERFLAG:
559 lexrc >> print_paper_flag;
562 case RC_DEFAULT_PAPERSIZE:
564 string const size = ascii_lowercase(lexrc.getString());
565 if (size == "usletter")
566 default_papersize = PAPER_USLETTER;
567 else if (size == "legal")
568 default_papersize = PAPER_USLEGAL;
569 else if (size == "executive")
570 default_papersize = PAPER_USEXECUTIVE;
571 else if (size == "a3")
572 default_papersize = PAPER_A3;
573 else if (size == "a4")
574 default_papersize = PAPER_A4;
575 else if (size == "a5")
576 default_papersize = PAPER_A5;
577 else if (size == "b5")
578 default_papersize = PAPER_B5;
579 else if (size == "default")
580 default_papersize = PAPER_DEFAULT;
584 case RC_VIEWDVI_PAPEROPTION:
586 view_dvi_paper_option = lexrc.getString();
588 view_dvi_paper_option.erase();
591 case RC_CHKTEX_COMMAND:
592 if (lexrc.next(true)) {
593 chktex_command = lexrc.getString();
597 case RC_BIBTEX_ALTERNATIVES:
598 if (lexrc.next(true)) {
599 bibtex_alternatives.insert(lexrc.getString());
603 case RC_BIBTEX_COMMAND:
604 if (lexrc.next(true)) {
605 bibtex_command = lexrc.getString();
609 case RC_JBIBTEX_COMMAND:
610 if (lexrc.next(true)) {
611 jbibtex_command = lexrc.getString();
615 case RC_INDEX_ALTERNATIVES:
616 if (lexrc.next(true)) {
617 index_alternatives.insert(lexrc.getString());
621 case RC_INDEX_COMMAND:
622 if (lexrc.next(true)) {
623 index_command = lexrc.getString();
627 case RC_JINDEX_COMMAND:
628 if (lexrc.next(true)) {
629 jindex_command = lexrc.getString();
633 case RC_SPLITINDEX_COMMAND:
634 if (lexrc.next(true)) {
635 splitindex_command = lexrc.getString();
639 case RC_NOMENCL_COMMAND:
640 if (lexrc.next(true)) {
641 nomencl_command = lexrc.getString();
653 case RC_GEOMETRY_SESSION:
654 lexrc >> allow_geometry_session;
657 case RC_SCREEN_FONT_SIZES:
658 lexrc >> font_sizes[FONT_SIZE_TINY];
659 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
660 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
661 lexrc >> font_sizes[FONT_SIZE_SMALL];
662 lexrc >> font_sizes[FONT_SIZE_NORMAL];
663 lexrc >> font_sizes[FONT_SIZE_LARGE];
664 lexrc >> font_sizes[FONT_SIZE_LARGER];
665 lexrc >> font_sizes[FONT_SIZE_LARGEST];
666 lexrc >> font_sizes[FONT_SIZE_HUGE];
667 lexrc >> font_sizes[FONT_SIZE_HUGER];
670 case RC_SCREEN_FONT_SCALABLE:
671 lexrc >> use_scalable_fonts;
678 case RC_DOCUMENTPATH:
680 document_path = os::internal_path(lexrc.getString());
681 document_path = expandPath(document_path);
687 example_path = os::internal_path(lexrc.getString());
688 example_path = expandPath(example_path);
692 case RC_TEMPLATEPATH:
694 template_path = os::internal_path(lexrc.getString());
695 template_path = expandPath(template_path);
701 tempdir_path = os::internal_path(lexrc.getString());
702 tempdir_path = expandPath(tempdir_path);
706 case RC_THESAURUSDIRPATH:
708 thesaurusdir_path = os::internal_path(lexrc.getString());
709 thesaurusdir_path = expandPath(thesaurusdir_path);
715 LYXERR0("Ignoring obsolete use_tempdir flag.");
718 case RC_USELASTFILEPOS:
719 lexrc >> use_lastfilepos;
723 lexrc >> load_session;
726 case RC_MOUSE_WHEEL_SPEED:
727 lexrc >> mouse_wheel_speed;
730 case RC_COMPLETION_INLINE_DELAY:
731 lexrc >> completion_inline_delay;
734 case RC_COMPLETION_INLINE_MATH:
735 lexrc >> completion_inline_math;
738 case RC_COMPLETION_INLINE_TEXT:
739 lexrc >> completion_inline_text;
742 case RC_COMPLETION_INLINE_DOTS:
743 lexrc >> completion_inline_dots;
746 case RC_AUTOCORRECTION_MATH:
747 lexrc >> autocorrection_math;
750 case RC_COMPLETION_POPUP_DELAY:
751 lexrc >> completion_popup_delay;
754 case RC_COMPLETION_POPUP_MATH:
755 lexrc >> completion_popup_math;
758 case RC_COMPLETION_POPUP_TEXT:
759 lexrc >> completion_popup_text;
762 case RC_COMPLETION_CURSOR_TEXT:
763 lexrc >> completion_cursor_text;
766 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
767 lexrc >> completion_popup_after_complete;
770 case RC_NUMLASTFILES:
771 lexrc >> num_lastfiles;
774 case RC_CHECKLASTFILES:
775 lexrc >> check_lastfiles;
778 case RC_SCREEN_FONT_ROMAN:
780 roman_font_name = lexrc.getString();
781 oldFontFormat(roman_font_name,
786 case RC_SCREEN_FONT_SANS:
788 sans_font_name = lexrc.getString();
789 oldFontFormat(sans_font_name, sans_font_foundry);
793 case RC_SCREEN_FONT_TYPEWRITER:
795 typewriter_font_name = lexrc.getString();
796 oldFontFormat(typewriter_font_name,
797 typewriter_font_foundry);
801 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
802 lexrc >> roman_font_foundry;
805 case RC_SCREEN_FONT_SANS_FOUNDRY:
806 lexrc >> sans_font_foundry;
809 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
810 lexrc >> typewriter_font_foundry;
815 lexrc.printError("Missing color tag.");
818 string lyx_name = lexrc.getString();
821 lexrc.printError("Missing color name for color: `$$Token'");
824 string x11_name = lexrc.getString();
826 ColorCode const col =
827 lcolor.getFromLyXName(lyx_name);
828 if (col == Color_none ||
829 col == Color_inherit ||
833 if (!lcolor.setColor(col, x11_name))
834 LYXERR0("Bad lyxrc set_color for " << lyx_name);
838 case RC_AUTOREGIONDELETE:
839 // Auto region delete defaults to true
840 lexrc >> auto_region_delete;
845 lyxpipes = os::internal_path(lexrc.getString());
846 lyxpipes = expandPath(lyxpipes);
850 case RC_CURSOR_FOLLOWS_SCROLLBAR:
851 lexrc >> cursor_follows_scrollbar;
854 case RC_SCROLL_BELOW_DOCUMENT:
855 lexrc >> scroll_below_document;
858 case RC_MAC_LIKE_WORD_MOVEMENT:
859 lexrc >> mac_like_word_movement;
862 case RC_MACRO_EDIT_STYLE:
864 switch (lexrc.getInteger()) {
865 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
866 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
867 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
872 case RC_DIALOGS_ICONIFY_WITH_MAIN:
873 lexrc >> dialogs_iconify_with_main;
876 case RC_PLAINTEXT_ROFF_COMMAND:
877 (void) lexrc.getString(); // Obsoleted in 2.0
879 case RC_PLAINTEXT_LINELEN:
880 lexrc >> plaintext_linelen;
882 // Spellchecker settings:
883 case RC_ACCEPT_COMPOUND:
884 lexrc >> spellchecker_accept_compound;
887 (void) lexrc.getString(); // Obsoleted in 2.0
889 case RC_USE_ALT_LANG:
890 lexrc >> spellchecker_use_alt_lang;
892 case RC_USE_PERS_DICT:
893 (void) lexrc.getString(); // Obsoleted in 2.0
896 lexrc >> use_tooltip;
898 case RC_USE_PIXMAP_CACHE:
899 lexrc >> use_pixmap_cache;
901 case RC_USE_ESC_CHARS:
902 lexrc >> spellchecker_use_esc_chars;
905 lexrc >> spellchecker_alt_lang;
908 (void) lexrc.getString(); // Obsoleted in 2.0
911 lexrc >> spellchecker_esc_chars;
913 case RC_SPELLCHECK_CONTINUOUSLY:
914 lexrc >> spellcheck_continuously;
917 lexrc >> make_backup;
919 case RC_BACKUPDIR_PATH:
921 backupdir_path = os::internal_path(lexrc.getString());
922 backupdir_path = expandPath(backupdir_path);
925 case RC_DATE_INSERT_FORMAT:
926 lexrc >> date_insert_format;
928 case RC_LANGUAGE_PACKAGE:
929 lexrc >> language_package;
931 case RC_LANGUAGE_AUTO_BEGIN:
932 lexrc >> language_auto_begin;
934 case RC_LANGUAGE_AUTO_END:
935 lexrc >> language_auto_end;
937 case RC_LANGUAGE_GLOBAL_OPTIONS:
938 lexrc >> language_global_options;
940 case RC_LANGUAGE_USE_BABEL:
941 lexrc >> language_use_babel;
943 case RC_LANGUAGE_COMMAND_BEGIN:
944 lexrc >> language_command_begin;
946 case RC_LANGUAGE_COMMAND_END:
947 lexrc >> language_command_end;
949 case RC_LANGUAGE_COMMAND_LOCAL:
950 lexrc >> language_command_local;
953 lexrc >> rtl_support;
955 case RC_VISUAL_CURSOR:
956 lexrc >> visual_cursor;
959 lexrc >> auto_number;
961 case RC_MARK_FOREIGN_LANGUAGE:
962 lexrc >> mark_foreign_language;
968 fmt = lexrc.getString();
969 if (lexrc.next(true))
970 command = lexrc.getString();
971 setMover(fmt, command);
976 string from, to, command, flags;
978 from = lexrc.getString();
980 to = lexrc.getString();
981 if (lexrc.next(true))
982 command = lexrc.getString();
984 flags = lexrc.getString();
986 theConverters().erase(from, to);
988 theConverters().add(from, to, command, flags);
991 // compatibility with versions older than 1.4.0 only
993 string format, command;
994 lexrc >> format >> command;
995 formats.setViewer(format, command);
999 string format, extension, prettyname, shortcut;
1000 lexrc >> format >> extension >> prettyname >> shortcut;
1001 string viewer, editor;
1002 if (lexrc.next(true))
1003 viewer = lexrc.getString();
1004 if (lexrc.next(true))
1005 editor = lexrc.getString();
1007 // Hack to ensure compatibility with versions older
1009 int le = lexrc.lex();
1010 if (le != Lexer::LEX_FEOF && le != Lexer::LEX_UNDEF) {
1011 flags = lexrc.getString();
1012 if (le != Lexer::LEX_DATA) {
1013 // We have got a known token.
1014 // Therefore this is an old style
1015 // format definition without
1017 lexrc.pushToken(flags);
1021 int flgs = Format::none;
1022 while (!flags.empty()) {
1024 flags = split(flags, flag, ',');
1025 if (flag == "document")
1026 flgs |= Format::document;
1027 else if (flag == "vector")
1028 flgs |= Format::vector;
1030 LYXERR0("Ignoring unknown flag `"
1031 << flag << "' for format `"
1034 if (prettyname.empty()) {
1035 if (theConverters().formatIsUsed(format))
1036 LYXERR0("Can't delete format " << format);
1038 formats.erase(format);
1040 formats.add(format, extension, prettyname,
1041 shortcut, viewer, editor, flgs);
1045 case RC_DEFAULT_VIEW_FORMAT:
1046 lexrc >> default_view_format;
1049 case RC_DEFAULT_LANGUAGE:
1050 lexrc >> default_language;
1053 case RC_GUI_LANGUAGE:
1054 lexrc >> gui_language;
1057 case RC_LABEL_INIT_LENGTH:
1058 lexrc >> label_init_length;
1061 case RC_SHOW_BANNER:
1062 lexrc >> show_banner;
1067 string const tmp = lexrc.getString();
1068 if (tmp == "true" || tmp == "on")
1069 preview = PREVIEW_ON;
1070 else if (tmp == "no_math")
1071 preview = PREVIEW_NO_MATH;
1073 preview = PREVIEW_OFF;
1074 if (tmp != "false" && tmp != "off")
1075 LYXERR0("Unrecognized preview status \""
1081 case RC_PREVIEW_HASHED_LABELS:
1082 lexrc >> preview_hashed_labels;
1085 case RC_PREVIEW_SCALE_FACTOR:
1086 lexrc >> preview_scale_factor;
1093 lexrc >> user_email;
1096 case RC_PATH_PREFIX:
1097 lexrc >> path_prefix;
1100 case RC_USE_CONVERTER_CACHE:
1101 lexrc >> use_converter_cache;
1103 case RC_CONVERTER_CACHE_MAXAGE:
1104 lexrc >> converter_cache_maxage;
1107 case RC_SORT_LAYOUTS:
1108 lexrc >> sort_layouts;
1110 case RC_GROUP_LAYOUTS:
1111 lexrc >> group_layouts;
1113 case RC_FULL_SCREEN_LIMIT:
1114 lexrc >> full_screen_limit;
1116 case RC_FULL_SCREEN_TOOLBARS:
1117 lexrc >> full_screen_toolbars;
1119 case RC_FULL_SCREEN_SCROLLBAR:
1120 lexrc >> full_screen_scrollbar;
1122 case RC_FULL_SCREEN_TABBAR:
1123 lexrc >> full_screen_tabbar;
1125 case RC_FULL_SCREEN_MENUBAR:
1126 lexrc >> full_screen_menubar;
1128 case RC_FULL_SCREEN_WIDTH:
1129 lexrc >> full_screen_width;
1131 case RC_OPEN_BUFFERS_IN_TABS:
1132 lexrc >> open_buffers_in_tabs;
1136 case RC_SPELL_COMMAND:
1137 case RC_USE_SPELL_LIB:
1138 (void) lexrc.getString();
1142 break; // this is just a dummy
1146 /// Update converters data-structures
1147 theConverters().update(formats);
1148 theConverters().buildGraph();
1154 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1156 ofstream ofs(filename.toFilesystemEncoding().c_str());
1158 write(ofs, ignore_system_lyxrc);
1162 void LyXRC::print() const
1164 if (lyxerr.debugging())
1165 write(lyxerr, false);
1173 typedef pair<string, SpecialisedMover> Data;
1175 SameMover(Data const & comparison)
1176 : comparison_(comparison) {}
1178 bool operator()(Data const & data) const
1180 return data.first == comparison_.first &&
1181 data.second.command() == comparison_.second.command();
1191 // Escape \ and " so that LyXLex can read the string later
1192 string escapeCommand(string const & str) {
1193 return subst(subst(str , "\\", "\\\\"),
1200 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1202 LyXRCTags tag = RC_LAST;
1204 if (!name.empty()) {
1205 for (int i = 0; i != lyxrcCount; ++i)
1206 if ("\\" + name == lyxrcTags[i].tag)
1207 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1211 os << "# LyX " << lyx_version
1212 << " generated this file. If you want to make your own\n"
1213 << "# modifications you should do them from inside LyX and save.\n"
1216 // Why the switch you might ask. It is a trick to ensure that all
1217 // the elements in the LyXRCTags enum are handled. As you can see
1218 // there are no breaks at all. So it is just a huge fall-through.
1219 // The nice thing is that we will get a warning from the compiler
1220 // if we forget an element.
1224 // input/include files are not done here
1226 if (ignore_system_lyxrc ||
1227 bind_file != system_lyxrc.bind_file) {
1228 string const path = os::external_path(bind_file);
1229 os << "\\bind_file \"" << path << "\"\n";
1235 if (ignore_system_lyxrc ||
1236 def_file != system_lyxrc.def_file) {
1237 string const path = os::external_path(def_file);
1238 os << "\\def_file \"" << path << "\"\n";
1247 << "# MISC SECTION ######################################\n"
1249 // bind files are not done here.
1251 case RC_PATH_PREFIX:
1252 if (ignore_system_lyxrc ||
1253 path_prefix != system_lyxrc.path_prefix) {
1254 os << "\\path_prefix \"" << path_prefix << "\"\n";
1259 if (ignore_system_lyxrc ||
1260 ui_file != system_lyxrc.ui_file) {
1261 string const path = os::external_path(ui_file);
1262 os << "\\ui_file \"" << path << "\"\n";
1266 case RC_AUTOREGIONDELETE:
1267 if (ignore_system_lyxrc ||
1268 auto_region_delete != system_lyxrc.auto_region_delete) {
1269 os << "# Set to false to inhibit automatic replacement of\n"
1270 << "# the current selection.\n"
1271 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1276 case RC_AUTORESET_OPTIONS:
1277 if (ignore_system_lyxrc ||
1278 auto_reset_options != system_lyxrc.auto_reset_options) {
1279 os << "# Set to false to inhibit automatic reset of\n"
1280 << "# the class options to defaults on class change.\n"
1281 << "\\auto_reset_options "
1282 << convert<string>(auto_reset_options)
1288 if (ignore_system_lyxrc ||
1289 autosave != system_lyxrc.autosave) {
1290 os << "# The time interval between auto-saves in seconds.\n"
1291 << "\\autosave " << autosave << '\n';
1295 case RC_DISPLAY_GRAPHICS:
1296 if (ignore_system_lyxrc ||
1297 display_graphics != system_lyxrc.display_graphics) {
1298 os << "# Display graphics within LyX\n"
1300 << "\\display_graphics "
1301 << (display_graphics ? "true" : "false")
1306 case RC_SORT_LAYOUTS:
1307 if (ignore_system_lyxrc ||
1308 sort_layouts != system_lyxrc.sort_layouts) {
1309 os << "# Sort layouts alphabetically.\n"
1310 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1314 case RC_GROUP_LAYOUTS:
1315 if (ignore_system_lyxrc ||
1316 group_layouts != system_lyxrc.group_layouts) {
1317 os << "# Group layouts by their category.\n"
1318 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1322 case RC_VIEWDVI_PAPEROPTION:
1323 if (ignore_system_lyxrc ||
1324 view_dvi_paper_option
1325 != system_lyxrc.view_dvi_paper_option) {
1326 os << "# Options used to specify paper size to the\n"
1327 << "# view_dvi_command (e.g. -paper)\n"
1328 << "\\view_dvi_paper_option \""
1329 << view_dvi_paper_option << "\"\n";
1333 case RC_DEFAULT_PAPERSIZE:
1334 if (ignore_system_lyxrc ||
1335 default_papersize != system_lyxrc.default_papersize) {
1336 os << "# The default papersize to use.\n"
1337 << "\\default_papersize \"";
1338 switch (default_papersize) {
1340 os << "default"; break;
1341 case PAPER_USLETTER:
1342 os << "usletter"; break;
1344 os << "legal"; break;
1345 case PAPER_USEXECUTIVE:
1346 os << "executive"; break;
1357 case PAPER_B4: break;
1363 case RC_CHKTEX_COMMAND:
1364 if (ignore_system_lyxrc ||
1365 chktex_command != system_lyxrc.chktex_command) {
1366 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1370 case RC_BIBTEX_ALTERNATIVES: {
1371 set<string>::const_iterator it = bibtex_alternatives.begin();
1372 set<string>::const_iterator end = bibtex_alternatives.end();
1373 for ( ; it != end; ++it) {
1374 if (ignore_system_lyxrc
1375 || !system_lyxrc.bibtex_alternatives.count(*it))
1376 os << "\\bibtex_alternatives \""
1382 case RC_BIBTEX_COMMAND:
1383 if (ignore_system_lyxrc ||
1384 bibtex_command != system_lyxrc.bibtex_command) {
1385 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1389 case RC_JBIBTEX_COMMAND:
1390 if (ignore_system_lyxrc ||
1391 jbibtex_command != system_lyxrc.jbibtex_command) {
1392 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1396 case RC_INDEX_ALTERNATIVES: {
1397 set<string>::const_iterator it = index_alternatives.begin();
1398 set<string>::const_iterator end = index_alternatives.end();
1399 for ( ; it != end; ++it) {
1400 if (ignore_system_lyxrc
1401 || !system_lyxrc.index_alternatives.count(*it))
1402 os << "\\index_alternatives \""
1408 case RC_INDEX_COMMAND:
1409 if (ignore_system_lyxrc ||
1410 index_command != system_lyxrc.index_command) {
1411 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1415 case RC_JINDEX_COMMAND:
1416 if (ignore_system_lyxrc ||
1417 jindex_command != system_lyxrc.jindex_command) {
1418 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1422 case RC_SPLITINDEX_COMMAND:
1423 if (ignore_system_lyxrc ||
1424 splitindex_command != system_lyxrc.splitindex_command) {
1425 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1429 case RC_NOMENCL_COMMAND:
1430 if (ignore_system_lyxrc ||
1431 nomencl_command != system_lyxrc.nomencl_command) {
1432 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1436 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1437 if (ignore_system_lyxrc ||
1438 windows_style_tex_paths != system_lyxrc.windows_style_tex_paths) {
1439 os << "\\tex_expects_windows_paths "
1440 << convert<string>(windows_style_tex_paths) << '\n';
1444 case RC_TEX_ALLOWS_SPACES:
1445 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1446 os << "\\tex_allows_spaces "
1447 << convert<string>(tex_allows_spaces) << '\n';
1452 if (ignore_system_lyxrc ||
1453 use_kbmap != system_lyxrc.use_kbmap) {
1454 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1458 case RC_KBMAP_PRIMARY:
1459 if (ignore_system_lyxrc ||
1460 primary_kbmap != system_lyxrc.primary_kbmap) {
1461 string const path = os::external_path(primary_kbmap);
1462 os << "\\kbmap_primary \"" << path << "\"\n";
1466 case RC_KBMAP_SECONDARY:
1467 if (ignore_system_lyxrc ||
1468 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1469 string const path = os::external_path(secondary_kbmap);
1470 os << "\\kbmap_secondary \"" << path << "\"\n";
1475 if (ignore_system_lyxrc ||
1476 lyxpipes != system_lyxrc.lyxpipes) {
1477 string const path = os::external_path(lyxpipes);
1478 os << "\\serverpipe \"" << path << "\"\n";
1482 case RC_DATE_INSERT_FORMAT:
1483 if (ignore_system_lyxrc ||
1484 date_insert_format != system_lyxrc.date_insert_format) {
1485 os << "\\date_insert_format \"" << date_insert_format
1490 case RC_LABEL_INIT_LENGTH:
1491 if (ignore_system_lyxrc ||
1492 label_init_length != system_lyxrc.label_init_length) {
1493 os << "\\label_init_length " << label_init_length
1500 os << "\\user_name \"" << user_name << "\"\n";
1505 os << "\\user_email \"" << user_email << "\"\n";
1509 case RC_SHOW_BANNER:
1510 if (ignore_system_lyxrc ||
1511 show_banner != system_lyxrc.show_banner) {
1512 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1518 if (ignore_system_lyxrc ||
1519 preview != system_lyxrc.preview) {
1525 case PREVIEW_NO_MATH:
1532 os << "\\preview " << status << '\n';
1537 case RC_PREVIEW_HASHED_LABELS:
1538 if (ignore_system_lyxrc ||
1539 preview_hashed_labels !=
1540 system_lyxrc.preview_hashed_labels) {
1541 os << "\\preview_hashed_labels "
1542 << convert<string>(preview_hashed_labels) << '\n';
1547 case RC_PREVIEW_SCALE_FACTOR:
1548 if (ignore_system_lyxrc ||
1549 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1550 os << "\\preview_scale_factor "
1551 << preview_scale_factor << '\n';
1556 case RC_USE_CONVERTER_CACHE:
1557 if (ignore_system_lyxrc ||
1558 use_converter_cache != system_lyxrc.use_converter_cache) {
1559 os << "\\use_converter_cache "
1560 << convert<string>(use_converter_cache) << '\n';
1565 case RC_CONVERTER_CACHE_MAXAGE:
1566 if (ignore_system_lyxrc ||
1567 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1568 os << "\\converter_cache_maxage "
1569 << converter_cache_maxage << '\n';
1575 << "# SCREEN & FONTS SECTION ############################\n"
1579 if (ignore_system_lyxrc ||
1580 dpi != system_lyxrc.dpi) {
1581 os << "\\screen_dpi " << dpi << '\n';
1585 case RC_SCREEN_ZOOM:
1586 if (ignore_system_lyxrc ||
1587 zoom != system_lyxrc.zoom) {
1588 os << "\\screen_zoom " << zoom << '\n';
1592 case RC_GEOMETRY_SESSION:
1593 if (ignore_system_lyxrc ||
1594 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1595 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1600 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1601 if (ignore_system_lyxrc ||
1602 cursor_follows_scrollbar
1603 != system_lyxrc.cursor_follows_scrollbar) {
1604 os << "\\cursor_follows_scrollbar "
1605 << convert<string>(cursor_follows_scrollbar) << '\n';
1609 case RC_SCROLL_BELOW_DOCUMENT:
1610 if (ignore_system_lyxrc ||
1611 scroll_below_document
1612 != system_lyxrc.scroll_below_document) {
1613 os << "\\scroll_below_document "
1614 << convert<string>(scroll_below_document) << '\n';
1618 case RC_MAC_LIKE_WORD_MOVEMENT:
1619 if (ignore_system_lyxrc ||
1620 mac_like_word_movement
1621 != system_lyxrc.mac_like_word_movement) {
1622 os << "\\mac_like_word_movement "
1623 << convert<string>(mac_like_word_movement) << '\n';
1627 case RC_MACRO_EDIT_STYLE:
1628 if (ignore_system_lyxrc ||
1630 != system_lyxrc.macro_edit_style) {
1631 os << "\\macro_edit_style ";
1632 switch (macro_edit_style) {
1633 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1634 case MACRO_EDIT_INLINE: os << "1\n"; break;
1635 case MACRO_EDIT_LIST: os << "2\n"; break;
1640 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1641 if (ignore_system_lyxrc ||
1642 dialogs_iconify_with_main
1643 != system_lyxrc.dialogs_iconify_with_main) {
1644 os << "\\dialogs_iconify_with_main "
1645 << convert<string>(dialogs_iconify_with_main) << '\n';
1649 case RC_SCREEN_FONT_ROMAN:
1650 if (ignore_system_lyxrc ||
1651 roman_font_name != system_lyxrc.roman_font_name) {
1652 os << "\\screen_font_roman \"" << roman_font_name
1657 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1658 if (ignore_system_lyxrc ||
1659 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1660 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1665 case RC_SCREEN_FONT_SANS:
1666 if (ignore_system_lyxrc ||
1667 sans_font_name != system_lyxrc.sans_font_name) {
1668 os << "\\screen_font_sans \"" << sans_font_name
1673 case RC_SCREEN_FONT_SANS_FOUNDRY:
1674 if (ignore_system_lyxrc ||
1675 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1676 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1681 case RC_SCREEN_FONT_TYPEWRITER:
1682 if (ignore_system_lyxrc ||
1683 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1684 os << "\\screen_font_typewriter \""
1685 << typewriter_font_name << "\"\n";
1689 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1690 if (ignore_system_lyxrc ||
1691 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1692 os << "\\screen_font_typewriter_foundry \""
1693 << typewriter_font_foundry << "\"\n";
1698 case RC_SCREEN_FONT_SCALABLE:
1699 if (ignore_system_lyxrc ||
1700 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1701 os << "\\screen_font_scalable "
1702 << convert<string>(use_scalable_fonts)
1707 case RC_SCREEN_FONT_SIZES:
1708 if (ignore_system_lyxrc ||
1709 font_sizes[FONT_SIZE_TINY]
1710 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1711 font_sizes[FONT_SIZE_SCRIPT]
1712 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1713 font_sizes[FONT_SIZE_FOOTNOTE]
1714 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1715 font_sizes[FONT_SIZE_SMALL]
1716 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1717 font_sizes[FONT_SIZE_NORMAL]
1718 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1719 font_sizes[FONT_SIZE_LARGE]
1720 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1721 font_sizes[FONT_SIZE_LARGER]
1722 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1723 font_sizes[FONT_SIZE_LARGEST]
1724 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1725 font_sizes[FONT_SIZE_HUGE]
1726 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1727 font_sizes[FONT_SIZE_HUGER]
1728 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1729 os.setf(ios::fixed);
1731 os << "\\screen_font_sizes"
1732 << ' ' << font_sizes[FONT_SIZE_TINY]
1733 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1734 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1735 << ' ' << font_sizes[FONT_SIZE_SMALL]
1736 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1737 << ' ' << font_sizes[FONT_SIZE_LARGE]
1738 << ' ' << font_sizes[FONT_SIZE_LARGER]
1739 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1740 << ' ' << font_sizes[FONT_SIZE_HUGE]
1741 << ' ' << font_sizes[FONT_SIZE_HUGER]
1746 case RC_FULL_SCREEN_LIMIT:
1747 if (ignore_system_lyxrc ||
1748 full_screen_limit != system_lyxrc.full_screen_limit) {
1749 os << "\\fullscreen_limit "
1750 << convert<string>(full_screen_limit)
1755 case RC_FULL_SCREEN_TOOLBARS:
1756 if (ignore_system_lyxrc ||
1757 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1758 os << "\\fullscreen_toolbars "
1759 << convert<string>(full_screen_toolbars)
1764 case RC_FULL_SCREEN_SCROLLBAR:
1765 if (ignore_system_lyxrc ||
1766 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1767 os << "\\fullscreen_scrollbar "
1768 << convert<string>(full_screen_scrollbar)
1773 case RC_FULL_SCREEN_TABBAR:
1774 if (ignore_system_lyxrc ||
1775 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1776 os << "\\fullscreen_tabbar "
1777 << convert<string>(full_screen_tabbar)
1782 case RC_FULL_SCREEN_MENUBAR:
1783 if (ignore_system_lyxrc ||
1784 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1785 os << "\\fullscreen_menubar "
1786 << convert<string>(full_screen_menubar)
1791 case RC_FULL_SCREEN_WIDTH:
1792 if (ignore_system_lyxrc ||
1793 full_screen_width != system_lyxrc.full_screen_width) {
1794 os << "\\fullscreen_width "
1795 << convert<string>(full_screen_width)
1800 case RC_OPEN_BUFFERS_IN_TABS:
1801 if (ignore_system_lyxrc ||
1802 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1803 os << "\\open_buffers_in_tabs "
1804 << convert<string>(open_buffers_in_tabs)
1811 << "# COLOR SECTION ###################################\n"
1815 for (int i = 0; i < Color_ignore; ++i) {
1816 ColorCode lc = static_cast<ColorCode>(i);
1817 string const col = lcolor.getX11Name(lc);
1818 if (ignore_system_lyxrc
1819 || col != system_lcolor.getX11Name(lc)) {
1820 os << "\\set_color \""
1821 << lcolor.getLyXName(lc) << "\" \""
1829 << "# PRINTER SECTION ###################################\n"
1833 if (ignore_system_lyxrc ||
1834 printer != system_lyxrc.printer) {
1835 os << "\\printer \"" << printer << "\"\n";
1839 case RC_PRINT_ADAPTOUTPUT:
1840 if (ignore_system_lyxrc ||
1841 print_adapt_output != system_lyxrc.print_adapt_output) {
1842 os << "\\print_adapt_output "
1843 << convert<string>(print_adapt_output)
1848 case RC_PRINT_COMMAND:
1849 if (ignore_system_lyxrc ||
1850 print_command != system_lyxrc.print_command) {
1851 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
1855 case RC_PRINTEXSTRAOPTIONS:
1856 if (ignore_system_lyxrc ||
1857 print_extra_options != system_lyxrc.print_extra_options) {
1858 os << "\\print_extra_options \"" << print_extra_options
1863 case RC_PRINTSPOOL_COMMAND:
1864 if (ignore_system_lyxrc ||
1865 print_spool_command != system_lyxrc.print_spool_command) {
1866 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
1871 case RC_PRINTSPOOL_PRINTERPREFIX:
1872 if (ignore_system_lyxrc ||
1873 print_spool_printerprefix
1874 != system_lyxrc.print_spool_printerprefix) {
1875 os << "\\print_spool_printerprefix \""
1876 << print_spool_printerprefix << "\"\n";
1880 case RC_PRINTEVENPAGEFLAG:
1881 if (ignore_system_lyxrc ||
1882 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
1883 os << "\\print_evenpage_flag \"" << print_evenpage_flag
1888 case RC_PRINTODDPAGEFLAG:
1889 if (ignore_system_lyxrc ||
1890 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
1891 os << "\\print_oddpage_flag \"" << print_oddpage_flag
1896 case RC_PRINTREVERSEFLAG:
1897 if (ignore_system_lyxrc ||
1898 print_reverse_flag != system_lyxrc.print_reverse_flag) {
1899 os << "\\print_reverse_flag \"" << print_reverse_flag
1904 case RC_PRINTLANDSCAPEFLAG:
1905 if (ignore_system_lyxrc ||
1906 print_landscape_flag != system_lyxrc.print_landscape_flag) {
1907 os << "\\print_landscape_flag \"" << print_landscape_flag
1912 case RC_PRINTPAGERANGEFLAG:
1913 if (ignore_system_lyxrc ||
1914 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
1915 os << "\\print_pagerange_flag \"" << print_pagerange_flag
1920 case RC_PRINTCOPIESFLAG:
1921 if (ignore_system_lyxrc ||
1922 print_copies_flag != system_lyxrc.print_copies_flag) {
1923 os << "\\print_copies_flag \"" << print_copies_flag
1928 case RC_PRINTCOLLCOPIESFLAG:
1929 if (ignore_system_lyxrc ||
1930 print_collcopies_flag
1931 != system_lyxrc.print_collcopies_flag) {
1932 os << "\\print_collcopies_flag \""
1933 << print_collcopies_flag
1938 case RC_PRINTPAPERFLAG:
1939 if (ignore_system_lyxrc ||
1940 print_paper_flag != system_lyxrc.print_paper_flag) {
1941 os << "\\print_paper_flag \"" << print_paper_flag
1946 case RC_PRINTPAPERDIMENSIONFLAG:
1947 if (ignore_system_lyxrc ||
1948 print_paper_dimension_flag
1949 != system_lyxrc.print_paper_dimension_flag) {
1950 os << "\\print_paper_dimension_flag \""
1951 << print_paper_dimension_flag << "\"\n";
1955 case RC_PRINTTOPRINTER:
1956 if (ignore_system_lyxrc ||
1957 print_to_printer != system_lyxrc.print_to_printer) {
1958 os << "\\print_to_printer \"" << print_to_printer
1963 case RC_PRINTTOFILE:
1964 if (ignore_system_lyxrc ||
1965 print_to_file != system_lyxrc.print_to_file) {
1966 string const path = os::external_path(print_to_file);
1967 os << "\\print_to_file \"" << path << "\"\n";
1971 case RC_PRINTFILEEXTENSION:
1972 if (ignore_system_lyxrc ||
1973 print_file_extension != system_lyxrc.print_file_extension) {
1974 os << "\\print_file_extension \""
1975 << print_file_extension
1982 << "# TEX SECTION #######################################\n"
1985 case RC_FONT_ENCODING:
1986 if (ignore_system_lyxrc ||
1987 fontenc != system_lyxrc.fontenc) {
1988 os << "\\font_encoding \"" << fontenc << "\"\n";
1994 << "# FILE SECTION ######################################\n"
1997 case RC_DOCUMENTPATH:
1998 if (ignore_system_lyxrc ||
1999 document_path != system_lyxrc.document_path) {
2000 string const path = os::external_path(document_path);
2001 os << "\\document_path \"" << path << "\"\n";
2005 case RC_USELASTFILEPOS:
2006 if (ignore_system_lyxrc ||
2007 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2008 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2013 case RC_LOADSESSION:
2014 if (ignore_system_lyxrc ||
2015 load_session != system_lyxrc.load_session) {
2016 os << "\\load_session " << convert<string>(load_session)
2021 case RC_MOUSE_WHEEL_SPEED:
2022 if (ignore_system_lyxrc ||
2023 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2024 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2028 case RC_COMPLETION_INLINE_DELAY:
2029 if (ignore_system_lyxrc ||
2030 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2031 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2035 case RC_COMPLETION_INLINE_MATH:
2036 if (ignore_system_lyxrc ||
2037 completion_inline_math != system_lyxrc.completion_inline_math) {
2038 os << "\\completion_inline_math "
2039 << convert<string>(completion_inline_math) << '\n';
2043 case RC_COMPLETION_INLINE_TEXT:
2044 if (ignore_system_lyxrc ||
2045 completion_inline_text != system_lyxrc.completion_inline_text) {
2046 os << "\\completion_inline_text "
2047 << convert<string>(completion_inline_text) << '\n';
2051 case RC_COMPLETION_INLINE_DOTS:
2052 if (ignore_system_lyxrc ||
2053 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2054 os << "\\completion_inline_dots "
2055 << convert<string>(completion_inline_dots) << '\n';
2059 case RC_AUTOCORRECTION_MATH:
2060 if (ignore_system_lyxrc ||
2061 autocorrection_math != system_lyxrc.autocorrection_math) {
2062 os << "\\autocorrection_math "
2063 << convert<string>(autocorrection_math) << '\n';
2067 case RC_COMPLETION_POPUP_DELAY:
2068 if (ignore_system_lyxrc ||
2069 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2070 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2074 case RC_COMPLETION_POPUP_MATH:
2075 if (ignore_system_lyxrc ||
2076 completion_popup_math != system_lyxrc.completion_popup_math) {
2077 os << "\\completion_popup_math "
2078 << convert<string>(completion_popup_math) << '\n';
2082 case RC_COMPLETION_POPUP_TEXT:
2083 if (ignore_system_lyxrc ||
2084 completion_popup_text != system_lyxrc.completion_popup_text) {
2085 os << "\\completion_popup_text "
2086 << convert<string>(completion_popup_text) << '\n';
2090 case RC_COMPLETION_CURSOR_TEXT:
2091 if (ignore_system_lyxrc ||
2092 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2093 os << "\\completion_cursor_text "
2094 << convert<string>(completion_cursor_text) << '\n';
2098 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2099 if (ignore_system_lyxrc ||
2100 completion_popup_after_complete
2101 != system_lyxrc.completion_popup_after_complete) {
2102 os << "\\completion_popup_after_complete "
2103 << convert<string>(completion_popup_after_complete) << '\n';
2107 case RC_NUMLASTFILES:
2108 if (ignore_system_lyxrc ||
2109 num_lastfiles != system_lyxrc.num_lastfiles) {
2110 os << "\\num_lastfiles " << num_lastfiles << '\n';
2114 case RC_CHECKLASTFILES:
2115 if (ignore_system_lyxrc ||
2116 check_lastfiles != system_lyxrc.check_lastfiles) {
2117 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2122 case RC_EXAMPLEPATH:
2123 if (ignore_system_lyxrc ||
2124 example_path != system_lyxrc.example_path) {
2125 string const path = os::external_path(example_path);
2126 os << "\\example_path \"" << path << "\"\n";
2130 case RC_TEMPLATEPATH:
2131 if (ignore_system_lyxrc ||
2132 template_path != system_lyxrc.template_path) {
2133 string const path = os::external_path(template_path);
2134 os << "\\template_path \"" << path << "\"\n";
2138 case RC_TEMPDIRPATH:
2139 if (ignore_system_lyxrc ||
2140 tempdir_path != system_lyxrc.tempdir_path) {
2141 string const path = os::external_path(tempdir_path);
2142 os << "\\tempdir_path \"" << path << "\"\n";
2146 case RC_THESAURUSDIRPATH:
2147 if (ignore_system_lyxrc ||
2148 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2149 string const path = os::external_path(thesaurusdir_path);
2150 os << "\\thesaurusdir_path \"" << path << "\"\n";
2158 case RC_PLAINTEXT_ROFF_COMMAND: // Obsoleted in 2.0
2161 case RC_PLAINTEXT_LINELEN:
2162 if (ignore_system_lyxrc ||
2163 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2164 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2168 case RC_MAKE_BACKUP:
2169 if (ignore_system_lyxrc ||
2170 make_backup != system_lyxrc.make_backup) {
2171 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2175 case RC_BACKUPDIR_PATH:
2176 if (ignore_system_lyxrc ||
2177 backupdir_path != system_lyxrc.backupdir_path) {
2178 string const path = os::external_path(backupdir_path);
2179 os << "\\backupdir_path \"" << path << "\"\n";
2185 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2189 << "# SPELLCHECKER SECTION ##############################\n"
2192 case RC_SPELL_COMMAND:
2193 case RC_USE_SPELL_LIB:
2197 case RC_ACCEPT_COMPOUND:
2198 if (ignore_system_lyxrc ||
2199 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2200 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2205 case RC_USE_ALT_LANG:
2206 if (ignore_system_lyxrc ||
2207 spellchecker_use_alt_lang != system_lyxrc.spellchecker_use_alt_lang) {
2208 os << "\\use_alt_language " << convert<string>(spellchecker_use_alt_lang)
2214 if (ignore_system_lyxrc ||
2215 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2216 os << "\\alternate_language \"" << spellchecker_alt_lang
2221 case RC_USE_ESC_CHARS:
2222 if (ignore_system_lyxrc ||
2223 spellchecker_use_esc_chars != system_lyxrc.spellchecker_use_esc_chars) {
2224 os << "\\use_escape_chars " << convert<string>(spellchecker_use_esc_chars)
2230 if (ignore_system_lyxrc ||
2231 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2232 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2236 case RC_USE_PERS_DICT:
2240 case RC_USE_TOOLTIP:
2241 if (ignore_system_lyxrc ||
2242 use_tooltip != system_lyxrc.use_tooltip) {
2243 os << "\\use_tooltip "
2244 << convert<string>(use_tooltip)
2249 case RC_USE_PIXMAP_CACHE:
2250 if (ignore_system_lyxrc ||
2251 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2252 os << "\\use_pixmap_cache "
2253 << convert<string>(use_pixmap_cache)
2262 case RC_USE_INP_ENC:
2268 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2273 case RC_SPELLCHECK_CONTINUOUSLY:
2274 if (ignore_system_lyxrc ||
2275 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2276 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2282 case RC_RTL_SUPPORT:
2283 if (ignore_system_lyxrc ||
2284 rtl_support != system_lyxrc.rtl_support) {
2285 os << "\\rtl " << convert<string>(rtl_support) << '\n';
2289 case RC_VISUAL_CURSOR:
2290 if (ignore_system_lyxrc ||
2291 visual_cursor != system_lyxrc.visual_cursor) {
2292 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2296 case RC_LANGUAGE_PACKAGE:
2297 if (ignore_system_lyxrc ||
2298 language_package != system_lyxrc.language_package) {
2299 os << "\\language_package \"" << language_package
2304 case RC_LANGUAGE_GLOBAL_OPTIONS:
2305 if (ignore_system_lyxrc ||
2306 language_global_options
2307 != system_lyxrc.language_global_options) {
2308 os << "\\language_global_options \""
2309 << convert<string>(language_global_options)
2314 case RC_LANGUAGE_USE_BABEL:
2315 if (ignore_system_lyxrc ||
2316 language_use_babel != system_lyxrc.language_use_babel) {
2317 os << "\\language_use_babel \""
2318 << convert<string>(language_use_babel)
2323 case RC_LANGUAGE_COMMAND_BEGIN:
2324 if (ignore_system_lyxrc ||
2325 language_command_begin
2326 != system_lyxrc.language_command_begin) {
2327 os << "\\language_command_begin \""
2328 << language_command_begin
2333 case RC_LANGUAGE_COMMAND_END:
2334 if (ignore_system_lyxrc ||
2335 language_command_end
2336 != system_lyxrc.language_command_end) {
2337 os << "\\language_command_end \"" << language_command_end
2342 case RC_LANGUAGE_COMMAND_LOCAL:
2343 if (ignore_system_lyxrc ||
2344 language_command_local
2345 != system_lyxrc.language_command_local) {
2346 os << "\\language_command_local \""
2347 << language_command_local
2352 case RC_LANGUAGE_AUTO_BEGIN:
2353 if (ignore_system_lyxrc ||
2354 language_auto_begin != system_lyxrc.language_auto_begin) {
2355 os << "\\language_auto_begin "
2356 << convert<string>(language_auto_begin) << '\n';
2360 case RC_LANGUAGE_AUTO_END:
2361 if (ignore_system_lyxrc ||
2362 language_auto_end != system_lyxrc.language_auto_end) {
2363 os << "\\language_auto_end "
2364 << convert<string>(language_auto_end) << '\n';
2368 case RC_MARK_FOREIGN_LANGUAGE:
2369 if (ignore_system_lyxrc ||
2370 mark_foreign_language
2371 != system_lyxrc.mark_foreign_language) {
2372 os << "\\mark_foreign_language " <<
2373 convert<string>(mark_foreign_language) << '\n';
2379 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2382 case RC_AUTO_NUMBER:
2383 if (ignore_system_lyxrc ||
2384 auto_number != system_lyxrc.auto_number) {
2385 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2389 case RC_DEFAULT_LANGUAGE:
2390 if (ignore_system_lyxrc ||
2391 default_language != system_lyxrc.default_language) {
2392 os << "\\default_language " << default_language << '\n';
2396 case RC_GUI_LANGUAGE:
2397 if (ignore_system_lyxrc ||
2398 gui_language != system_lyxrc.gui_language) {
2399 os << "\\gui_language " << gui_language << '\n';
2405 << "# FORMATS SECTION ##########################\n"
2409 // New/modified formats
2410 for (Formats::const_iterator cit = formats.begin();
2411 cit != formats.end(); ++cit) {
2412 Format const * format =
2413 system_formats.getFormat(cit->name());
2415 format->extension() != cit->extension() ||
2416 format->prettyname() != cit->prettyname() ||
2417 format->shortcut() != cit->shortcut() ||
2418 format->viewer() != cit->viewer() ||
2419 format->editor() != cit->editor() ||
2420 format->documentFormat() != cit->documentFormat() ||
2421 format->vectorFormat() != cit->vectorFormat()) {
2422 os << "\\format \"" << cit->name() << "\" \""
2423 << cit->extension() << "\" \""
2424 << cit->prettyname() << "\" \""
2425 << cit->shortcut() << "\" \""
2426 << escapeCommand(cit->viewer()) << "\" \""
2427 << escapeCommand(cit->editor()) << "\" \"";
2428 vector<string> flags;
2429 if (cit->documentFormat())
2430 flags.push_back("document");
2431 if (cit->vectorFormat())
2432 flags.push_back("vector");
2433 os << getStringFromVector(flags);
2438 // Look for deleted formats
2439 for (Formats::const_iterator cit = system_formats.begin();
2440 cit != system_formats.end(); ++cit)
2441 if (!formats.getFormat(cit->name()))
2442 os << "\\format \"" << cit->name()
2443 << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2446 case RC_DEFAULT_VIEW_FORMAT:
2447 if (ignore_system_lyxrc ||
2448 default_view_format != system_lyxrc.default_view_format) {
2449 os << "\\default_view_format " << default_view_format << '\n';
2459 << "# CONVERTERS SECTION ##########################\n"
2463 // Look for new converters
2464 for (Converters::const_iterator cit = theConverters().begin();
2465 cit != theConverters().end(); ++cit) {
2466 Converter const * converter =
2467 theSystemConverters().getConverter(cit->from,
2470 converter->command != cit->command ||
2471 converter->flags != cit->flags)
2472 os << "\\converter \"" << cit->from << "\" \""
2473 << cit->to << "\" \""
2474 << escapeCommand(cit->command) << "\" \""
2475 << cit->flags << "\"\n";
2478 // New/modifed converters
2479 for (Converters::const_iterator cit = theSystemConverters().begin();
2480 cit != theSystemConverters().end(); ++cit)
2481 if (!theConverters().getConverter(cit->from, cit->to))
2482 os << "\\converter \"" << cit->from
2483 << "\" \"" << cit->to << "\" \"\" \"\"\n";
2490 << "# COPIERS SECTION ##########################\n"
2493 // Look for new movers
2494 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2495 Movers::const_iterator const sysend = theSystemMovers().end();
2496 Movers::const_iterator it = theMovers().begin();
2497 Movers::const_iterator end = theMovers().end();
2499 for (; it != end; ++it) {
2500 Movers::const_iterator const sysit =
2501 find_if(sysbegin, sysend, SameMover(*it));
2502 if (sysit == sysend) {
2503 string const & fmt = it->first;
2504 string const & command =
2505 it->second.command();
2507 os << "\\copier " << fmt
2508 << " \"" << escapeCommand(command) << "\"\n";
2514 // We don't actually delete SpecialisedMover(s) from the
2515 // map, just clear their 'command', so there's no need
2516 // to test for anything else.
2524 string const LyXRC::getDescription(LyXRCTags tag)
2529 case RC_ACCEPT_COMPOUND:
2530 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
2534 case RC_USE_ALT_LANG:
2535 str = _("Specify an alternate language. The default is to use the language of the document.");
2538 case RC_PLAINTEXT_ROFF_COMMAND:
2539 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.");
2542 case RC_PLAINTEXT_LINELEN:
2543 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.");
2546 case RC_AUTOREGIONDELETE:
2547 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
2550 case RC_AUTORESET_OPTIONS:
2551 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
2555 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
2558 case RC_AUTO_NUMBER:
2561 case RC_BACKUPDIR_PATH:
2562 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.");
2565 case RC_BIBTEX_COMMAND:
2566 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
2569 case RC_JBIBTEX_COMMAND:
2570 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
2574 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
2577 case RC_CHECKLASTFILES:
2578 str = _("Select to check whether the lastfiles still exist.");
2581 case RC_CHKTEX_COMMAND:
2582 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
2591 case RC_CURSOR_FOLLOWS_SCROLLBAR:
2592 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.");
2595 case RC_SCROLL_BELOW_DOCUMENT:
2596 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");
2599 case RC_MAC_LIKE_WORD_MOVEMENT:
2600 str = _("Use the Mac OS X conventions for the word-level cursor movement");
2603 case RC_SHOW_MACRO_LABEL:
2604 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
2607 case RC_DATE_INSERT_FORMAT:
2608 //xgettext:no-c-format
2609 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
2613 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
2616 case RC_DEFAULT_VIEW_FORMAT:
2617 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
2620 case RC_DEFAULT_LANGUAGE:
2621 str = _("New documents will be assigned this language.");
2624 case RC_DEFAULT_PAPERSIZE:
2625 str = _("Specify the default paper size.");
2628 case RC_DIALOGS_ICONIFY_WITH_MAIN:
2629 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
2632 case RC_DISPLAY_GRAPHICS:
2633 str = _("Select how LyX will display any graphics.");
2636 case RC_DOCUMENTPATH:
2637 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
2641 case RC_USE_ESC_CHARS:
2642 str = _("Specify additional chars that can be part of a word.");
2645 case RC_EXAMPLEPATH:
2646 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
2649 case RC_FONT_ENCODING:
2650 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
2656 case RC_INDEX_COMMAND:
2657 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\".");
2660 case RC_JINDEX_COMMAND:
2661 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
2664 case RC_NOMENCL_COMMAND:
2665 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
2672 case RC_KBMAP_PRIMARY:
2673 case RC_KBMAP_SECONDARY:
2674 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.");
2677 case RC_LABEL_INIT_LENGTH:
2678 str = _("Maximum number of words in the initialization string for a new label");
2681 case RC_LANGUAGE_AUTO_BEGIN:
2682 str = _("Select if a language switching command is needed at the beginning of the document.");
2685 case RC_LANGUAGE_AUTO_END:
2686 str = _("Select if a language switching command is needed at the end of the document.");
2689 case RC_LANGUAGE_COMMAND_BEGIN:
2690 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.");
2693 case RC_LANGUAGE_COMMAND_END:
2694 str = _("The LaTeX command for changing back to the language of the document.");
2697 case RC_LANGUAGE_COMMAND_LOCAL:
2698 str = _("The LaTeX command for local changing of the language.");
2701 case RC_LANGUAGE_GLOBAL_OPTIONS:
2702 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
2705 case RC_LANGUAGE_PACKAGE:
2706 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
2709 case RC_LANGUAGE_USE_BABEL:
2710 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
2713 case RC_USELASTFILEPOS:
2714 str = _("De-select if you do not want LyX to scroll to saved position.");
2717 case RC_LOADSESSION:
2718 str = _("De-select to prevent loading files opened from the last LyX session.");
2721 case RC_MAKE_BACKUP:
2722 str = _("De-select if you don't want LyX to create backup files.");
2725 case RC_MARK_FOREIGN_LANGUAGE:
2726 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
2729 case RC_MOUSE_WHEEL_SPEED:
2730 str = bformat(_("The scrolling speed of the mouse wheel."),
2734 case RC_COMPLETION_POPUP_DELAY:
2735 str = _("The completion popup delay.");
2738 case RC_COMPLETION_POPUP_MATH:
2739 str = _("Select to display the completion popup in math mode.");
2742 case RC_COMPLETION_POPUP_TEXT:
2743 str = _("Select to display the completion popup in text mode.");
2746 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2747 str = _("Show the completion popup without delay after non-unique completion attempt.");
2750 case RC_COMPLETION_POPUP_TEXT:
2751 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
2754 case RC_COMPLETION_POPUP_DELAY:
2755 str = _("The inline completion delay.");
2758 case RC_COMPLETION_INLINE_MATH:
2759 str = _("Select to display the inline completion in math mode.");
2762 case RC_COMPLETION_INLINE_TEXT:
2763 str = _("Select to display the inline completion in text mode.");
2766 case RC_COMPLETION_INLINE_DOTS:
2767 str = _("Use \"...\" to shorten long completions.");
2770 case RC_AUTOCORRECTION_MATH:
2771 str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
2774 case RC_NUMLASTFILES:
2775 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
2779 case RC_PATH_PREFIX:
2780 str = _("Specify those directories which should be "
2781 "prepended to the PATH environment variable. "
2782 "Use the OS native format.");
2786 str = _("Shows a typeset preview of things such as math");
2789 case RC_PREVIEW_HASHED_LABELS:
2790 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
2793 case RC_PREVIEW_SCALE_FACTOR:
2794 str = _("Scale the preview size to suit.");
2797 case RC_PRINTCOLLCOPIESFLAG:
2798 str = _("The option for specifying whether the copies should be collated.");
2801 case RC_PRINTCOPIESFLAG:
2802 str = _("The option for specifying the number of copies to print.");
2806 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
2809 case RC_PRINTEVENPAGEFLAG:
2810 str = _("The option to print only even pages.");
2813 case RC_PRINTEXSTRAOPTIONS:
2814 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
2817 case RC_PRINTFILEEXTENSION:
2818 str = _("Extension of printer program output file. Usually \".ps\".");
2821 case RC_PRINTLANDSCAPEFLAG:
2822 str = _("The option to print out in landscape.");
2825 case RC_PRINTODDPAGEFLAG:
2826 str = _("The option to print only odd pages.");
2829 case RC_PRINTPAGERANGEFLAG:
2830 str = _("The option for specifying a comma-separated list of pages to print.");
2833 case RC_PRINTPAPERDIMENSIONFLAG:
2834 str = _("Option to specify the dimensions of the print paper.");
2837 case RC_PRINTPAPERFLAG:
2838 str = _("The option to specify paper type.");
2841 case RC_PRINTREVERSEFLAG:
2842 str = _("The option to reverse the order of the pages printed.");
2845 case RC_PRINTSPOOL_COMMAND:
2846 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.");
2849 case RC_PRINTSPOOL_PRINTERPREFIX:
2850 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.");
2853 case RC_PRINTTOFILE:
2854 str = _("Option to pass to the print program to print to a file.");
2857 case RC_PRINTTOPRINTER:
2858 str = _("Option to pass to the print program to print on a specific printer.");
2861 case RC_PRINT_ADAPTOUTPUT:
2862 str = _("Select for LyX to pass the name of the destination printer to your print command.");
2865 case RC_PRINT_COMMAND:
2866 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
2869 case RC_RTL_SUPPORT:
2870 str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
2873 case RC_VISUAL_CURSOR:
2874 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
2878 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
2881 case RC_SCREEN_FONT_ROMAN:
2882 case RC_SCREEN_FONT_SANS:
2883 case RC_SCREEN_FONT_TYPEWRITER:
2884 str = _("The screen fonts used to display the text while editing.");
2887 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
2888 case RC_SCREEN_FONT_SANS_FOUNDRY:
2889 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
2892 case RC_SCREEN_FONT_SCALABLE:
2893 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.");
2896 case RC_SCREEN_FONT_SIZES:
2897 str = _("The font sizes used for calculating the scaling of the screen fonts.");
2900 case RC_SCREEN_ZOOM:
2901 //xgettext:no-c-format
2902 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
2905 case RC_GEOMETRY_SESSION:
2906 str = _("Allow session manager to save and restore windows geometry.");
2910 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
2916 case RC_SHOW_BANNER:
2917 str = _("De-select if you don't want the startup banner.");
2920 case RC_TEMPDIRPATH:
2921 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
2924 case RC_THESAURUSDIRPATH:
2925 str = _("This is the place where the files of the thesaurus library reside.");
2928 case RC_TEMPLATEPATH:
2929 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
2932 case RC_TEX_ALLOWS_SPACES:
2935 case RC_TEX_EXPECTS_WINDOWS_PATHS:
2939 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
2951 case RC_USE_TOOLTIP:
2952 str = _("Enable the automatic appearance of tool tips in the work area.");
2955 case RC_USE_PIXMAP_CACHE:
2956 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
2959 case RC_USE_SPELL_LIB:
2962 case RC_VIEWDVI_PAPEROPTION:
2963 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
2978 // The global instance
2981 // The global copy of the system lyxrc entries (everything except preferences)