3 * This file is part of LyX, the document processor.
4 * Licence details can be found in the file COPYING.
6 * \author Lars Gullik Bjønnes
7 * \author Jean-Marc Lasgouttes
8 * \author Angus Leeming
10 * \author André Pönitz
14 * Full author contact details are available in file CREDITS.
22 #include "Converter.h"
23 #include "FontEnums.h"
31 #include "graphics/GraphicsTypes.h"
33 #include "support/convert.h"
34 #include "support/debug.h"
35 #include "support/environment.h"
36 #include "support/FileName.h"
37 #include "support/filetools.h"
38 #include "support/gettext.h"
39 #include "support/lstrings.h"
40 #include "support/os.h"
41 #include "support/Package.h"
42 #include "support/userinfo.h"
49 using namespace lyx::support;
53 namespace os = support::os;
57 // when adding something to this array keep it sorted!
58 LexerKeyword lyxrcTags[] = {
59 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
60 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
61 { "\\alternate_language", LyXRC::RC_ALT_LANG },
62 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
63 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
64 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
65 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
66 { "\\autosave", LyXRC::RC_AUTOSAVE },
67 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
68 { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
69 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
70 { "\\bind_file", LyXRC::RC_BINDFILE },
71 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
72 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
73 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
74 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
75 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
76 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
77 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
78 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
79 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
80 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
81 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
82 { "\\converter", LyXRC::RC_CONVERTER },
83 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
84 { "\\copier", LyXRC::RC_COPIER },
85 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
86 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
87 { "\\def_file", LyXRC::RC_DEFFILE },
88 { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
89 { "\\default_language", LyXRC::RC_DEFAULT_LANGUAGE },
90 { "\\default_papersize", LyXRC::RC_DEFAULT_PAPERSIZE },
91 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
92 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
93 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
94 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
95 { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
96 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
97 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
98 { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE },
99 { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
100 { "\\format", LyXRC::RC_FORMAT },
101 { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI },
102 { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF },
103 { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT },
104 { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR },
105 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
106 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
107 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
108 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
109 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
110 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
111 { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH },
112 { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
113 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
114 { "\\input", LyXRC::RC_INPUT },
115 { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
116 { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
117 { "\\kbmap", LyXRC::RC_KBMAP },
118 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
119 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
120 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
121 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
122 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
123 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
124 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
125 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
126 { "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE },
127 { "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL },
128 { "\\load_session", LyXRC::RC_LOADSESSION },
129 { "\\mac_dontswap_ctrl_meta", LyXRC::RC_MAC_DONTSWAP_CTRL_META },
130 { "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT },
131 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
132 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
133 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
134 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
135 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
136 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
137 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
138 { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS },
139 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
140 { "\\personal_dictionary", LyXRC::RC_PERS_DICT },
141 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
142 { "\\plaintext_roff_command", LyXRC::RC_PLAINTEXT_ROFF_COMMAND },
143 { "\\preview", LyXRC::RC_PREVIEW },
144 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
145 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
146 { "\\print_adapt_output", LyXRC::RC_PRINT_ADAPTOUTPUT },
147 { "\\print_collcopies_flag", LyXRC::RC_PRINTCOLLCOPIESFLAG },
148 { "\\print_command", LyXRC::RC_PRINT_COMMAND },
149 { "\\print_copies_flag", LyXRC::RC_PRINTCOPIESFLAG },
150 { "\\print_evenpage_flag", LyXRC::RC_PRINTEVENPAGEFLAG },
151 { "\\print_extra_options", LyXRC::RC_PRINTEXSTRAOPTIONS },
152 { "\\print_file_extension", LyXRC::RC_PRINTFILEEXTENSION },
153 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
154 { "\\print_oddpage_flag", LyXRC::RC_PRINTODDPAGEFLAG },
155 { "\\print_pagerange_flag", LyXRC::RC_PRINTPAGERANGEFLAG },
156 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
157 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
158 { "\\print_reverse_flag", LyXRC::RC_PRINTREVERSEFLAG },
159 { "\\print_spool_command", LyXRC::RC_PRINTSPOOL_COMMAND },
160 { "\\print_spool_printerprefix", LyXRC::RC_PRINTSPOOL_PRINTERPREFIX },
161 { "\\print_to_file", LyXRC::RC_PRINTTOFILE },
162 { "\\print_to_printer", LyXRC::RC_PRINTTOPRINTER },
163 { "\\printer", LyXRC::RC_PRINTER },
164 { "\\rtl", LyXRC::RC_RTL_SUPPORT },
165 { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
166 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
167 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
168 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
169 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
170 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
171 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
172 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
173 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
174 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
175 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
176 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
177 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
178 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
179 { "\\set_color", LyXRC::RC_SET_COLOR },
180 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
181 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
182 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
183 { "\\spell_command", LyXRC::RC_SPELL_COMMAND },
184 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
185 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
186 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
187 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
188 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
189 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
190 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
191 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
192 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
193 { "\\ui_file", LyXRC::RC_UIFILE },
194 { "\\use_alt_language", LyXRC::RC_USE_ALT_LANG },
195 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
196 { "\\use_escape_chars", LyXRC::RC_USE_ESC_CHARS },
197 { "\\use_input_encoding", LyXRC::RC_USE_INP_ENC },
198 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
199 { "\\use_personal_dictionary", LyXRC::RC_USE_PERS_DICT },
200 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
201 // compatibility with versions older than 1.4.0 only
202 { "\\use_pspell", LyXRC::RC_USE_SPELL_LIB },
203 { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
204 // compatibility with versions older than 1.4.0 only
205 { "\\use_tempdir", LyXRC::RC_USETEMPDIR },
206 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
207 { "\\user_email", LyXRC::RC_USER_EMAIL },
208 { "\\user_name", LyXRC::RC_USER_NAME },
209 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
210 // compatibility with versions older than 1.4.0 only
211 { "\\viewer", LyXRC::RC_VIEWER},
212 { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
213 { "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR}
216 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
227 void LyXRC::setDefaults()
230 def_file = "default";
232 // Get printer from the environment. If fail, use default "",
233 // assuming that everything is set up correctly.
234 printer = getEnv("PRINTER");
235 print_adapt_output = false;
236 print_command = "dvips";
237 print_evenpage_flag = "-B";
238 print_oddpage_flag = "-A";
239 print_pagerange_flag = "-pp";
240 print_copies_flag = "-c";
241 print_collcopies_flag = "-C";
242 print_reverse_flag = "-r";
243 print_landscape_flag = "-t landscape";
244 print_to_printer = "-P";
245 print_to_file = "-o ";
246 print_file_extension = ".ps";
247 print_paper_flag = "-t";
248 print_paper_dimension_flag = "-T";
249 document_path.erase();
250 view_dvi_paper_option.erase();
251 default_papersize = PAPER_DEFAULT;
252 default_view_format = "pdf2";
253 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
254 bibtex_command = "bibtex";
256 index_command = "makeindex -c -q";
257 nomencl_command = "makeindex -s nomencl.ist";
259 // Because a screen is typically wider than a piece of paper:
261 allow_geometry_session = true;
262 // Default LaTeX font size:
263 font_sizes[FONT_SIZE_TINY] = "5.0";
264 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
265 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
266 font_sizes[FONT_SIZE_SMALL] = "9.0";
267 font_sizes[FONT_SIZE_NORMAL] = "10.0";
268 font_sizes[FONT_SIZE_LARGE] = "12.0";
269 font_sizes[FONT_SIZE_LARGER] = "14.4";
270 font_sizes[FONT_SIZE_LARGEST] = "17.26";
271 font_sizes[FONT_SIZE_HUGE] = "20.74";
272 font_sizes[FONT_SIZE_HUGER] = "24.88";
273 use_scalable_fonts = true;
274 roman_font_name = "";
276 typewriter_font_name = "";
278 auto_region_delete = true;
279 auto_reset_options = false;
280 plaintext_linelen = 65;
281 mouse_wheel_speed = 1.0;
282 num_lastfiles = maxlastfiles;
283 check_lastfiles = true;
284 use_lastfilepos = true;
285 load_session = false;
287 save_compressed = false;
288 backupdir_path.erase();
289 display_graphics = true;
290 // Spellchecker settings:
291 // FIXME: this check should test the target platform (darwin)
292 #if defined(USE_MACOSX_PACKAGING)
293 spellchecker = "native";
294 #elif defined(USE_ASPELL)
295 spellchecker = "aspell";
296 #elif defined(USE_HUNSPELL)
297 spellchecker = "hunspell";
299 spellchecker = "aspell";
301 spellchecker_accept_compound = false;
302 spellcheck_continuously = false;
303 spellcheck_notes = true;
306 visual_cursor = false;
308 mark_foreign_language = true;
309 language_auto_begin = true;
310 language_auto_end = true;
311 language_global_options = true;
312 language_use_babel = true;
313 language_package = "\\usepackage{babel}";
314 language_command_begin = "\\selectlanguage{$$lang}";
315 language_command_local = "\\foreignlanguage{$$lang}{";
316 sort_layouts = false;
317 group_layouts = true;
318 default_language = "english";
319 gui_language = "auto";
321 windows_style_tex_paths = false;
322 tex_allows_spaces = false;
323 date_insert_format = "%x";
324 cursor_follows_scrollbar = false;
325 scroll_below_document = false;
326 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
327 paragraph_markers = false;
328 mac_dontswap_ctrl_meta = false;
329 mac_like_word_movement = false;
330 macro_edit_style = MACRO_EDIT_INLINE_BOX;
331 dialogs_iconify_with_main = false;
332 preview = PREVIEW_OFF;
333 preview_hashed_labels = false;
334 preview_scale_factor = 1.0;
335 use_converter_cache = true;
336 use_system_colors = false;
338 use_pixmap_cache = false;
339 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
340 user_name = to_utf8(support::user_name());
341 user_email = to_utf8(support::user_email());
342 open_buffers_in_tabs = true;
343 single_close_tab_button = false;
344 forward_search_dvi = string();
345 forward_search_pdf = string();
346 export_overwrite = NO_FILES;
348 // Fullscreen settings
349 full_screen_limit = false;
350 full_screen_toolbars = true;
351 full_screen_tabbar = true;
352 full_screen_menubar = true;
353 full_screen_scrollbar = true;
354 full_screen_width = 700;
356 completion_cursor_text = true;
357 completion_popup_math = true;
358 completion_popup_text = false;
359 completion_popup_delay = 2.0;
360 completion_popup_after_complete = true;
361 autocorrection_math = false;
362 completion_inline_math = true;
363 completion_inline_text = false;
364 completion_inline_dots = -1;
365 completion_inline_delay = 0.2;
366 default_decimal_point = ".";
372 void oldFontFormat(string & family, string & foundry)
374 if (family.empty() || family[0] != '-')
376 foundry = token(family, '-', 1);
377 family = token(family, '-', 2);
385 int LyXRC::read(FileName const & filename)
387 Lexer lexrc(lyxrcTags);
388 if (lyxerr.debugging(Debug::PARSER))
389 lexrc.printTable(lyxerr);
391 lexrc.setFile(filename);
395 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
401 int LyXRC::read(istream & is)
403 Lexer lexrc(lyxrcTags);
404 if (lyxerr.debugging(Debug::PARSER))
405 lexrc.printTable(lyxerr);
411 LYXERR(Debug::LYXRC, "Reading istream...");
417 int LyXRC::read(Lexer & lexrc)
422 while (lexrc.isOK()) {
423 // By using two switches we take advantage of the compiler
424 // telling us if we have missed a LyXRCTags element in
425 // the second switch.
426 // Note that this also shows a problem with Lexer since it
427 // helps us avoid taking advantage of the strictness of the
430 int le = lexrc.lex();
432 case Lexer::LEX_UNDEF:
433 lexrc.printError("Unknown tag `$$Token'");
435 case Lexer::LEX_FEOF:
440 switch (static_cast<LyXRCTags>(le)) {
441 case RC_INPUT: // Include file
444 libFileSearch(string(),
447 lexrc.printError("Error reading "
448 "included file: " + tmp.absFileName());
454 bind_file = os::internal_path(lexrc.getString());
459 def_file = os::internal_path(lexrc.getString());
464 ui_file = os::internal_path(lexrc.getString());
467 case RC_AUTORESET_OPTIONS:
468 lexrc >> auto_reset_options;
471 case RC_DISPLAY_GRAPHICS:
473 display_graphics = lexrc.getString() == "true";
476 case RC_TEX_EXPECTS_WINDOWS_PATHS:
477 lexrc >> windows_style_tex_paths;
480 case RC_TEX_ALLOWS_SPACES:
481 lexrc >> tex_allows_spaces;
488 case RC_KBMAP_PRIMARY:
490 string const kmap(os::internal_path(lexrc.getString()));
491 if (!libFileSearch("kbd", kmap, "kmap").empty()
493 primary_kbmap = kmap;
495 lexrc.printError("LyX: Keymap `$$Token' not found");
500 case RC_KBMAP_SECONDARY:
502 string const kmap(os::internal_path(lexrc.getString()));
503 if (!libFileSearch("kbd", kmap, "kmap").empty()
505 secondary_kbmap = kmap;
507 lexrc.printError("LyX: Keymap `$$Token' not found");
512 case RC_FONT_ENCODING:
520 case RC_PRINT_COMMAND:
521 if (lexrc.next(true)) {
522 print_command = lexrc.getString();
526 case RC_PRINTEVENPAGEFLAG:
527 lexrc >> print_evenpage_flag;
530 case RC_PRINTODDPAGEFLAG:
531 lexrc >> print_oddpage_flag;
534 case RC_PRINTPAGERANGEFLAG:
535 lexrc >> print_pagerange_flag;
538 case RC_PRINTCOPIESFLAG:
539 lexrc >> print_copies_flag;
542 case RC_PRINTCOLLCOPIESFLAG:
543 lexrc >> print_collcopies_flag;
546 case RC_PRINTREVERSEFLAG:
547 lexrc >> print_reverse_flag;
550 case RC_PRINTLANDSCAPEFLAG:
551 lexrc >> print_landscape_flag;
554 case RC_PRINTTOPRINTER:
555 lexrc >> print_to_printer;
558 case RC_PRINT_ADAPTOUTPUT:
559 lexrc >> print_adapt_output;
564 print_to_file = os::internal_path(lexrc.getString());
568 case RC_PRINTFILEEXTENSION:
569 lexrc >> print_file_extension;
572 case RC_PRINTEXSTRAOPTIONS:
573 lexrc >> print_extra_options;
576 case RC_PRINTSPOOL_COMMAND:
577 if (lexrc.next(true)) {
578 print_spool_command = lexrc.getString();
582 case RC_PRINTSPOOL_PRINTERPREFIX:
583 lexrc >> print_spool_printerprefix;
586 case RC_PRINTPAPERDIMENSIONFLAG:
587 lexrc >> print_paper_dimension_flag;
590 case RC_PRINTPAPERFLAG:
591 lexrc >> print_paper_flag;
594 case RC_DEFAULT_PAPERSIZE:
596 string const size = ascii_lowercase(lexrc.getString());
597 if (size == "usletter")
598 default_papersize = PAPER_USLETTER;
599 else if (size == "legal")
600 default_papersize = PAPER_USLEGAL;
601 else if (size == "executive")
602 default_papersize = PAPER_USEXECUTIVE;
603 else if (size == "a3")
604 default_papersize = PAPER_A3;
605 else if (size == "a4")
606 default_papersize = PAPER_A4;
607 else if (size == "a5")
608 default_papersize = PAPER_A5;
609 else if (size == "b5")
610 default_papersize = PAPER_B5;
611 else if (size == "default")
612 default_papersize = PAPER_DEFAULT;
616 case RC_VIEWDVI_PAPEROPTION:
618 view_dvi_paper_option = lexrc.getString();
620 view_dvi_paper_option.erase();
623 case RC_CHKTEX_COMMAND:
624 if (lexrc.next(true)) {
625 chktex_command = lexrc.getString();
629 case RC_BIBTEX_ALTERNATIVES:
630 if (lexrc.next(true)) {
631 bibtex_alternatives.insert(lexrc.getString());
635 case RC_BIBTEX_COMMAND:
636 if (lexrc.next(true)) {
637 bibtex_command = lexrc.getString();
641 case RC_JBIBTEX_COMMAND:
642 if (lexrc.next(true)) {
643 jbibtex_command = lexrc.getString();
647 case RC_INDEX_ALTERNATIVES:
648 if (lexrc.next(true)) {
649 index_alternatives.insert(lexrc.getString());
653 case RC_INDEX_COMMAND:
654 if (lexrc.next(true)) {
655 index_command = lexrc.getString();
659 case RC_JINDEX_COMMAND:
660 if (lexrc.next(true)) {
661 jindex_command = lexrc.getString();
665 case RC_SPLITINDEX_COMMAND:
666 if (lexrc.next(true)) {
667 splitindex_command = lexrc.getString();
671 case RC_NOMENCL_COMMAND:
672 if (lexrc.next(true)) {
673 nomencl_command = lexrc.getString();
685 case RC_GEOMETRY_SESSION:
686 lexrc >> allow_geometry_session;
689 case RC_SCREEN_FONT_SIZES:
690 lexrc >> font_sizes[FONT_SIZE_TINY];
691 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
692 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
693 lexrc >> font_sizes[FONT_SIZE_SMALL];
694 lexrc >> font_sizes[FONT_SIZE_NORMAL];
695 lexrc >> font_sizes[FONT_SIZE_LARGE];
696 lexrc >> font_sizes[FONT_SIZE_LARGER];
697 lexrc >> font_sizes[FONT_SIZE_LARGEST];
698 lexrc >> font_sizes[FONT_SIZE_HUGE];
699 lexrc >> font_sizes[FONT_SIZE_HUGER];
702 case RC_SCREEN_FONT_SCALABLE:
703 lexrc >> use_scalable_fonts;
710 case RC_DOCUMENTPATH:
712 document_path = os::internal_path(lexrc.getString());
713 document_path = expandPath(document_path);
719 example_path = os::internal_path(lexrc.getString());
720 example_path = expandPath(example_path);
724 case RC_TEMPLATEPATH:
726 template_path = os::internal_path(lexrc.getString());
727 template_path = expandPath(template_path);
733 tempdir_path = os::internal_path(lexrc.getString());
734 tempdir_path = expandPath(tempdir_path);
738 case RC_THESAURUSDIRPATH:
740 thesaurusdir_path = os::internal_path(lexrc.getString());
741 thesaurusdir_path = expandPath(thesaurusdir_path);
745 case RC_HUNSPELLDIR_PATH:
747 hunspelldir_path = os::internal_path(lexrc.getString());
748 hunspelldir_path = expandPath(hunspelldir_path);
752 case RC_USELASTFILEPOS:
753 lexrc >> use_lastfilepos;
757 lexrc >> load_session;
760 case RC_MOUSE_WHEEL_SPEED:
761 lexrc >> mouse_wheel_speed;
764 case RC_COMPLETION_INLINE_DELAY:
765 lexrc >> completion_inline_delay;
768 case RC_COMPLETION_INLINE_MATH:
769 lexrc >> completion_inline_math;
772 case RC_COMPLETION_INLINE_TEXT:
773 lexrc >> completion_inline_text;
776 case RC_COMPLETION_INLINE_DOTS:
777 lexrc >> completion_inline_dots;
780 case RC_AUTOCORRECTION_MATH:
781 lexrc >> autocorrection_math;
784 case RC_COMPLETION_POPUP_DELAY:
785 lexrc >> completion_popup_delay;
788 case RC_COMPLETION_POPUP_MATH:
789 lexrc >> completion_popup_math;
792 case RC_COMPLETION_POPUP_TEXT:
793 lexrc >> completion_popup_text;
796 case RC_COMPLETION_CURSOR_TEXT:
797 lexrc >> completion_cursor_text;
800 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
801 lexrc >> completion_popup_after_complete;
804 case RC_NUMLASTFILES:
805 lexrc >> num_lastfiles;
808 case RC_CHECKLASTFILES:
809 lexrc >> check_lastfiles;
812 case RC_SCREEN_FONT_ROMAN:
814 roman_font_name = lexrc.getString();
815 oldFontFormat(roman_font_name,
820 case RC_SCREEN_FONT_SANS:
822 sans_font_name = lexrc.getString();
823 oldFontFormat(sans_font_name, sans_font_foundry);
827 case RC_SCREEN_FONT_TYPEWRITER:
829 typewriter_font_name = lexrc.getString();
830 oldFontFormat(typewriter_font_name,
831 typewriter_font_foundry);
835 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
836 lexrc >> roman_font_foundry;
839 case RC_SCREEN_FONT_SANS_FOUNDRY:
840 lexrc >> sans_font_foundry;
843 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
844 lexrc >> typewriter_font_foundry;
849 lexrc.printError("Missing color tag.");
852 string lyx_name = lexrc.getString();
855 lexrc.printError("Missing color name for color: `$$Token'");
858 string x11_name = lexrc.getString();
860 ColorCode const col =
861 lcolor.getFromLyXName(lyx_name);
862 if (col == Color_none ||
863 col == Color_inherit ||
867 if (!lcolor.setColor(col, x11_name))
868 LYXERR0("Bad lyxrc set_color for " << lyx_name);
872 case RC_AUTOREGIONDELETE:
873 // Auto region delete defaults to true
874 lexrc >> auto_region_delete;
879 lyxpipes = os::internal_path(lexrc.getString());
880 lyxpipes = expandPath(lyxpipes);
884 case RC_CURSOR_FOLLOWS_SCROLLBAR:
885 lexrc >> cursor_follows_scrollbar;
888 case RC_SCROLL_BELOW_DOCUMENT:
889 lexrc >> scroll_below_document;
892 case RC_PARAGRAPH_MARKERS:
893 lexrc >> paragraph_markers;
896 case RC_MAC_DONTSWAP_CTRL_META:
897 lexrc >> mac_dontswap_ctrl_meta;
900 case RC_MAC_LIKE_WORD_MOVEMENT:
901 lexrc >> mac_like_word_movement;
904 case RC_MACRO_EDIT_STYLE:
906 switch (lexrc.getInteger()) {
907 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
908 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
909 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
914 case RC_DIALOGS_ICONIFY_WITH_MAIN:
915 lexrc >> dialogs_iconify_with_main;
918 case RC_PLAINTEXT_LINELEN:
919 lexrc >> plaintext_linelen;
921 // Spellchecker settings:
922 case RC_ACCEPT_COMPOUND:
923 lexrc >> spellchecker_accept_compound;
925 case RC_USE_SYSTEM_COLORS:
926 lexrc >> use_system_colors;
929 lexrc >> use_tooltip;
931 case RC_USE_PIXMAP_CACHE:
932 lexrc >> use_pixmap_cache;
934 case RC_SPELLCHECKER:
935 lexrc >> spellchecker;
938 lexrc >> spellchecker_alt_lang;
941 lexrc >> spellchecker_esc_chars;
943 case RC_SPELLCHECK_CONTINUOUSLY:
944 lexrc >> spellcheck_continuously;
946 case RC_SPELLCHECK_NOTES:
947 lexrc >> spellcheck_notes;
950 lexrc >> make_backup;
952 case RC_SAVE_COMPRESSED:
953 lexrc >> save_compressed;
955 case RC_BACKUPDIR_PATH:
957 backupdir_path = os::internal_path(lexrc.getString());
958 backupdir_path = expandPath(backupdir_path);
961 case RC_DEFAULT_DECIMAL_POINT:
962 lexrc >> default_decimal_point;
964 case RC_DATE_INSERT_FORMAT:
965 lexrc >> date_insert_format;
967 case RC_LANGUAGE_PACKAGE:
968 lexrc >> language_package;
970 case RC_LANGUAGE_AUTO_BEGIN:
971 lexrc >> language_auto_begin;
973 case RC_LANGUAGE_AUTO_END:
974 lexrc >> language_auto_end;
976 case RC_LANGUAGE_GLOBAL_OPTIONS:
977 lexrc >> language_global_options;
979 case RC_LANGUAGE_USE_BABEL:
980 lexrc >> language_use_babel;
982 case RC_LANGUAGE_COMMAND_BEGIN:
983 lexrc >> language_command_begin;
985 case RC_LANGUAGE_COMMAND_END:
986 lexrc >> language_command_end;
988 case RC_LANGUAGE_COMMAND_LOCAL:
989 lexrc >> language_command_local;
992 lexrc >> rtl_support;
994 case RC_VISUAL_CURSOR:
995 lexrc >> visual_cursor;
998 lexrc >> auto_number;
1000 case RC_MARK_FOREIGN_LANGUAGE:
1001 lexrc >> mark_foreign_language;
1005 string fmt, command;
1007 fmt = lexrc.getString();
1008 if (lexrc.next(true))
1009 command = lexrc.getString();
1010 setMover(fmt, command);
1014 case RC_CONVERTER: {
1015 string from, to, command, flags;
1017 from = lexrc.getString();
1019 to = lexrc.getString();
1020 if (lexrc.next(true))
1021 command = lexrc.getString();
1023 flags = lexrc.getString();
1024 if (command.empty())
1025 theConverters().erase(from, to);
1027 theConverters().add(from, to, command, flags);
1030 // compatibility with versions older than 1.4.0 only
1032 string format, command;
1033 lexrc >> format >> command;
1034 formats.setViewer(format, command);
1038 string format, extension, prettyname, shortcut;
1039 lexrc >> format >> extension >> prettyname >> shortcut;
1040 string viewer, editor;
1041 if (lexrc.next(true))
1042 viewer = lexrc.getString();
1043 if (lexrc.next(true))
1044 editor = lexrc.getString();
1046 // Hack to ensure compatibility with versions older
1048 int le = lexrc.lex();
1049 if (le != Lexer::LEX_FEOF && le != Lexer::LEX_UNDEF) {
1050 flags = lexrc.getString();
1051 if (le != Lexer::LEX_DATA) {
1052 // We have got a known token.
1053 // Therefore this is an old style
1054 // format definition without
1056 lexrc.pushToken(flags);
1060 int flgs = Format::none;
1061 while (!flags.empty()) {
1063 flags = split(flags, flag, ',');
1064 if (flag == "document")
1065 flgs |= Format::document;
1066 else if (flag == "vector")
1067 flgs |= Format::vector;
1069 LYXERR0("Ignoring unknown flag `"
1070 << flag << "' for format `"
1073 if (prettyname.empty()) {
1074 if (theConverters().formatIsUsed(format))
1075 LYXERR0("Can't delete format " << format);
1077 formats.erase(format);
1079 formats.add(format, extension, prettyname,
1080 shortcut, viewer, editor, flgs);
1084 case RC_VIEWER_ALTERNATIVES: {
1085 string format, command;
1087 format = lexrc.getString();
1088 if (lexrc.eatLine())
1089 command = lexrc.getString();
1090 viewer_alternatives[format].insert(command);
1093 case RC_EDITOR_ALTERNATIVES: {
1094 string format, command;
1095 lexrc >> format >> command;
1096 editor_alternatives[format].insert(command);
1100 case RC_DEFAULT_VIEW_FORMAT:
1101 lexrc >> default_view_format;
1104 case RC_DEFAULT_LANGUAGE:
1105 lexrc >> default_language;
1108 case RC_GUI_LANGUAGE:
1109 lexrc >> gui_language;
1112 case RC_SHOW_BANNER:
1113 lexrc >> show_banner;
1118 string const tmp = lexrc.getString();
1119 if (tmp == "true" || tmp == "on")
1120 preview = PREVIEW_ON;
1121 else if (tmp == "no_math")
1122 preview = PREVIEW_NO_MATH;
1124 preview = PREVIEW_OFF;
1125 if (tmp != "false" && tmp != "off")
1126 LYXERR0("Unrecognized preview status \""
1132 case RC_PREVIEW_HASHED_LABELS:
1133 lexrc >> preview_hashed_labels;
1136 case RC_PREVIEW_SCALE_FACTOR:
1137 lexrc >> preview_scale_factor;
1144 lexrc >> user_email;
1147 case RC_PATH_PREFIX:
1148 lexrc >> path_prefix;
1151 case RC_USE_CONVERTER_CACHE:
1152 lexrc >> use_converter_cache;
1154 case RC_CONVERTER_CACHE_MAXAGE:
1155 lexrc >> converter_cache_maxage;
1158 case RC_SORT_LAYOUTS:
1159 lexrc >> sort_layouts;
1161 case RC_GROUP_LAYOUTS:
1162 lexrc >> group_layouts;
1164 case RC_FULL_SCREEN_LIMIT:
1165 lexrc >> full_screen_limit;
1167 case RC_FULL_SCREEN_TOOLBARS:
1168 lexrc >> full_screen_toolbars;
1170 case RC_FULL_SCREEN_SCROLLBAR:
1171 lexrc >> full_screen_scrollbar;
1173 case RC_FULL_SCREEN_TABBAR:
1174 lexrc >> full_screen_tabbar;
1176 case RC_FULL_SCREEN_MENUBAR:
1177 lexrc >> full_screen_menubar;
1179 case RC_FULL_SCREEN_WIDTH:
1180 lexrc >> full_screen_width;
1182 case RC_OPEN_BUFFERS_IN_TABS:
1183 lexrc >> open_buffers_in_tabs;
1185 case RC_SINGLE_CLOSE_TAB_BUTTON:
1186 lexrc >> single_close_tab_button;
1188 case RC_FORWARD_SEARCH_DVI:
1189 if (lexrc.next(true))
1190 forward_search_dvi = lexrc.getString();
1192 case RC_FORWARD_SEARCH_PDF:
1193 if (lexrc.next(true))
1194 forward_search_pdf = lexrc.getString();
1196 case RC_EXPORT_OVERWRITE:
1198 string const tmp = lexrc.getString();
1199 if (tmp == "all" || tmp == "true")
1200 export_overwrite = ALL_FILES;
1201 else if (tmp == "main")
1202 export_overwrite = MAIN_FILE;
1204 export_overwrite = NO_FILES;
1205 if (tmp != "ask" && tmp != "false")
1206 LYXERR0("Unrecognized export_overwrite status \""
1211 case RC_SCROLL_WHEEL_ZOOM:
1213 string const tmp = lexrc.getString();
1215 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1216 else if (tmp == "shift")
1217 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1218 else if (tmp == "alt")
1219 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1221 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1222 if (tmp != "off" && tmp != "false")
1223 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1229 // Obsoteted in 1.4.0
1232 case RC_SPELL_COMMAND:
1234 case RC_PLAINTEXT_ROFF_COMMAND:
1235 case RC_USE_ALT_LANG:
1236 case RC_USE_ESC_CHARS:
1237 case RC_USE_INP_ENC:
1238 case RC_USE_PERS_DICT:
1239 case RC_USE_SPELL_LIB:
1240 LYXERR(Debug::LYXRC, "Skipping obsolete tag `"
1241 << lexrc.getString() << "'.");
1246 break; // this is just a dummy
1250 /// Update converters data-structures
1251 theConverters().update(formats);
1252 theConverters().buildGraph();
1258 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1260 ofstream ofs(filename.toFilesystemEncoding().c_str());
1262 write(ofs, ignore_system_lyxrc);
1266 void LyXRC::print() const
1268 if (lyxerr.debugging())
1269 write(lyxerr, false);
1277 typedef pair<string, SpecialisedMover> Data;
1279 SameMover(Data const & comparison)
1280 : comparison_(comparison) {}
1282 bool operator()(Data const & data) const
1284 return data.first == comparison_.first &&
1285 data.second.command() == comparison_.second.command();
1295 // Escape \ and " so that LyXLex can read the string later
1296 string escapeCommand(string const & str) {
1297 return subst(subst(str , "\\", "\\\\"),
1304 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1306 LyXRCTags tag = RC_LAST;
1308 if (!name.empty()) {
1309 for (int i = 0; i != lyxrcCount; ++i)
1310 if ("\\" + name == lyxrcTags[i].tag)
1311 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1315 os << "# LyX " << lyx_version
1316 << " generated this file. If you want to make your own\n"
1317 << "# modifications you should do them from inside LyX and save.\n"
1320 // Why the switch you might ask. It is a trick to ensure that all
1321 // the elements in the LyXRCTags enum are handled. As you can see
1322 // there are no breaks at all. So it is just a huge fall-through.
1323 // The nice thing is that we will get a warning from the compiler
1324 // if we forget an element.
1328 // input/include files are not done here
1330 if (ignore_system_lyxrc ||
1331 bind_file != system_lyxrc.bind_file) {
1332 string const path = os::external_path(bind_file);
1333 os << "\\bind_file \"" << path << "\"\n";
1339 if (ignore_system_lyxrc ||
1340 def_file != system_lyxrc.def_file) {
1341 string const path = os::external_path(def_file);
1342 os << "\\def_file \"" << path << "\"\n";
1351 << "# MISC SECTION ######################################\n"
1353 // bind files are not done here.
1355 case RC_PATH_PREFIX:
1356 if (ignore_system_lyxrc ||
1357 path_prefix != system_lyxrc.path_prefix) {
1358 os << "\\path_prefix \"" << path_prefix << "\"\n";
1363 if (ignore_system_lyxrc ||
1364 ui_file != system_lyxrc.ui_file) {
1365 string const path = os::external_path(ui_file);
1366 os << "\\ui_file \"" << path << "\"\n";
1370 case RC_AUTOREGIONDELETE:
1371 if (ignore_system_lyxrc ||
1372 auto_region_delete != system_lyxrc.auto_region_delete) {
1373 os << "# Set to false to inhibit automatic replacement of\n"
1374 << "# the current selection.\n"
1375 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1380 case RC_AUTORESET_OPTIONS:
1381 if (ignore_system_lyxrc ||
1382 auto_reset_options != system_lyxrc.auto_reset_options) {
1383 os << "# Set to false to inhibit automatic reset of\n"
1384 << "# the class options to defaults on class change.\n"
1385 << "\\auto_reset_options "
1386 << convert<string>(auto_reset_options)
1392 if (ignore_system_lyxrc ||
1393 autosave != system_lyxrc.autosave) {
1394 os << "# The time interval between auto-saves in seconds.\n"
1395 << "\\autosave " << autosave << '\n';
1399 case RC_DISPLAY_GRAPHICS:
1400 if (ignore_system_lyxrc ||
1401 display_graphics != system_lyxrc.display_graphics) {
1402 os << "# Display graphics within LyX\n"
1404 << "\\display_graphics "
1405 << (display_graphics ? "true" : "false")
1410 case RC_SORT_LAYOUTS:
1411 if (ignore_system_lyxrc ||
1412 sort_layouts != system_lyxrc.sort_layouts) {
1413 os << "# Sort layouts alphabetically.\n"
1414 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1418 case RC_GROUP_LAYOUTS:
1419 if (ignore_system_lyxrc ||
1420 group_layouts != system_lyxrc.group_layouts) {
1421 os << "# Group layouts by their category.\n"
1422 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1426 case RC_VIEWDVI_PAPEROPTION:
1427 if (ignore_system_lyxrc ||
1428 view_dvi_paper_option
1429 != system_lyxrc.view_dvi_paper_option) {
1430 os << "# Options used to specify paper size to the\n"
1431 << "# view_dvi_command (e.g. -paper)\n"
1432 << "\\view_dvi_paper_option \""
1433 << view_dvi_paper_option << "\"\n";
1437 case RC_DEFAULT_PAPERSIZE:
1438 if (ignore_system_lyxrc ||
1439 default_papersize != system_lyxrc.default_papersize) {
1440 os << "# The default papersize to use.\n"
1441 << "\\default_papersize \"";
1442 switch (default_papersize) {
1444 os << "default"; break;
1445 case PAPER_USLETTER:
1446 os << "usletter"; break;
1448 os << "legal"; break;
1449 case PAPER_USEXECUTIVE:
1450 os << "executive"; break;
1483 case PAPER_JISB6: break;
1489 case RC_CHKTEX_COMMAND:
1490 if (ignore_system_lyxrc ||
1491 chktex_command != system_lyxrc.chktex_command) {
1492 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1496 case RC_BIBTEX_ALTERNATIVES: {
1497 CommandSet::const_iterator it = bibtex_alternatives.begin();
1498 CommandSet::const_iterator end = bibtex_alternatives.end();
1499 for ( ; it != end; ++it) {
1500 if (ignore_system_lyxrc
1501 || !system_lyxrc.bibtex_alternatives.count(*it))
1502 os << "\\bibtex_alternatives \""
1508 case RC_BIBTEX_COMMAND:
1509 if (ignore_system_lyxrc ||
1510 bibtex_command != system_lyxrc.bibtex_command) {
1511 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1515 case RC_JBIBTEX_COMMAND:
1516 if (ignore_system_lyxrc ||
1517 jbibtex_command != system_lyxrc.jbibtex_command) {
1518 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1522 case RC_INDEX_ALTERNATIVES: {
1523 CommandSet::const_iterator it = index_alternatives.begin();
1524 CommandSet::const_iterator end = index_alternatives.end();
1525 for ( ; it != end; ++it) {
1526 if (ignore_system_lyxrc
1527 || !system_lyxrc.index_alternatives.count(*it))
1528 os << "\\index_alternatives \""
1534 case RC_INDEX_COMMAND:
1535 if (ignore_system_lyxrc ||
1536 index_command != system_lyxrc.index_command) {
1537 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1541 case RC_JINDEX_COMMAND:
1542 if (ignore_system_lyxrc ||
1543 jindex_command != system_lyxrc.jindex_command) {
1544 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1548 case RC_SPLITINDEX_COMMAND:
1549 if (ignore_system_lyxrc ||
1550 splitindex_command != system_lyxrc.splitindex_command) {
1551 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1555 case RC_NOMENCL_COMMAND:
1556 if (ignore_system_lyxrc ||
1557 nomencl_command != system_lyxrc.nomencl_command) {
1558 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1562 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1563 if (ignore_system_lyxrc ||
1564 windows_style_tex_paths != system_lyxrc.windows_style_tex_paths) {
1565 os << "\\tex_expects_windows_paths "
1566 << convert<string>(windows_style_tex_paths) << '\n';
1570 case RC_TEX_ALLOWS_SPACES:
1571 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1572 os << "\\tex_allows_spaces "
1573 << convert<string>(tex_allows_spaces) << '\n';
1578 if (ignore_system_lyxrc ||
1579 use_kbmap != system_lyxrc.use_kbmap) {
1580 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1584 case RC_KBMAP_PRIMARY:
1585 if (ignore_system_lyxrc ||
1586 primary_kbmap != system_lyxrc.primary_kbmap) {
1587 string const path = os::external_path(primary_kbmap);
1588 os << "\\kbmap_primary \"" << path << "\"\n";
1592 case RC_KBMAP_SECONDARY:
1593 if (ignore_system_lyxrc ||
1594 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1595 string const path = os::external_path(secondary_kbmap);
1596 os << "\\kbmap_secondary \"" << path << "\"\n";
1601 if (ignore_system_lyxrc ||
1602 lyxpipes != system_lyxrc.lyxpipes) {
1603 string const path = os::external_path(lyxpipes);
1604 os << "\\serverpipe \"" << path << "\"\n";
1608 case RC_DATE_INSERT_FORMAT:
1609 if (ignore_system_lyxrc ||
1610 date_insert_format != system_lyxrc.date_insert_format) {
1611 os << "\\date_insert_format \"" << date_insert_format
1618 os << "\\user_name \"" << user_name << "\"\n";
1623 os << "\\user_email \"" << user_email << "\"\n";
1627 case RC_SHOW_BANNER:
1628 if (ignore_system_lyxrc ||
1629 show_banner != system_lyxrc.show_banner) {
1630 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1636 if (ignore_system_lyxrc ||
1637 preview != system_lyxrc.preview) {
1643 case PREVIEW_NO_MATH:
1650 os << "\\preview " << status << '\n';
1655 case RC_PREVIEW_HASHED_LABELS:
1656 if (ignore_system_lyxrc ||
1657 preview_hashed_labels !=
1658 system_lyxrc.preview_hashed_labels) {
1659 os << "\\preview_hashed_labels "
1660 << convert<string>(preview_hashed_labels) << '\n';
1665 case RC_PREVIEW_SCALE_FACTOR:
1666 if (ignore_system_lyxrc ||
1667 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1668 os << "\\preview_scale_factor "
1669 << preview_scale_factor << '\n';
1674 case RC_USE_CONVERTER_CACHE:
1675 if (ignore_system_lyxrc ||
1676 use_converter_cache != system_lyxrc.use_converter_cache) {
1677 os << "\\use_converter_cache "
1678 << convert<string>(use_converter_cache) << '\n';
1683 case RC_CONVERTER_CACHE_MAXAGE:
1684 if (ignore_system_lyxrc ||
1685 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1686 os << "\\converter_cache_maxage "
1687 << converter_cache_maxage << '\n';
1693 << "# SCREEN & FONTS SECTION ############################\n"
1697 if (ignore_system_lyxrc ||
1698 dpi != system_lyxrc.dpi) {
1699 os << "\\screen_dpi " << dpi << '\n';
1703 case RC_SCREEN_ZOOM:
1704 if (ignore_system_lyxrc ||
1705 zoom != system_lyxrc.zoom) {
1706 os << "\\screen_zoom " << zoom << '\n';
1710 case RC_GEOMETRY_SESSION:
1711 if (ignore_system_lyxrc ||
1712 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1713 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1718 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1719 if (ignore_system_lyxrc ||
1720 cursor_follows_scrollbar
1721 != system_lyxrc.cursor_follows_scrollbar) {
1722 os << "\\cursor_follows_scrollbar "
1723 << convert<string>(cursor_follows_scrollbar) << '\n';
1727 case RC_SCROLL_BELOW_DOCUMENT:
1728 if (ignore_system_lyxrc ||
1729 scroll_below_document
1730 != system_lyxrc.scroll_below_document) {
1731 os << "\\scroll_below_document "
1732 << convert<string>(scroll_below_document) << '\n';
1736 case RC_PARAGRAPH_MARKERS:
1737 if (ignore_system_lyxrc ||
1739 != system_lyxrc.paragraph_markers) {
1740 os << "\\paragraph_markers "
1741 << convert<string>(paragraph_markers) << '\n';
1745 case RC_MAC_DONTSWAP_CTRL_META:
1746 if (ignore_system_lyxrc ||
1747 mac_dontswap_ctrl_meta
1748 != system_lyxrc.mac_dontswap_ctrl_meta) {
1749 os << "\\mac_dontswap_ctrl_meta "
1750 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1754 case RC_MAC_LIKE_WORD_MOVEMENT:
1755 if (ignore_system_lyxrc ||
1756 mac_like_word_movement
1757 != system_lyxrc.mac_like_word_movement) {
1758 os << "\\mac_like_word_movement "
1759 << convert<string>(mac_like_word_movement) << '\n';
1763 case RC_MACRO_EDIT_STYLE:
1764 if (ignore_system_lyxrc ||
1766 != system_lyxrc.macro_edit_style) {
1767 os << "\\macro_edit_style ";
1768 switch (macro_edit_style) {
1769 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1770 case MACRO_EDIT_INLINE: os << "1\n"; break;
1771 case MACRO_EDIT_LIST: os << "2\n"; break;
1776 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1777 if (ignore_system_lyxrc ||
1778 dialogs_iconify_with_main
1779 != system_lyxrc.dialogs_iconify_with_main) {
1780 os << "\\dialogs_iconify_with_main "
1781 << convert<string>(dialogs_iconify_with_main) << '\n';
1785 case RC_SCREEN_FONT_ROMAN:
1786 if (ignore_system_lyxrc ||
1787 roman_font_name != system_lyxrc.roman_font_name) {
1788 os << "\\screen_font_roman \"" << roman_font_name
1793 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1794 if (ignore_system_lyxrc ||
1795 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1796 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1801 case RC_SCREEN_FONT_SANS:
1802 if (ignore_system_lyxrc ||
1803 sans_font_name != system_lyxrc.sans_font_name) {
1804 os << "\\screen_font_sans \"" << sans_font_name
1809 case RC_SCREEN_FONT_SANS_FOUNDRY:
1810 if (ignore_system_lyxrc ||
1811 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1812 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1817 case RC_SCREEN_FONT_TYPEWRITER:
1818 if (ignore_system_lyxrc ||
1819 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1820 os << "\\screen_font_typewriter \""
1821 << typewriter_font_name << "\"\n";
1825 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1826 if (ignore_system_lyxrc ||
1827 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1828 os << "\\screen_font_typewriter_foundry \""
1829 << typewriter_font_foundry << "\"\n";
1834 case RC_SCREEN_FONT_SCALABLE:
1835 if (ignore_system_lyxrc ||
1836 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1837 os << "\\screen_font_scalable "
1838 << convert<string>(use_scalable_fonts)
1843 case RC_SCREEN_FONT_SIZES:
1844 if (ignore_system_lyxrc ||
1845 font_sizes[FONT_SIZE_TINY]
1846 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1847 font_sizes[FONT_SIZE_SCRIPT]
1848 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1849 font_sizes[FONT_SIZE_FOOTNOTE]
1850 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1851 font_sizes[FONT_SIZE_SMALL]
1852 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1853 font_sizes[FONT_SIZE_NORMAL]
1854 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1855 font_sizes[FONT_SIZE_LARGE]
1856 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1857 font_sizes[FONT_SIZE_LARGER]
1858 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1859 font_sizes[FONT_SIZE_LARGEST]
1860 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1861 font_sizes[FONT_SIZE_HUGE]
1862 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1863 font_sizes[FONT_SIZE_HUGER]
1864 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1865 os.setf(ios::fixed);
1867 os << "\\screen_font_sizes"
1868 << ' ' << font_sizes[FONT_SIZE_TINY]
1869 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1870 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1871 << ' ' << font_sizes[FONT_SIZE_SMALL]
1872 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1873 << ' ' << font_sizes[FONT_SIZE_LARGE]
1874 << ' ' << font_sizes[FONT_SIZE_LARGER]
1875 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1876 << ' ' << font_sizes[FONT_SIZE_HUGE]
1877 << ' ' << font_sizes[FONT_SIZE_HUGER]
1882 case RC_FULL_SCREEN_LIMIT:
1883 if (ignore_system_lyxrc ||
1884 full_screen_limit != system_lyxrc.full_screen_limit) {
1885 os << "\\fullscreen_limit "
1886 << convert<string>(full_screen_limit)
1891 case RC_FULL_SCREEN_TOOLBARS:
1892 if (ignore_system_lyxrc ||
1893 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1894 os << "\\fullscreen_toolbars "
1895 << convert<string>(full_screen_toolbars)
1900 case RC_FULL_SCREEN_SCROLLBAR:
1901 if (ignore_system_lyxrc ||
1902 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1903 os << "\\fullscreen_scrollbar "
1904 << convert<string>(full_screen_scrollbar)
1909 case RC_FULL_SCREEN_TABBAR:
1910 if (ignore_system_lyxrc ||
1911 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1912 os << "\\fullscreen_tabbar "
1913 << convert<string>(full_screen_tabbar)
1918 case RC_FULL_SCREEN_MENUBAR:
1919 if (ignore_system_lyxrc ||
1920 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1921 os << "\\fullscreen_menubar "
1922 << convert<string>(full_screen_menubar)
1927 case RC_FULL_SCREEN_WIDTH:
1928 if (ignore_system_lyxrc ||
1929 full_screen_width != system_lyxrc.full_screen_width) {
1930 os << "\\fullscreen_width "
1931 << convert<string>(full_screen_width)
1936 case RC_OPEN_BUFFERS_IN_TABS:
1937 if (ignore_system_lyxrc ||
1938 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
1939 os << "\\open_buffers_in_tabs "
1940 << convert<string>(open_buffers_in_tabs)
1945 case RC_SINGLE_CLOSE_TAB_BUTTON:
1946 if (ignore_system_lyxrc ||
1947 single_close_tab_button != system_lyxrc.single_close_tab_button) {
1948 os << "\\single_close_tab_button "
1949 << convert<string>(single_close_tab_button)
1954 case RC_FORWARD_SEARCH_DVI:
1955 if (ignore_system_lyxrc ||
1956 forward_search_dvi != system_lyxrc.forward_search_dvi) {
1957 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
1961 case RC_FORWARD_SEARCH_PDF:
1962 if (ignore_system_lyxrc ||
1963 forward_search_pdf != system_lyxrc.forward_search_pdf) {
1964 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
1970 << "# COLOR SECTION ###################################\n"
1974 for (int i = 0; i < Color_ignore; ++i) {
1975 ColorCode lc = static_cast<ColorCode>(i);
1976 string const col = lcolor.getX11Name(lc);
1977 if (ignore_system_lyxrc
1978 || col != system_lcolor.getX11Name(lc)) {
1979 os << "\\set_color \""
1980 << lcolor.getLyXName(lc) << "\" \""
1988 << "# PRINTER SECTION ###################################\n"
1992 if (ignore_system_lyxrc ||
1993 printer != system_lyxrc.printer) {
1994 os << "\\printer \"" << printer << "\"\n";
1998 case RC_PRINT_ADAPTOUTPUT:
1999 if (ignore_system_lyxrc ||
2000 print_adapt_output != system_lyxrc.print_adapt_output) {
2001 os << "\\print_adapt_output "
2002 << convert<string>(print_adapt_output)
2007 case RC_PRINT_COMMAND:
2008 if (ignore_system_lyxrc ||
2009 print_command != system_lyxrc.print_command) {
2010 os << "\\print_command \"" << escapeCommand(print_command) << "\"\n";
2014 case RC_PRINTEXSTRAOPTIONS:
2015 if (ignore_system_lyxrc ||
2016 print_extra_options != system_lyxrc.print_extra_options) {
2017 os << "\\print_extra_options \"" << print_extra_options
2022 case RC_PRINTSPOOL_COMMAND:
2023 if (ignore_system_lyxrc ||
2024 print_spool_command != system_lyxrc.print_spool_command) {
2025 os << "\\print_spool_command \"" << escapeCommand(print_spool_command)
2030 case RC_PRINTSPOOL_PRINTERPREFIX:
2031 if (ignore_system_lyxrc ||
2032 print_spool_printerprefix
2033 != system_lyxrc.print_spool_printerprefix) {
2034 os << "\\print_spool_printerprefix \""
2035 << print_spool_printerprefix << "\"\n";
2039 case RC_PRINTEVENPAGEFLAG:
2040 if (ignore_system_lyxrc ||
2041 print_evenpage_flag != system_lyxrc.print_evenpage_flag) {
2042 os << "\\print_evenpage_flag \"" << print_evenpage_flag
2047 case RC_PRINTODDPAGEFLAG:
2048 if (ignore_system_lyxrc ||
2049 print_oddpage_flag != system_lyxrc.print_oddpage_flag) {
2050 os << "\\print_oddpage_flag \"" << print_oddpage_flag
2055 case RC_PRINTREVERSEFLAG:
2056 if (ignore_system_lyxrc ||
2057 print_reverse_flag != system_lyxrc.print_reverse_flag) {
2058 os << "\\print_reverse_flag \"" << print_reverse_flag
2063 case RC_PRINTLANDSCAPEFLAG:
2064 if (ignore_system_lyxrc ||
2065 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2066 os << "\\print_landscape_flag \"" << print_landscape_flag
2071 case RC_PRINTPAGERANGEFLAG:
2072 if (ignore_system_lyxrc ||
2073 print_pagerange_flag != system_lyxrc.print_pagerange_flag) {
2074 os << "\\print_pagerange_flag \"" << print_pagerange_flag
2079 case RC_PRINTCOPIESFLAG:
2080 if (ignore_system_lyxrc ||
2081 print_copies_flag != system_lyxrc.print_copies_flag) {
2082 os << "\\print_copies_flag \"" << print_copies_flag
2087 case RC_PRINTCOLLCOPIESFLAG:
2088 if (ignore_system_lyxrc ||
2089 print_collcopies_flag
2090 != system_lyxrc.print_collcopies_flag) {
2091 os << "\\print_collcopies_flag \""
2092 << print_collcopies_flag
2097 case RC_PRINTPAPERFLAG:
2098 if (ignore_system_lyxrc ||
2099 print_paper_flag != system_lyxrc.print_paper_flag) {
2100 os << "\\print_paper_flag \"" << print_paper_flag
2105 case RC_PRINTPAPERDIMENSIONFLAG:
2106 if (ignore_system_lyxrc ||
2107 print_paper_dimension_flag
2108 != system_lyxrc.print_paper_dimension_flag) {
2109 os << "\\print_paper_dimension_flag \""
2110 << print_paper_dimension_flag << "\"\n";
2114 case RC_PRINTTOPRINTER:
2115 if (ignore_system_lyxrc ||
2116 print_to_printer != system_lyxrc.print_to_printer) {
2117 os << "\\print_to_printer \"" << print_to_printer
2122 case RC_PRINTTOFILE:
2123 if (ignore_system_lyxrc ||
2124 print_to_file != system_lyxrc.print_to_file) {
2125 string const path = os::external_path(print_to_file);
2126 os << "\\print_to_file \"" << path << "\"\n";
2130 case RC_PRINTFILEEXTENSION:
2131 if (ignore_system_lyxrc ||
2132 print_file_extension != system_lyxrc.print_file_extension) {
2133 os << "\\print_file_extension \""
2134 << print_file_extension
2141 << "# TEX SECTION #######################################\n"
2144 case RC_FONT_ENCODING:
2145 if (ignore_system_lyxrc ||
2146 fontenc != system_lyxrc.fontenc) {
2147 os << "\\font_encoding \"" << fontenc << "\"\n";
2153 << "# FILE SECTION ######################################\n"
2156 case RC_DOCUMENTPATH:
2157 if (ignore_system_lyxrc ||
2158 document_path != system_lyxrc.document_path) {
2159 string const path = os::external_path(document_path);
2160 os << "\\document_path \"" << path << "\"\n";
2164 case RC_USELASTFILEPOS:
2165 if (ignore_system_lyxrc ||
2166 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2167 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2172 case RC_LOADSESSION:
2173 if (ignore_system_lyxrc ||
2174 load_session != system_lyxrc.load_session) {
2175 os << "\\load_session " << convert<string>(load_session)
2180 case RC_MOUSE_WHEEL_SPEED:
2181 if (ignore_system_lyxrc ||
2182 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2183 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2187 case RC_COMPLETION_INLINE_DELAY:
2188 if (ignore_system_lyxrc ||
2189 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2190 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2194 case RC_COMPLETION_INLINE_MATH:
2195 if (ignore_system_lyxrc ||
2196 completion_inline_math != system_lyxrc.completion_inline_math) {
2197 os << "\\completion_inline_math "
2198 << convert<string>(completion_inline_math) << '\n';
2202 case RC_COMPLETION_INLINE_TEXT:
2203 if (ignore_system_lyxrc ||
2204 completion_inline_text != system_lyxrc.completion_inline_text) {
2205 os << "\\completion_inline_text "
2206 << convert<string>(completion_inline_text) << '\n';
2210 case RC_COMPLETION_INLINE_DOTS:
2211 if (ignore_system_lyxrc ||
2212 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2213 os << "\\completion_inline_dots "
2214 << convert<string>(completion_inline_dots) << '\n';
2218 case RC_AUTOCORRECTION_MATH:
2219 if (ignore_system_lyxrc ||
2220 autocorrection_math != system_lyxrc.autocorrection_math) {
2221 os << "\\autocorrection_math "
2222 << convert<string>(autocorrection_math) << '\n';
2226 case RC_COMPLETION_POPUP_DELAY:
2227 if (ignore_system_lyxrc ||
2228 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2229 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2233 case RC_COMPLETION_POPUP_MATH:
2234 if (ignore_system_lyxrc ||
2235 completion_popup_math != system_lyxrc.completion_popup_math) {
2236 os << "\\completion_popup_math "
2237 << convert<string>(completion_popup_math) << '\n';
2241 case RC_COMPLETION_POPUP_TEXT:
2242 if (ignore_system_lyxrc ||
2243 completion_popup_text != system_lyxrc.completion_popup_text) {
2244 os << "\\completion_popup_text "
2245 << convert<string>(completion_popup_text) << '\n';
2249 case RC_COMPLETION_CURSOR_TEXT:
2250 if (ignore_system_lyxrc ||
2251 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2252 os << "\\completion_cursor_text "
2253 << convert<string>(completion_cursor_text) << '\n';
2257 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2258 if (ignore_system_lyxrc ||
2259 completion_popup_after_complete
2260 != system_lyxrc.completion_popup_after_complete) {
2261 os << "\\completion_popup_after_complete "
2262 << convert<string>(completion_popup_after_complete) << '\n';
2266 case RC_NUMLASTFILES:
2267 if (ignore_system_lyxrc ||
2268 num_lastfiles != system_lyxrc.num_lastfiles) {
2269 os << "\\num_lastfiles " << num_lastfiles << '\n';
2273 case RC_CHECKLASTFILES:
2274 if (ignore_system_lyxrc ||
2275 check_lastfiles != system_lyxrc.check_lastfiles) {
2276 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2281 case RC_EXAMPLEPATH:
2282 if (ignore_system_lyxrc ||
2283 example_path != system_lyxrc.example_path) {
2284 string const path = os::external_path(example_path);
2285 os << "\\example_path \"" << path << "\"\n";
2289 case RC_TEMPLATEPATH:
2290 if (ignore_system_lyxrc ||
2291 template_path != system_lyxrc.template_path) {
2292 string const path = os::external_path(template_path);
2293 os << "\\template_path \"" << path << "\"\n";
2297 case RC_TEMPDIRPATH:
2298 if (ignore_system_lyxrc ||
2299 tempdir_path != system_lyxrc.tempdir_path) {
2300 string const path = os::external_path(tempdir_path);
2301 os << "\\tempdir_path \"" << path << "\"\n";
2305 case RC_THESAURUSDIRPATH:
2306 if (ignore_system_lyxrc ||
2307 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2308 string const path = os::external_path(thesaurusdir_path);
2309 os << "\\thesaurusdir_path \"" << path << "\"\n";
2313 case RC_HUNSPELLDIR_PATH:
2314 if (ignore_system_lyxrc ||
2315 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2316 string const path = os::external_path(hunspelldir_path);
2317 os << "\\hunspelldir_path \"" << path << "\"\n";
2325 case RC_PLAINTEXT_ROFF_COMMAND: // Obsoleted in 2.0
2328 case RC_PLAINTEXT_LINELEN:
2329 if (ignore_system_lyxrc ||
2330 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2331 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2335 case RC_MAKE_BACKUP:
2336 if (ignore_system_lyxrc ||
2337 make_backup != system_lyxrc.make_backup) {
2338 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2342 case RC_SAVE_COMPRESSED:
2343 if (ignore_system_lyxrc ||
2344 save_compressed != system_lyxrc.save_compressed) {
2345 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2349 case RC_BACKUPDIR_PATH:
2350 if (ignore_system_lyxrc ||
2351 backupdir_path != system_lyxrc.backupdir_path) {
2352 string const path = os::external_path(backupdir_path);
2353 os << "\\backupdir_path \"" << path << "\"\n";
2359 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2363 << "# SPELLCHECKER SECTION ##############################\n"
2366 case RC_SPELL_COMMAND:
2367 case RC_USE_SPELL_LIB:
2371 case RC_ACCEPT_COMPOUND:
2372 if (ignore_system_lyxrc ||
2373 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2374 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2379 case RC_USE_ALT_LANG:
2384 if (ignore_system_lyxrc ||
2385 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2386 os << "\\alternate_language \"" << spellchecker_alt_lang
2391 case RC_USE_ESC_CHARS:
2395 if (ignore_system_lyxrc ||
2396 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2397 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2401 case RC_USE_PERS_DICT:
2405 case RC_USE_SYSTEM_COLORS:
2406 if (ignore_system_lyxrc ||
2407 use_system_colors != system_lyxrc.use_system_colors) {
2408 os << "\\use_system_colors "
2409 << convert<string>(use_system_colors)
2414 case RC_USE_TOOLTIP:
2415 if (ignore_system_lyxrc ||
2416 use_tooltip != system_lyxrc.use_tooltip) {
2417 os << "\\use_tooltip "
2418 << convert<string>(use_tooltip)
2423 case RC_USE_PIXMAP_CACHE:
2424 if (ignore_system_lyxrc ||
2425 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2426 os << "\\use_pixmap_cache "
2427 << convert<string>(use_pixmap_cache)
2436 case RC_USE_INP_ENC:
2442 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2447 case RC_DEFAULT_DECIMAL_POINT:
2448 if (ignore_system_lyxrc ||
2449 default_decimal_point != system_lyxrc.default_decimal_point) {
2450 os << "\\default_decimal_point " << default_decimal_point << '\n';
2455 case RC_SPELLCHECKER:
2456 if (ignore_system_lyxrc ||
2457 spellchecker != system_lyxrc.spellchecker) {
2458 os << "\\spellchecker " << spellchecker << '\n';
2463 case RC_SPELLCHECK_CONTINUOUSLY:
2464 if (ignore_system_lyxrc ||
2465 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2466 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2472 case RC_SPELLCHECK_NOTES:
2473 if (ignore_system_lyxrc ||
2474 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2475 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2481 case RC_RTL_SUPPORT:
2482 if (ignore_system_lyxrc ||
2483 rtl_support != system_lyxrc.rtl_support) {
2484 os << "\\rtl " << convert<string>(rtl_support) << '\n';
2488 case RC_VISUAL_CURSOR:
2489 if (ignore_system_lyxrc ||
2490 visual_cursor != system_lyxrc.visual_cursor) {
2491 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2495 case RC_LANGUAGE_PACKAGE:
2496 if (ignore_system_lyxrc ||
2497 language_package != system_lyxrc.language_package) {
2498 os << "\\language_package \"" << language_package
2503 case RC_LANGUAGE_GLOBAL_OPTIONS:
2504 if (ignore_system_lyxrc ||
2505 language_global_options
2506 != system_lyxrc.language_global_options) {
2507 os << "\\language_global_options \""
2508 << convert<string>(language_global_options)
2513 case RC_LANGUAGE_USE_BABEL:
2514 if (ignore_system_lyxrc ||
2515 language_use_babel != system_lyxrc.language_use_babel) {
2516 os << "\\language_use_babel \""
2517 << convert<string>(language_use_babel)
2522 case RC_LANGUAGE_COMMAND_BEGIN:
2523 if (ignore_system_lyxrc ||
2524 language_command_begin
2525 != system_lyxrc.language_command_begin) {
2526 os << "\\language_command_begin \""
2527 << language_command_begin
2532 case RC_LANGUAGE_COMMAND_END:
2533 if (ignore_system_lyxrc ||
2534 language_command_end
2535 != system_lyxrc.language_command_end) {
2536 os << "\\language_command_end \"" << language_command_end
2541 case RC_LANGUAGE_COMMAND_LOCAL:
2542 if (ignore_system_lyxrc ||
2543 language_command_local
2544 != system_lyxrc.language_command_local) {
2545 os << "\\language_command_local \""
2546 << language_command_local
2551 case RC_LANGUAGE_AUTO_BEGIN:
2552 if (ignore_system_lyxrc ||
2553 language_auto_begin != system_lyxrc.language_auto_begin) {
2554 os << "\\language_auto_begin "
2555 << convert<string>(language_auto_begin) << '\n';
2559 case RC_LANGUAGE_AUTO_END:
2560 if (ignore_system_lyxrc ||
2561 language_auto_end != system_lyxrc.language_auto_end) {
2562 os << "\\language_auto_end "
2563 << convert<string>(language_auto_end) << '\n';
2567 case RC_MARK_FOREIGN_LANGUAGE:
2568 if (ignore_system_lyxrc ||
2569 mark_foreign_language
2570 != system_lyxrc.mark_foreign_language) {
2571 os << "\\mark_foreign_language " <<
2572 convert<string>(mark_foreign_language) << '\n';
2578 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2581 case RC_AUTO_NUMBER:
2582 if (ignore_system_lyxrc ||
2583 auto_number != system_lyxrc.auto_number) {
2584 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2588 case RC_DEFAULT_LANGUAGE:
2589 if (ignore_system_lyxrc ||
2590 default_language != system_lyxrc.default_language) {
2591 os << "\\default_language " << default_language << '\n';
2595 case RC_GUI_LANGUAGE:
2596 if (ignore_system_lyxrc ||
2597 gui_language != system_lyxrc.gui_language) {
2598 os << "\\gui_language " << gui_language << '\n';
2602 case RC_EXPORT_OVERWRITE:
2603 if (ignore_system_lyxrc ||
2604 export_overwrite != system_lyxrc.export_overwrite) {
2606 switch (export_overwrite) {
2617 os << "\\export_overwrite " << status << '\n';
2622 case RC_SCROLL_WHEEL_ZOOM:
2623 if (ignore_system_lyxrc ||
2624 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2626 switch (scroll_wheel_zoom) {
2627 case SCROLL_WHEEL_ZOOM_OFF:
2630 case SCROLL_WHEEL_ZOOM_CTRL:
2633 case SCROLL_WHEEL_ZOOM_SHIFT:
2636 case SCROLL_WHEEL_ZOOM_ALT:
2640 os << "\\scroll_wheel_zoom " << status << '\n';
2646 << "# FORMATS SECTION ##########################\n"
2650 // New/modified formats
2651 for (Formats::const_iterator cit = formats.begin();
2652 cit != formats.end(); ++cit) {
2653 Format const * format =
2654 system_formats.getFormat(cit->name());
2656 format->extension() != cit->extension() ||
2657 format->prettyname() != cit->prettyname() ||
2658 format->shortcut() != cit->shortcut() ||
2659 format->viewer() != cit->viewer() ||
2660 format->editor() != cit->editor() ||
2661 format->documentFormat() != cit->documentFormat() ||
2662 format->vectorFormat() != cit->vectorFormat()) {
2663 os << "\\format \"" << cit->name() << "\" \""
2664 << cit->extension() << "\" \""
2665 << cit->prettyname() << "\" \""
2666 << cit->shortcut() << "\" \""
2667 << escapeCommand(cit->viewer()) << "\" \""
2668 << escapeCommand(cit->editor()) << "\" \"";
2669 vector<string> flags;
2670 if (cit->documentFormat())
2671 flags.push_back("document");
2672 if (cit->vectorFormat())
2673 flags.push_back("vector");
2674 os << getStringFromVector(flags);
2679 // Look for deleted formats
2680 for (Formats::const_iterator cit = system_formats.begin();
2681 cit != system_formats.end(); ++cit)
2682 if (!formats.getFormat(cit->name()))
2683 os << "\\format \"" << cit->name()
2684 << "\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2687 case RC_VIEWER_ALTERNATIVES: {
2688 Alternatives::const_iterator it = viewer_alternatives.begin();
2689 Alternatives::const_iterator const en = viewer_alternatives.end();
2690 Alternatives::const_iterator const sysend =
2691 system_lyxrc.viewer_alternatives.end();
2692 for (; it != en; ++it) {
2693 string const & fmt = it->first;
2694 CommandSet const & cmd = it->second;
2695 CommandSet::const_iterator sit = cmd.begin();
2696 CommandSet::const_iterator const sen = cmd.end();
2697 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2698 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2699 system_lyxrc.viewer_alternatives.find(fmt);
2700 for (; sit != sen; ++sit) {
2701 string const & cmd = *sit;
2702 if (ignore_system_lyxrc
2703 || sysfmt == sysend // format not found
2704 || sysfmt->second.count(cmd) == 0 // this command not found
2706 os << "\\viewer_alternatives " << fmt << " " << cmd << "\n";
2712 case RC_EDITOR_ALTERNATIVES: {
2713 Alternatives::const_iterator it = editor_alternatives.begin();
2714 Alternatives::const_iterator const en = editor_alternatives.end();
2715 Alternatives::const_iterator const sysend =
2716 system_lyxrc.editor_alternatives.end();
2717 for (; it != en; ++it) {
2718 string const & fmt = it->first;
2719 CommandSet const & cmd = it->second;
2720 CommandSet::const_iterator sit = cmd.begin();
2721 CommandSet::const_iterator const sen = cmd.end();
2722 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2723 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2724 system_lyxrc.editor_alternatives.find(fmt);
2725 for (; sit != sen; ++sit) {
2726 string const & cmd = *sit;
2727 if (ignore_system_lyxrc
2728 || sysfmt == sysend // format not found
2729 || sysfmt->second.count(cmd) == 0 // this command not found
2731 os << "\\editor_alternatives " << fmt << " " << cmd << "\n";
2737 case RC_DEFAULT_VIEW_FORMAT:
2738 if (ignore_system_lyxrc ||
2739 default_view_format != system_lyxrc.default_view_format) {
2740 os << "\\default_view_format " << default_view_format << '\n';
2750 << "# CONVERTERS SECTION ##########################\n"
2754 // Look for new converters
2755 for (Converters::const_iterator cit = theConverters().begin();
2756 cit != theConverters().end(); ++cit) {
2757 Converter const * converter =
2758 theSystemConverters().getConverter(cit->from,
2761 converter->command != cit->command ||
2762 converter->flags != cit->flags)
2763 os << "\\converter \"" << cit->from << "\" \""
2764 << cit->to << "\" \""
2765 << escapeCommand(cit->command) << "\" \""
2766 << cit->flags << "\"\n";
2769 // New/modifed converters
2770 for (Converters::const_iterator cit = theSystemConverters().begin();
2771 cit != theSystemConverters().end(); ++cit)
2772 if (!theConverters().getConverter(cit->from, cit->to))
2773 os << "\\converter \"" << cit->from
2774 << "\" \"" << cit->to << "\" \"\" \"\"\n";
2781 << "# COPIERS SECTION ##########################\n"
2784 // Look for new movers
2785 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2786 Movers::const_iterator const sysend = theSystemMovers().end();
2787 Movers::const_iterator it = theMovers().begin();
2788 Movers::const_iterator end = theMovers().end();
2790 for (; it != end; ++it) {
2791 Movers::const_iterator const sysit =
2792 find_if(sysbegin, sysend, SameMover(*it));
2793 if (sysit == sysend) {
2794 string const & fmt = it->first;
2795 string const & command =
2796 it->second.command();
2798 os << "\\copier " << fmt
2799 << " \"" << escapeCommand(command) << "\"\n";
2805 // We don't actually delete SpecialisedMover(s) from the
2806 // map, just clear their 'command', so there's no need
2807 // to test for anything else.
2814 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2816 // Why the switch you might ask. It is a trick to ensure that all
2817 // the elements in the LyXRCTags enum is handled. As you can see
2818 // there are no breaks at all. So it is just a huge fall-through.
2819 // The nice thing is that we will get a warning from the compiler
2820 // if we forget an element.
2821 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2823 case LyXRC::RC_ACCEPT_COMPOUND:
2824 case LyXRC::RC_ALT_LANG:
2825 case LyXRC::RC_PLAINTEXT_LINELEN:
2826 case LyXRC::RC_PLAINTEXT_ROFF_COMMAND:
2827 case LyXRC::RC_AUTOCORRECTION_MATH:
2828 case LyXRC::RC_AUTOREGIONDELETE:
2829 case LyXRC::RC_AUTORESET_OPTIONS:
2830 case LyXRC::RC_AUTOSAVE:
2831 case LyXRC::RC_AUTO_NUMBER:
2832 case LyXRC::RC_BACKUPDIR_PATH:
2833 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2834 case LyXRC::RC_BIBTEX_COMMAND:
2835 case LyXRC::RC_BINDFILE:
2836 case LyXRC::RC_CHECKLASTFILES:
2837 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2838 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2839 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2840 case LyXRC::RC_COMPLETION_INLINE_MATH:
2841 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2842 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2843 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2844 case LyXRC::RC_COMPLETION_POPUP_MATH:
2845 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2846 case LyXRC::RC_USELASTFILEPOS:
2847 case LyXRC::RC_LOADSESSION:
2848 case LyXRC::RC_CHKTEX_COMMAND:
2849 case LyXRC::RC_CONVERTER:
2850 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2851 case LyXRC::RC_COPIER:
2852 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2853 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2854 case LyXRC::RC_DATE_INSERT_FORMAT:
2855 case LyXRC::RC_DEFAULT_LANGUAGE:
2856 case LyXRC::RC_GUI_LANGUAGE:
2857 case LyXRC::RC_DEFAULT_PAPERSIZE:
2858 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2859 case LyXRC::RC_DEFFILE:
2860 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2861 case LyXRC::RC_DISPLAY_GRAPHICS:
2862 case LyXRC::RC_DOCUMENTPATH:
2863 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2864 FileName path(lyxrc_new.document_path);
2865 if (path.exists() && path.isDirectory())
2866 package().document_dir() = FileName(lyxrc.document_path);
2868 case LyXRC::RC_EDITOR_ALTERNATIVES:
2869 case LyXRC::RC_ESC_CHARS:
2870 case LyXRC::RC_EXAMPLEPATH:
2871 case LyXRC::RC_FONT_ENCODING:
2872 case LyXRC::RC_FORMAT:
2873 case LyXRC::RC_GROUP_LAYOUTS:
2874 case LyXRC::RC_HUNSPELLDIR_PATH:
2875 case LyXRC::RC_INDEX_ALTERNATIVES:
2876 case LyXRC::RC_INDEX_COMMAND:
2877 case LyXRC::RC_JBIBTEX_COMMAND:
2878 case LyXRC::RC_JINDEX_COMMAND:
2879 case LyXRC::RC_NOMENCL_COMMAND:
2880 case LyXRC::RC_INPUT:
2881 case LyXRC::RC_KBMAP:
2882 case LyXRC::RC_KBMAP_PRIMARY:
2883 case LyXRC::RC_KBMAP_SECONDARY:
2884 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2885 case LyXRC::RC_LANGUAGE_AUTO_END:
2886 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2887 case LyXRC::RC_LANGUAGE_COMMAND_END:
2888 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2889 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2890 case LyXRC::RC_LANGUAGE_PACKAGE:
2891 case LyXRC::RC_LANGUAGE_USE_BABEL:
2892 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2893 case LyXRC::RC_MAC_LIKE_WORD_MOVEMENT:
2894 case LyXRC::RC_MACRO_EDIT_STYLE:
2895 case LyXRC::RC_MAKE_BACKUP:
2896 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2897 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2898 case LyXRC::RC_NUMLASTFILES:
2899 case LyXRC::RC_PARAGRAPH_MARKERS:
2900 case LyXRC::RC_PATH_PREFIX:
2901 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2902 prependEnvPath("PATH", lyxrc.path_prefix);
2904 case LyXRC::RC_PERS_DICT:
2905 case LyXRC::RC_PREVIEW:
2906 case LyXRC::RC_PREVIEW_HASHED_LABELS:
2907 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
2908 case LyXRC::RC_PRINTCOLLCOPIESFLAG:
2909 case LyXRC::RC_PRINTCOPIESFLAG:
2910 case LyXRC::RC_PRINTER:
2911 case LyXRC::RC_PRINTEVENPAGEFLAG:
2912 case LyXRC::RC_PRINTEXSTRAOPTIONS:
2913 case LyXRC::RC_PRINTFILEEXTENSION:
2914 case LyXRC::RC_PRINTLANDSCAPEFLAG:
2915 case LyXRC::RC_PRINTODDPAGEFLAG:
2916 case LyXRC::RC_PRINTPAGERANGEFLAG:
2917 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
2918 case LyXRC::RC_PRINTPAPERFLAG:
2919 case LyXRC::RC_PRINTREVERSEFLAG:
2920 case LyXRC::RC_PRINTSPOOL_COMMAND:
2921 case LyXRC::RC_PRINTSPOOL_PRINTERPREFIX:
2922 case LyXRC::RC_PRINTTOFILE:
2923 case LyXRC::RC_PRINTTOPRINTER:
2924 case LyXRC::RC_PRINT_ADAPTOUTPUT:
2925 case LyXRC::RC_PRINT_COMMAND:
2926 case LyXRC::RC_RTL_SUPPORT:
2927 case LyXRC::RC_SAVE_COMPRESSED:
2928 case LyXRC::RC_SCREEN_DPI:
2929 case LyXRC::RC_SCREEN_FONT_ROMAN:
2930 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
2931 case LyXRC::RC_SCREEN_FONT_SANS:
2932 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
2933 case LyXRC::RC_SCREEN_FONT_SCALABLE:
2934 case LyXRC::RC_SCREEN_FONT_SIZES:
2935 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
2936 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
2937 case LyXRC::RC_GEOMETRY_SESSION:
2938 case LyXRC::RC_SCREEN_ZOOM:
2939 case LyXRC::RC_SERVERPIPE:
2940 case LyXRC::RC_SET_COLOR:
2941 case LyXRC::RC_SHOW_BANNER:
2942 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
2943 case LyXRC::RC_SPELL_COMMAND:
2944 case LyXRC::RC_SPELLCHECKER:
2945 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
2946 case LyXRC::RC_SPELLCHECK_NOTES:
2947 case LyXRC::RC_SPLITINDEX_COMMAND:
2948 case LyXRC::RC_TEMPDIRPATH:
2949 case LyXRC::RC_TEMPLATEPATH:
2950 case LyXRC::RC_TEX_ALLOWS_SPACES:
2951 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
2952 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
2953 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
2955 case LyXRC::RC_THESAURUSDIRPATH:
2956 case LyXRC::RC_UIFILE:
2957 case LyXRC::RC_USER_EMAIL:
2958 case LyXRC::RC_USER_NAME:
2959 case LyXRC::RC_USETEMPDIR:
2960 case LyXRC::RC_USE_ALT_LANG:
2961 case LyXRC::RC_USE_CONVERTER_CACHE:
2962 case LyXRC::RC_USE_ESC_CHARS:
2963 case LyXRC::RC_USE_INP_ENC:
2964 case LyXRC::RC_USE_PERS_DICT:
2965 case LyXRC::RC_USE_SYSTEM_COLORS:
2966 case LyXRC::RC_USE_TOOLTIP:
2967 case LyXRC::RC_USE_PIXMAP_CACHE:
2968 case LyXRC::RC_USE_SPELL_LIB:
2969 case LyXRC::RC_VIEWDVI_PAPEROPTION:
2970 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
2971 case LyXRC::RC_SORT_LAYOUTS:
2972 case LyXRC::RC_FULL_SCREEN_LIMIT:
2973 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
2974 case LyXRC::RC_FULL_SCREEN_MENUBAR:
2975 case LyXRC::RC_FULL_SCREEN_TABBAR:
2976 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
2977 case LyXRC::RC_FULL_SCREEN_WIDTH:
2978 case LyXRC::RC_VISUAL_CURSOR:
2979 case LyXRC::RC_VIEWER:
2980 case LyXRC::RC_VIEWER_ALTERNATIVES:
2981 case LyXRC::RC_FORWARD_SEARCH_DVI:
2982 case LyXRC::RC_FORWARD_SEARCH_PDF:
2983 case LyXRC::RC_EXPORT_OVERWRITE:
2984 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
2985 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
2986 case LyXRC::RC_LAST:
2993 string const LyXRC::getDescription(LyXRCTags tag)
2998 case RC_ACCEPT_COMPOUND:
2999 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3003 case RC_USE_ALT_LANG:
3004 str = _("Specify an alternate language. The default is to use the language of the document.");
3007 case RC_PLAINTEXT_ROFF_COMMAND:
3008 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.");
3011 case RC_PLAINTEXT_LINELEN:
3012 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.");
3015 case RC_AUTOREGIONDELETE:
3016 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3019 case RC_AUTORESET_OPTIONS:
3020 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3024 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3027 case RC_AUTO_NUMBER:
3030 case RC_BACKUPDIR_PATH:
3031 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.");
3034 case RC_BIBTEX_COMMAND:
3035 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3038 case RC_JBIBTEX_COMMAND:
3039 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3043 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3046 case RC_CHECKLASTFILES:
3047 str = _("Select to check whether the lastfiles still exist.");
3050 case RC_CHKTEX_COMMAND:
3051 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3060 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3061 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.");
3064 case RC_SCROLL_BELOW_DOCUMENT:
3065 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");
3068 case RC_MAC_DONTSWAP_CTRL_META:
3069 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3072 case RC_MAC_LIKE_WORD_MOVEMENT:
3073 str = _("Use the Mac OS X conventions for the word-level cursor movement");
3076 case RC_SHOW_MACRO_LABEL:
3077 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3080 case RC_DATE_INSERT_FORMAT:
3081 //xgettext:no-c-format
3082 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3086 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3089 case RC_DEFAULT_VIEW_FORMAT:
3090 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3093 case RC_DEFAULT_LANGUAGE:
3094 str = _("New documents will be assigned this language.");
3097 case RC_DEFAULT_PAPERSIZE:
3098 str = _("Specify the default paper size.");
3101 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3102 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3105 case RC_DISPLAY_GRAPHICS:
3106 str = _("Select how LyX will display any graphics.");
3109 case RC_DOCUMENTPATH:
3110 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3114 case RC_USE_ESC_CHARS:
3115 str = _("Specify additional chars that can be part of a word.");
3118 case RC_EXAMPLEPATH:
3119 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3122 case RC_FONT_ENCODING:
3123 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3129 case RC_INDEX_COMMAND:
3130 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\".");
3133 case RC_JINDEX_COMMAND:
3134 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3137 case RC_NOMENCL_COMMAND:
3138 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3145 case RC_KBMAP_PRIMARY:
3146 case RC_KBMAP_SECONDARY:
3147 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.");
3150 case RC_LANGUAGE_AUTO_BEGIN:
3151 str = _("Select if a language switching command is needed at the beginning of the document.");
3154 case RC_LANGUAGE_AUTO_END:
3155 str = _("Select if a language switching command is needed at the end of the document.");
3158 case RC_LANGUAGE_COMMAND_BEGIN:
3159 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.");
3162 case RC_LANGUAGE_COMMAND_END:
3163 str = _("The LaTeX command for changing back to the language of the document.");
3166 case RC_LANGUAGE_COMMAND_LOCAL:
3167 str = _("The LaTeX command for local changing of the language.");
3170 case RC_LANGUAGE_GLOBAL_OPTIONS:
3171 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3174 case RC_LANGUAGE_PACKAGE:
3175 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3178 case RC_LANGUAGE_USE_BABEL:
3179 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3182 case RC_USELASTFILEPOS:
3183 str = _("De-select if you do not want LyX to scroll to saved position.");
3186 case RC_LOADSESSION:
3187 str = _("De-select to prevent loading files opened from the last LyX session.");
3190 case RC_MAKE_BACKUP:
3191 str = _("De-select if you don't want LyX to create backup files.");
3194 case RC_MARK_FOREIGN_LANGUAGE:
3195 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3198 case RC_MOUSE_WHEEL_SPEED:
3199 str = bformat(_("The scrolling speed of the mouse wheel."),
3203 case RC_COMPLETION_POPUP_DELAY:
3204 str = _("The completion popup delay.");
3207 case RC_COMPLETION_POPUP_MATH:
3208 str = _("Select to display the completion popup in math mode.");
3211 case RC_COMPLETION_POPUP_TEXT:
3212 str = _("Select to display the completion popup in text mode.");
3215 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3216 str = _("Show the completion popup without delay after non-unique completion attempt.");
3219 case RC_COMPLETION_POPUP_TEXT:
3220 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3223 case RC_COMPLETION_POPUP_DELAY:
3224 str = _("The inline completion delay.");
3227 case RC_COMPLETION_INLINE_MATH:
3228 str = _("Select to display the inline completion in math mode.");
3231 case RC_COMPLETION_INLINE_TEXT:
3232 str = _("Select to display the inline completion in text mode.");
3235 case RC_COMPLETION_INLINE_DOTS:
3236 str = _("Use \"...\" to shorten long completions.");
3239 case RC_AUTOCORRECTION_MATH:
3240 str = _("Allow TeXMacs shorthand, like => converting to \Rightarrow.");
3243 case RC_NUMLASTFILES:
3244 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3248 case RC_PATH_PREFIX:
3249 str = _("Specify those directories which should be "
3250 "prepended to the PATH environment variable. "
3251 "Use the OS native format.");
3255 str = _("Shows a typeset preview of things such as math");
3258 case RC_PREVIEW_HASHED_LABELS:
3259 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3262 case RC_PREVIEW_SCALE_FACTOR:
3263 str = _("Scale the preview size to suit.");
3266 case RC_PRINTCOLLCOPIESFLAG:
3267 str = _("The option for specifying whether the copies should be collated.");
3270 case RC_PRINTCOPIESFLAG:
3271 str = _("The option for specifying the number of copies to print.");
3275 str = _("The default printer to print on. If none is specified, LyX will use the environment variable PRINTER.");
3278 case RC_PRINTEVENPAGEFLAG:
3279 str = _("The option to print only even pages.");
3282 case RC_PRINTEXSTRAOPTIONS:
3283 str = _("Extra options to pass to printing program after everything else, but before the filename of the DVI file to be printed.");
3286 case RC_PRINTFILEEXTENSION:
3287 str = _("Extension of printer program output file. Usually \".ps\".");
3290 case RC_PRINTLANDSCAPEFLAG:
3291 str = _("The option to print out in landscape.");
3294 case RC_PRINTODDPAGEFLAG:
3295 str = _("The option to print only odd pages.");
3298 case RC_PRINTPAGERANGEFLAG:
3299 str = _("The option for specifying a comma-separated list of pages to print.");
3302 case RC_PRINTPAPERDIMENSIONFLAG:
3303 str = _("Option to specify the dimensions of the print paper.");
3306 case RC_PRINTPAPERFLAG:
3307 str = _("The option to specify paper type.");
3310 case RC_PRINTREVERSEFLAG:
3311 str = _("The option to reverse the order of the pages printed.");
3314 case RC_PRINTSPOOL_COMMAND:
3315 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.");
3318 case RC_PRINTSPOOL_PRINTERPREFIX:
3319 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.");
3322 case RC_PRINTTOFILE:
3323 str = _("Option to pass to the print program to print to a file.");
3326 case RC_PRINTTOPRINTER:
3327 str = _("Option to pass to the print program to print on a specific printer.");
3330 case RC_PRINT_ADAPTOUTPUT:
3331 str = _("Select for LyX to pass the name of the destination printer to your print command.");
3334 case RC_PRINT_COMMAND:
3335 str = _("Your favorite print program, e.g. \"dvips\", \"dvilj4\".");
3338 case RC_RTL_SUPPORT:
3339 str = _("Select to enable support of right-to-left languages (e.g. Hebrew, Arabic).");
3342 case RC_VISUAL_CURSOR:
3343 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3347 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3350 case RC_SCREEN_FONT_ROMAN:
3351 case RC_SCREEN_FONT_SANS:
3352 case RC_SCREEN_FONT_TYPEWRITER:
3353 str = _("The screen fonts used to display the text while editing.");
3356 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3357 case RC_SCREEN_FONT_SANS_FOUNDRY:
3358 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3361 case RC_SCREEN_FONT_SCALABLE:
3362 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.");
3365 case RC_SCREEN_FONT_SIZES:
3366 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3369 case RC_SCREEN_ZOOM:
3370 //xgettext:no-c-format
3371 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3374 case RC_GEOMETRY_SESSION:
3375 str = _("Allow session manager to save and restore windows geometry.");
3379 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3385 case RC_SHOW_BANNER:
3386 str = _("De-select if you don't want the startup banner.");
3389 case RC_TEMPDIRPATH:
3390 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3393 case RC_THESAURUSDIRPATH:
3394 str = _("This is the place where the files of the thesaurus library reside.");
3397 case RC_TEMPLATEPATH:
3398 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3401 case RC_TEX_ALLOWS_SPACES:
3404 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3408 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3420 case RC_USE_USE_SYSTEM_COLORS:
3421 str = _("Enable use the system colors for some things like main window background and selection.");
3424 case RC_USE_TOOLTIP:
3425 str = _("Enable the automatic appearance of tool tips in the work area.");
3428 case RC_USE_PIXMAP_CACHE:
3429 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3432 case RC_USE_SPELL_LIB:
3435 case RC_VIEWDVI_PAPEROPTION:
3436 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3451 // The global instance
3454 // The global copy of the system lyxrc entries (everything except preferences)