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.
21 #include "BufferList.h"
23 #include "Converter.h"
24 #include "FontEnums.h"
30 #include "SpellChecker.h"
33 #include "graphics/GraphicsTypes.h"
35 #include "support/convert.h"
36 #include "support/debug.h"
37 #include "support/environment.h"
38 #include "support/FileName.h"
39 #include "support/filetools.h"
40 #include "support/gettext.h"
41 #include "support/lstrings.h"
42 #include "support/os.h"
43 #include "support/Package.h"
44 #include "support/TempFile.h"
45 #include "support/userinfo.h"
52 using namespace lyx::support;
56 namespace os = support::os;
60 // The format should also be updated in configure.py, and conversion code
61 // should be added to prefs2prefs_prefs.py.
62 static unsigned int const LYXRC_FILEFORMAT = 23; // lasgouttes: remove qimage
64 // when adding something to this array keep it sorted!
65 LexerKeyword lyxrcTags[] = {
66 { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND },
67 { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION },
68 { "\\alternate_language", LyXRC::RC_ALT_LANG },
69 { "\\auto_number", LyXRC::RC_AUTO_NUMBER },
70 { "\\auto_region_delete", LyXRC::RC_AUTOREGIONDELETE },
71 { "\\auto_reset_options", LyXRC::RC_AUTORESET_OPTIONS },
72 { "\\autocorrection_math", LyXRC::RC_AUTOCORRECTION_MATH },
73 { "\\autosave", LyXRC::RC_AUTOSAVE },
74 { "\\backupdir_path", LyXRC::RC_BACKUPDIR_PATH },
75 { "\\bibtex_alternatives", LyXRC::RC_BIBTEX_ALTERNATIVES },
76 { "\\bibtex_command", LyXRC::RC_BIBTEX_COMMAND },
77 { "\\bind_file", LyXRC::RC_BINDFILE },
78 { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES },
79 { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND },
80 { "\\close_buffer_with_last_view", LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW },
81 { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT },
82 { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY },
83 { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS },
84 { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH },
85 { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT },
86 { "\\completion_minlength", LyXRC::RC_COMPLETION_MINLENGTH },
87 { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE },
88 { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY },
89 { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH },
90 { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT },
91 { "\\converter", LyXRC::RC_CONVERTER },
92 { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE },
93 { "\\copier", LyXRC::RC_COPIER },
94 { "\\cursor_follows_scrollbar", LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR },
95 { "\\cursor_width", LyXRC::RC_CURSOR_WIDTH },
96 { "\\date_insert_format", LyXRC::RC_DATE_INSERT_FORMAT },
97 { "\\def_file", LyXRC::RC_DEFFILE },
98 { "\\default_decimal_point", LyXRC::RC_DEFAULT_DECIMAL_POINT },
99 { "\\default_length_unit", LyXRC::RC_DEFAULT_LENGTH_UNIT },
100 { "\\default_otf_view_format", LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT },
101 { "\\default_view_format", LyXRC::RC_DEFAULT_VIEW_FORMAT },
102 { "\\dialogs_iconify_with_main", LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN },
103 { "\\display_graphics", LyXRC::RC_DISPLAY_GRAPHICS },
104 { "\\document_path", LyXRC::RC_DOCUMENTPATH },
105 { "\\editor_alternatives", LyXRC::RC_EDITOR_ALTERNATIVES },
106 { "\\escape_chars", LyXRC::RC_ESC_CHARS },
107 { "\\example_path", LyXRC::RC_EXAMPLEPATH },
108 { "\\export_overwrite", LyXRC::RC_EXPORT_OVERWRITE },
109 { "\\font_encoding", LyXRC::RC_FONT_ENCODING },
110 { "\\format", LyXRC::RC_FILEFORMAT },
111 { "\\forward_search_dvi", LyXRC::RC_FORWARD_SEARCH_DVI },
112 { "\\forward_search_pdf", LyXRC::RC_FORWARD_SEARCH_PDF },
113 { "\\fullscreen_limit", LyXRC::RC_FULL_SCREEN_LIMIT },
114 { "\\fullscreen_menubar", LyXRC::RC_FULL_SCREEN_MENUBAR },
115 { "\\fullscreen_scrollbar", LyXRC::RC_FULL_SCREEN_SCROLLBAR },
116 { "\\fullscreen_statusbar", LyXRC::RC_FULL_SCREEN_STATUSBAR },
117 { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR },
118 { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS },
119 { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH },
120 { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS },
121 { "\\gui_language", LyXRC::RC_GUI_LANGUAGE },
122 { "\\hunspelldir_path", LyXRC::RC_HUNSPELLDIR_PATH },
123 { "\\icon_set", LyXRC::RC_ICON_SET },
124 { "\\index_alternatives", LyXRC::RC_INDEX_ALTERNATIVES },
125 { "\\index_command", LyXRC::RC_INDEX_COMMAND },
126 { "\\input", LyXRC::RC_INPUT },
127 { "\\jbibtex_alternatives", LyXRC::RC_JBIBTEX_ALTERNATIVES },
128 { "\\jbibtex_command", LyXRC::RC_JBIBTEX_COMMAND },
129 { "\\jindex_command", LyXRC::RC_JINDEX_COMMAND },
130 { "\\kbmap", LyXRC::RC_KBMAP },
131 { "\\kbmap_primary", LyXRC::RC_KBMAP_PRIMARY },
132 { "\\kbmap_secondary", LyXRC::RC_KBMAP_SECONDARY },
133 { "\\language_auto_begin", LyXRC::RC_LANGUAGE_AUTO_BEGIN },
134 { "\\language_auto_end", LyXRC::RC_LANGUAGE_AUTO_END },
135 { "\\language_command_begin", LyXRC::RC_LANGUAGE_COMMAND_BEGIN },
136 { "\\language_command_end", LyXRC::RC_LANGUAGE_COMMAND_END },
137 { "\\language_command_local", LyXRC::RC_LANGUAGE_COMMAND_LOCAL },
138 { "\\language_custom_package", LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE },
139 { "\\language_global_options", LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS },
140 { "\\language_package_selection", LyXRC::RC_LANGUAGE_PACKAGE_SELECTION },
141 { "\\load_session", LyXRC::RC_LOADSESSION },
142 { "\\mac_dontswap_ctrl_meta", LyXRC::RC_MAC_DONTSWAP_CTRL_META },
143 { "\\mac_like_cursor_movement", LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT },
144 { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE },
145 { "\\make_backup", LyXRC::RC_MAKE_BACKUP },
146 { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE },
147 { "\\mouse_middlebutton_paste", LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE },
148 { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED },
149 { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND },
150 { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES },
151 { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS },
152 { "\\paragraph_markers", LyXRC::RC_PARAGRAPH_MARKERS },
153 { "\\path_prefix", LyXRC::RC_PATH_PREFIX },
154 { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN },
155 { "\\preview", LyXRC::RC_PREVIEW },
156 { "\\preview_hashed_labels", LyXRC::RC_PREVIEW_HASHED_LABELS },
157 { "\\preview_scale_factor", LyXRC::RC_PREVIEW_SCALE_FACTOR },
158 { "\\print_landscape_flag", LyXRC::RC_PRINTLANDSCAPEFLAG },
159 { "\\print_paper_dimension_flag", LyXRC::RC_PRINTPAPERDIMENSIONFLAG },
160 { "\\print_paper_flag", LyXRC::RC_PRINTPAPERFLAG },
161 { "\\pygmentize_command", LyXRC::RC_PYGMENTIZE_COMMAND },
162 { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
163 { "\\save_origin", LyXRC::RC_SAVE_ORIGIN },
164 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
165 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
166 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
167 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
168 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
169 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
170 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
171 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
172 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
173 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
174 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
175 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
176 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
177 { "\\set_color", LyXRC::RC_SET_COLOR },
178 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
179 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
180 { "\\single_instance", LyXRC::RC_SINGLE_INSTANCE },
181 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
182 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
183 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
184 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
185 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
186 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
187 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
188 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
189 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
190 { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
191 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
192 { "\\ui_file", LyXRC::RC_UIFILE },
193 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
194 { "\\use_converter_needauth", LyXRC::RC_USE_CONVERTER_NEEDAUTH },
195 { "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN },
196 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
197 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
198 // compatibility with versions older than 1.4.0 only
199 { "\\use_system_colors", LyXRC::RC_USE_SYSTEM_COLORS },
200 { "\\use_system_theme_icons", LyXRC::RC_USE_SYSTEM_THEME_ICONS },
201 { "\\use_tooltip", LyXRC::RC_USE_TOOLTIP },
202 { "\\user_email", LyXRC::RC_USER_EMAIL },
203 { "\\user_name", LyXRC::RC_USER_NAME },
204 { "\\view_dvi_paper_option", LyXRC::RC_VIEWDVI_PAPEROPTION },
205 // compatibility with versions older than 1.4.0 only
206 { "\\viewer", LyXRC::RC_VIEWER},
207 { "\\viewer_alternatives", LyXRC::RC_VIEWER_ALTERNATIVES },
208 { "\\visual_cursor", LyXRC::RC_VISUAL_CURSOR },
209 { "format", LyXRC::RC_LYXRCFORMAT }
212 const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]);
223 void LyXRC::setDefaults()
226 use_system_theme_icons = false;
228 def_file = "default";
230 // The current document directory
231 texinputs_prefix = ".";
232 print_landscape_flag = "-t landscape";
233 print_paper_flag = "-t";
234 print_paper_dimension_flag = "-T";
235 document_path.erase();
236 view_dvi_paper_option.erase();
237 default_view_format = "pdf2";
238 default_otf_view_format = "pdf4";
239 chktex_command = "chktex -n1 -n3 -n6 -n9 -n22 -n25 -n30 -n38";
240 bibtex_command = "automatic";
242 index_command = "makeindex -c -q";
243 nomencl_command = "makeindex -s nomencl.ist";
244 pygmentize_command = string();
246 // Because a screen is typically wider than a piece of paper:
249 allow_geometry_session = true;
250 // Default LaTeX font size:
251 font_sizes[FONT_SIZE_TINY] = "5.0";
252 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
253 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
254 font_sizes[FONT_SIZE_SMALL] = "9.0";
255 font_sizes[FONT_SIZE_NORMAL] = "10.0";
256 font_sizes[FONT_SIZE_LARGE] = "12.0";
257 font_sizes[FONT_SIZE_LARGER] = "14.4";
258 font_sizes[FONT_SIZE_LARGEST] = "17.26";
259 font_sizes[FONT_SIZE_HUGE] = "20.74";
260 font_sizes[FONT_SIZE_HUGER] = "24.88";
261 use_scalable_fonts = true;
262 roman_font_name = "";
264 typewriter_font_name = "";
266 auto_region_delete = true;
267 auto_reset_options = false;
268 plaintext_linelen = 65;
269 mouse_wheel_speed = 1.0;
271 check_lastfiles = true;
272 use_lastfilepos = true;
273 load_session = false;
275 save_compressed = false;
277 backupdir_path.erase();
278 display_graphics = true;
279 // Spellchecker settings:
280 // FIXME: this check should test the target platform (darwin)
281 #if defined(USE_MACOSX_PACKAGING)
282 spellchecker = "native";
283 #elif defined(USE_ASPELL)
284 spellchecker = "aspell";
285 #elif defined(USE_HUNSPELL)
286 spellchecker = "hunspell";
288 spellchecker = "aspell";
290 spellchecker_accept_compound = false;
291 spellcheck_continuously = false;
292 completion_minlength = 6;
293 spellcheck_notes = true;
295 visual_cursor = false;
297 mark_foreign_language = true;
298 language_auto_begin = true;
299 language_auto_end = true;
300 language_global_options = true;
301 language_package_selection = LP_AUTO;
302 language_custom_package = "\\usepackage{babel}";
303 language_command_begin = "\\selectlanguage{$$lang}";
304 language_command_local = "\\foreignlanguage{$$lang}{";
305 sort_layouts = false;
306 group_layouts = true;
307 gui_language = "auto";
309 windows_style_tex_paths = false;
310 tex_allows_spaces = false;
311 date_insert_format = "%x";
312 cursor_follows_scrollbar = false;
313 scroll_below_document = false;
314 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
315 paragraph_markers = false;
316 mac_dontswap_ctrl_meta = false;
317 mac_like_cursor_movement = false;
318 macro_edit_style = MACRO_EDIT_INLINE_BOX;
319 dialogs_iconify_with_main = false;
320 preview = PREVIEW_OFF;
321 preview_hashed_labels = false;
322 preview_scale_factor = 1.0;
323 use_converter_cache = true;
324 use_converter_needauth_forbidden = true;
325 use_converter_needauth = true;
326 use_system_colors = false;
328 use_pixmap_cache = false;
329 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
330 user_name = to_utf8(support::user_name());
331 user_email = to_utf8(support::user_email());
332 open_buffers_in_tabs = true;
333 single_close_tab_button = false;
334 single_instance = true;
335 forward_search_dvi = string();
336 forward_search_pdf = string();
337 export_overwrite = NO_FILES;
339 // Fullscreen settings
340 full_screen_limit = false;
341 full_screen_toolbars = true;
342 full_screen_tabbar = true;
343 full_screen_menubar = true;
344 full_screen_statusbar = true;
345 full_screen_scrollbar = true;
346 full_screen_width = 700;
348 completion_cursor_text = true;
349 completion_popup_math = true;
350 completion_popup_text = false;
351 completion_popup_delay = 2.0;
352 completion_popup_after_complete = true;
353 autocorrection_math = false;
354 completion_inline_math = true;
355 completion_inline_text = false;
356 completion_inline_dots = -1;
357 completion_inline_delay = 0.2;
358 default_decimal_point = ".";
359 default_length_unit = Length::CM;
361 close_buffer_with_last_view = "yes";
362 mouse_middlebutton_paste = true;
368 void oldFontFormat(string & family, string & foundry)
370 if (family.empty() || family[0] != '-')
372 foundry = token(family, '-', 1);
373 family = token(family, '-', 2);
381 bool LyXRC::read(FileName const & filename, bool check_format)
383 Lexer lexrc(lyxrcTags);
384 lexrc.setFile(filename);
385 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
386 ReturnValues retval = read(lexrc, check_format);
387 if (!check_format || retval != FormatMismatch)
388 return retval == ReadOK;
390 LYXERR(Debug::FILES, "Converting LyXRC file to " << LYXRC_FILEFORMAT);
391 TempFile tmp("convert_lyxrc");
392 FileName const tempfile = tmp.name();
393 bool const success = prefs2prefs(filename, tempfile, false);
395 LYXERR0 ("Unable to convert " << filename.absFileName() <<
396 " to format " << LYXRC_FILEFORMAT);
399 // Keep this in the else branch, such that lexrc2 goes out
400 // of scope and releases the lock on tempfile before we
401 // attempt to remove it. This matters on Windows.
402 Lexer lexrc2(lyxrcTags);
403 lexrc2.setFile(tempfile);
404 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
405 retval = read(lexrc2, check_format);
407 return retval == ReadOK;
411 // don't need to worry about conversion, because this is always
412 // from an internal source
413 bool LyXRC::read(istream & is)
415 Lexer lexrc(lyxrcTags);
417 LYXERR(Debug::LYXRC, "Reading istream...");
418 return read(lexrc, false) == ReadOK;
422 LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
424 if (lyxerr.debugging(Debug::PARSER))
425 lexrc.printTable(lyxerr);
430 // format prior to 2.0 and introduction of format tag
431 unsigned int format = 0;
433 while (lexrc.isOK()) {
434 // By using two switches we take advantage of the compiler
435 // telling us if we have missed a LyXRCTags element in
436 // the second switch.
437 // Note that this also shows a problem with Lexer since it
438 // helps us avoid taking advantage of the strictness of the
441 int le = lexrc.lex();
443 case Lexer::LEX_UNDEF:
444 lexrc.printError("Unknown tag `$$Token'");
446 case Lexer::LEX_FEOF:
451 switch (static_cast<LyXRCTags>(le)) {
454 format = lexrc.getInteger();
456 case RC_INPUT: // Include file
459 libFileSearch(string(),
461 if (!read(tmp, check_format)) {
463 "Error reading included file: " + tmp.absFileName());
469 bind_file = os::internal_path(lexrc.getString());
474 def_file = os::internal_path(lexrc.getString());
479 ui_file = os::internal_path(lexrc.getString());
482 case RC_AUTORESET_OPTIONS:
483 lexrc >> auto_reset_options;
486 case RC_DISPLAY_GRAPHICS:
488 display_graphics = lexrc.getString() == "true";
491 case RC_TEX_EXPECTS_WINDOWS_PATHS:
492 lexrc >> windows_style_tex_paths;
495 case RC_TEX_ALLOWS_SPACES:
496 lexrc >> tex_allows_spaces;
499 case RC_TEXINPUTS_PREFIX:
500 lexrc >> texinputs_prefix;
507 case RC_KBMAP_PRIMARY:
509 string const kmap(os::internal_path(lexrc.getString()));
510 if (!libFileSearch("kbd", kmap, "kmap").empty()
512 primary_kbmap = kmap;
514 lexrc.printError("LyX: Keymap `$$Token' not found");
519 case RC_KBMAP_SECONDARY:
521 string const kmap(os::internal_path(lexrc.getString()));
522 if (!libFileSearch("kbd", kmap, "kmap").empty()
524 secondary_kbmap = kmap;
526 lexrc.printError("LyX: Keymap `$$Token' not found");
531 case RC_FONT_ENCODING:
535 case RC_PRINTLANDSCAPEFLAG:
536 lexrc >> print_landscape_flag;
539 case RC_PRINTPAPERDIMENSIONFLAG:
540 lexrc >> print_paper_dimension_flag;
543 case RC_PRINTPAPERFLAG:
544 lexrc >> print_paper_flag;
547 case RC_PYGMENTIZE_COMMAND:
548 if (lexrc.next(true)) {
549 pygmentize_command = lexrc.getString();
553 case RC_VIEWDVI_PAPEROPTION:
555 view_dvi_paper_option = lexrc.getString();
557 view_dvi_paper_option.erase();
560 case RC_CHKTEX_COMMAND:
561 if (lexrc.next(true)) {
562 chktex_command = lexrc.getString();
566 case RC_BIBTEX_ALTERNATIVES:
567 if (lexrc.next(true)) {
568 bibtex_alternatives.insert(lexrc.getString());
572 case RC_BIBTEX_COMMAND:
573 if (lexrc.next(true)) {
574 bibtex_command = lexrc.getString();
578 case RC_JBIBTEX_COMMAND:
579 if (lexrc.next(true)) {
580 jbibtex_command = lexrc.getString();
584 case RC_JBIBTEX_ALTERNATIVES:
585 if (lexrc.next(true)) {
586 jbibtex_alternatives.insert(lexrc.getString());
590 case RC_INDEX_ALTERNATIVES:
591 if (lexrc.next(true)) {
592 index_alternatives.insert(lexrc.getString());
596 case RC_INDEX_COMMAND:
597 if (lexrc.next(true)) {
598 index_command = lexrc.getString();
602 case RC_JINDEX_COMMAND:
603 if (lexrc.next(true)) {
604 jindex_command = lexrc.getString();
608 case RC_SPLITINDEX_COMMAND:
609 if (lexrc.next(true)) {
610 splitindex_command = lexrc.getString();
614 case RC_NOMENCL_COMMAND:
615 if (lexrc.next(true)) {
616 nomencl_command = lexrc.getString();
630 case RC_GEOMETRY_SESSION:
631 lexrc >> allow_geometry_session;
634 case RC_SCREEN_FONT_SIZES:
635 lexrc >> font_sizes[FONT_SIZE_TINY];
636 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
637 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
638 lexrc >> font_sizes[FONT_SIZE_SMALL];
639 lexrc >> font_sizes[FONT_SIZE_NORMAL];
640 lexrc >> font_sizes[FONT_SIZE_LARGE];
641 lexrc >> font_sizes[FONT_SIZE_LARGER];
642 lexrc >> font_sizes[FONT_SIZE_LARGEST];
643 lexrc >> font_sizes[FONT_SIZE_HUGE];
644 lexrc >> font_sizes[FONT_SIZE_HUGER];
647 case RC_SCREEN_FONT_SCALABLE:
648 lexrc >> use_scalable_fonts;
655 case RC_DOCUMENTPATH:
657 document_path = os::internal_path(lexrc.getString());
662 example_path = os::internal_path(lexrc.getString());
665 case RC_TEMPLATEPATH:
667 template_path = os::internal_path(lexrc.getString());
672 tempdir_path = os::internal_path(lexrc.getString());
675 case RC_THESAURUSDIRPATH:
677 thesaurusdir_path = os::internal_path(lexrc.getString());
680 case RC_HUNSPELLDIR_PATH:
682 hunspelldir_path = os::internal_path(lexrc.getString());
685 case RC_USELASTFILEPOS:
686 lexrc >> use_lastfilepos;
690 lexrc >> load_session;
693 case RC_MOUSE_WHEEL_SPEED:
694 lexrc >> mouse_wheel_speed;
697 case RC_COMPLETION_INLINE_DELAY:
698 lexrc >> completion_inline_delay;
701 case RC_COMPLETION_INLINE_MATH:
702 lexrc >> completion_inline_math;
705 case RC_COMPLETION_INLINE_TEXT:
706 lexrc >> completion_inline_text;
709 case RC_COMPLETION_INLINE_DOTS:
710 lexrc >> completion_inline_dots;
713 case RC_AUTOCORRECTION_MATH:
714 lexrc >> autocorrection_math;
717 case RC_COMPLETION_POPUP_DELAY:
718 lexrc >> completion_popup_delay;
721 case RC_COMPLETION_POPUP_MATH:
722 lexrc >> completion_popup_math;
725 case RC_COMPLETION_POPUP_TEXT:
726 lexrc >> completion_popup_text;
729 case RC_COMPLETION_CURSOR_TEXT:
730 lexrc >> completion_cursor_text;
733 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
734 lexrc >> completion_popup_after_complete;
737 case RC_COMPLETION_MINLENGTH:
738 lexrc >> completion_minlength;
741 case RC_NUMLASTFILES:
742 lexrc >> num_lastfiles;
745 case RC_CHECKLASTFILES:
746 lexrc >> check_lastfiles;
753 case RC_USE_SYSTEM_THEME_ICONS:
754 lexrc >> use_system_theme_icons;
757 case RC_SCREEN_FONT_ROMAN:
759 roman_font_name = lexrc.getString();
760 oldFontFormat(roman_font_name,
765 case RC_SCREEN_FONT_SANS:
767 sans_font_name = lexrc.getString();
768 oldFontFormat(sans_font_name, sans_font_foundry);
772 case RC_SCREEN_FONT_TYPEWRITER:
774 typewriter_font_name = lexrc.getString();
775 oldFontFormat(typewriter_font_name,
776 typewriter_font_foundry);
780 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
781 lexrc >> roman_font_foundry;
784 case RC_SCREEN_FONT_SANS_FOUNDRY:
785 lexrc >> sans_font_foundry;
788 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
789 lexrc >> typewriter_font_foundry;
794 lexrc.printError("Missing color tag.");
797 string lyx_name = lexrc.getString();
800 lexrc.printError("Missing color name for color: `$$Token'");
803 string x11_name = lexrc.getString();
805 ColorCode const col =
806 lcolor.getFromLyXName(lyx_name);
807 if (col == Color_none ||
808 col == Color_inherit ||
812 if (!lcolor.setColor(col, x11_name))
813 LYXERR0("Bad lyxrc set_color for " << lyx_name);
817 case RC_AUTOREGIONDELETE:
818 // Auto region delete defaults to true
819 lexrc >> auto_region_delete;
824 lyxpipes = os::internal_path(lexrc.getString());
827 case RC_CURSOR_FOLLOWS_SCROLLBAR:
828 lexrc >> cursor_follows_scrollbar;
831 case RC_CURSOR_WIDTH:
832 lexrc >> cursor_width;
835 case RC_SCROLL_BELOW_DOCUMENT:
836 lexrc >> scroll_below_document;
839 case RC_PARAGRAPH_MARKERS:
840 lexrc >> paragraph_markers;
843 case RC_MAC_DONTSWAP_CTRL_META:
844 lexrc >> mac_dontswap_ctrl_meta;
847 case RC_MAC_LIKE_CURSOR_MOVEMENT:
848 lexrc >> mac_like_cursor_movement;
851 case RC_MACRO_EDIT_STYLE:
853 switch (lexrc.getInteger()) {
854 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
855 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
856 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
861 case RC_DIALOGS_ICONIFY_WITH_MAIN:
862 lexrc >> dialogs_iconify_with_main;
865 case RC_PLAINTEXT_LINELEN:
866 lexrc >> plaintext_linelen;
868 // Spellchecker settings:
869 case RC_ACCEPT_COMPOUND:
870 lexrc >> spellchecker_accept_compound;
872 case RC_USE_SYSTEM_COLORS:
873 lexrc >> use_system_colors;
876 lexrc >> use_tooltip;
878 case RC_USE_PIXMAP_CACHE:
879 lexrc >> use_pixmap_cache;
881 case RC_SPELLCHECKER:
882 lexrc >> spellchecker;
885 lexrc >> spellchecker_alt_lang;
888 lexrc >> spellchecker_esc_chars;
890 case RC_SPELLCHECK_CONTINUOUSLY:
891 lexrc >> spellcheck_continuously;
893 case RC_SPELLCHECK_NOTES:
894 lexrc >> spellcheck_notes;
897 lexrc >> make_backup;
899 case RC_SAVE_COMPRESSED:
900 lexrc >> save_compressed;
903 lexrc >> save_origin;
905 case RC_BACKUPDIR_PATH:
907 backupdir_path = os::internal_path(lexrc.getString());
909 case RC_DEFAULT_DECIMAL_POINT:
910 lexrc >> default_decimal_point;
912 case RC_DEFAULT_LENGTH_UNIT:
914 default_length_unit = (Length::UNIT) lexrc.getInteger();
916 case RC_DATE_INSERT_FORMAT:
917 lexrc >> date_insert_format;
919 case RC_LANGUAGE_CUSTOM_PACKAGE:
920 lexrc >> language_custom_package;
922 case RC_LANGUAGE_AUTO_BEGIN:
923 lexrc >> language_auto_begin;
925 case RC_LANGUAGE_AUTO_END:
926 lexrc >> language_auto_end;
928 case RC_LANGUAGE_GLOBAL_OPTIONS:
929 lexrc >> language_global_options;
931 case RC_LANGUAGE_PACKAGE_SELECTION:
933 switch (lexrc.getInteger()) {
935 language_package_selection = LP_AUTO;
938 language_package_selection = LP_BABEL;
941 language_package_selection = LP_CUSTOM;
944 language_package_selection = LP_NONE;
949 case RC_LANGUAGE_COMMAND_BEGIN:
950 lexrc >> language_command_begin;
952 case RC_LANGUAGE_COMMAND_END:
953 lexrc >> language_command_end;
955 case RC_LANGUAGE_COMMAND_LOCAL:
956 lexrc >> language_command_local;
958 case RC_VISUAL_CURSOR:
959 lexrc >> visual_cursor;
961 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
962 lexrc >> close_buffer_with_last_view;
965 lexrc >> auto_number;
967 case RC_MARK_FOREIGN_LANGUAGE:
968 lexrc >> mark_foreign_language;
974 fmt = lexrc.getString();
975 if (lexrc.next(true))
976 command = lexrc.getString();
977 setMover(fmt, command);
982 string from, to, command, flags;
984 from = lexrc.getString();
986 to = lexrc.getString();
987 if (lexrc.next(true))
988 command = lexrc.getString();
990 flags = lexrc.getString();
992 theConverters().erase(from, to);
994 theConverters().add(from, to, command, flags);
997 // compatibility with versions older than 1.4.0 only
999 string format, command;
1000 lexrc >> format >> command;
1001 theFormats().setViewer(format, command);
1004 case RC_FILEFORMAT: {
1006 string format, extensions, shortcut;
1007 docstring prettyname;
1008 if (!(lexrc >> format >> extensions))
1010 if (ok && lexrc.next(true))
1011 prettyname = lexrc.getDocString();
1015 if(!(lexrc >> shortcut))
1017 string viewer, editor;
1018 if (ok && lexrc.next(true))
1019 viewer = lexrc.getString();
1022 if (ok && lexrc.next(true))
1023 editor = lexrc.getString();
1027 if (!(lexrc >> flags >> mime))
1029 int flgs = Format::none;
1030 while (!flags.empty()) {
1032 flags = split(flags, flag, ',');
1033 if (flag == "document")
1034 flgs |= Format::document;
1035 else if (flag == "vector")
1036 flgs |= Format::vector;
1037 else if (flag == "zipped=native")
1038 flgs |= Format::zipped_native;
1039 else if (flag == "menu=export")
1040 flgs |= Format::export_menu;
1042 LYXERR0("Ignoring unknown flag `"
1043 << flag << "' for format `"
1047 LYXERR0("Syntax error in format " << format);
1048 else if (prettyname.empty()) {
1049 if (theConverters().formatIsUsed(format))
1050 LYXERR0("Can't delete format " << format);
1052 theFormats().erase(format);
1054 theFormats().add(format, extensions, prettyname,
1055 shortcut, viewer, editor, mime, flgs);
1059 case RC_VIEWER_ALTERNATIVES: {
1060 string format, command;
1061 if ((lexrc >> format) && lexrc.next(true)) {
1062 command = lexrc.getString();
1063 viewer_alternatives[format].insert(command);
1067 case RC_EDITOR_ALTERNATIVES: {
1068 string format, command;
1069 if ((lexrc >> format) && lexrc.next(true)) {
1070 command = lexrc.getString();
1071 editor_alternatives[format].insert(command);
1076 case RC_DEFAULT_OTF_VIEW_FORMAT:
1077 lexrc >> default_otf_view_format;
1080 case RC_DEFAULT_VIEW_FORMAT:
1081 lexrc >> default_view_format;
1084 case RC_GUI_LANGUAGE:
1085 lexrc >> gui_language;
1088 case RC_SHOW_BANNER:
1089 lexrc >> show_banner;
1094 string const tmp = lexrc.getString();
1095 if (tmp == "true" || tmp == "on")
1096 preview = PREVIEW_ON;
1097 else if (tmp == "no_math")
1098 preview = PREVIEW_NO_MATH;
1100 preview = PREVIEW_OFF;
1101 if (tmp != "false" && tmp != "off")
1102 LYXERR0("Unrecognized preview status \""
1108 case RC_PREVIEW_HASHED_LABELS:
1109 lexrc >> preview_hashed_labels;
1112 case RC_PREVIEW_SCALE_FACTOR:
1113 lexrc >> preview_scale_factor;
1120 lexrc >> user_email;
1123 case RC_PATH_PREFIX:
1124 lexrc >> path_prefix;
1127 case RC_USE_CONVERTER_CACHE:
1128 lexrc >> use_converter_cache;
1130 case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
1131 lexrc >> use_converter_needauth_forbidden;
1133 case RC_USE_CONVERTER_NEEDAUTH:
1134 lexrc >> use_converter_needauth;
1136 case RC_CONVERTER_CACHE_MAXAGE:
1137 lexrc >> converter_cache_maxage;
1140 case RC_SORT_LAYOUTS:
1141 lexrc >> sort_layouts;
1143 case RC_GROUP_LAYOUTS:
1144 lexrc >> group_layouts;
1146 case RC_FULL_SCREEN_LIMIT:
1147 lexrc >> full_screen_limit;
1149 case RC_FULL_SCREEN_TOOLBARS:
1150 lexrc >> full_screen_toolbars;
1152 case RC_FULL_SCREEN_SCROLLBAR:
1153 lexrc >> full_screen_scrollbar;
1155 case RC_FULL_SCREEN_STATUSBAR:
1156 lexrc >> full_screen_statusbar;
1158 case RC_FULL_SCREEN_TABBAR:
1159 lexrc >> full_screen_tabbar;
1161 case RC_FULL_SCREEN_MENUBAR:
1162 lexrc >> full_screen_menubar;
1164 case RC_FULL_SCREEN_WIDTH:
1165 lexrc >> full_screen_width;
1167 case RC_OPEN_BUFFERS_IN_TABS:
1168 lexrc >> open_buffers_in_tabs;
1170 case RC_SINGLE_CLOSE_TAB_BUTTON:
1171 lexrc >> single_close_tab_button;
1173 case RC_SINGLE_INSTANCE:
1174 lexrc >> single_instance;
1175 if (run_mode == PREFERRED)
1176 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1178 case RC_FORWARD_SEARCH_DVI:
1179 if (lexrc.next(true))
1180 forward_search_dvi = lexrc.getString();
1182 case RC_FORWARD_SEARCH_PDF:
1183 if (lexrc.next(true))
1184 forward_search_pdf = lexrc.getString();
1186 case RC_EXPORT_OVERWRITE:
1188 string const tmp = lexrc.getString();
1189 if (tmp == "all" || tmp == "true")
1190 export_overwrite = ALL_FILES;
1191 else if (tmp == "main")
1192 export_overwrite = MAIN_FILE;
1194 export_overwrite = NO_FILES;
1195 if (tmp != "ask" && tmp != "false")
1196 LYXERR0("Unrecognized export_overwrite status \""
1201 case RC_SCROLL_WHEEL_ZOOM:
1203 string const tmp = lexrc.getString();
1205 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1206 else if (tmp == "shift")
1207 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1208 else if (tmp == "alt")
1209 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1211 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1212 if (tmp != "off" && tmp != "false")
1213 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1219 case RC_MOUSE_MIDDLEBUTTON_PASTE:
1220 lexrc >> mouse_middlebutton_paste;
1224 break; // this is just a dummy
1227 // This is triggered the first time through the loop unless
1228 // we hit a format tag.
1229 if (check_format && format != LYXRC_FILEFORMAT)
1230 return FormatMismatch;
1233 /// Update converters data-structures
1234 theConverters().update(theFormats());
1235 theConverters().buildGraph();
1236 theBufferList().invalidateConverterCache();
1242 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1244 ofstream ofs(filename.toFilesystemEncoding().c_str());
1246 write(ofs, ignore_system_lyxrc);
1250 void LyXRC::print() const
1252 if (lyxerr.debugging())
1253 write(lyxerr, false);
1261 typedef pair<string, SpecialisedMover> Data;
1263 SameMover(Data const & comparison)
1264 : comparison_(comparison) {}
1266 bool operator()(Data const & data) const
1268 return data.first == comparison_.first &&
1269 data.second.command() == comparison_.second.command();
1279 // Escape \ and " so that LyXLex can read the string later
1280 string escapeCommand(string const & str) {
1281 return subst(subst(str , "\\", "\\\\"),
1288 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1290 LyXRCTags tag = RC_LAST;
1292 if (!name.empty()) {
1293 for (int i = 0; i != lyxrcCount; ++i)
1294 if ("\\" + name == lyxrcTags[i].tag)
1295 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1299 os << "# LyX " << lyx_version
1300 << " generated this file. If you want to make your own\n"
1301 << "# modifications you should do them from inside LyX and save.\n\n"
1302 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1304 // Why the switch you might ask. It is a trick to ensure that all
1305 // the elements in the LyXRCTags enum are handled. As you can see
1306 // there are no breaks at all. So it is just a huge fall-through.
1307 // The nice thing is that we will get a warning from the compiler
1308 // if we forget an element.
1312 // input/include files are not done here
1313 case RC_LYXRCFORMAT:
1315 if (ignore_system_lyxrc ||
1316 bind_file != system_lyxrc.bind_file) {
1317 string const path = os::external_path(bind_file);
1318 os << "\\bind_file \"" << path << "\"\n";
1324 if (ignore_system_lyxrc ||
1325 def_file != system_lyxrc.def_file) {
1326 string const path = os::external_path(def_file);
1327 os << "\\def_file \"" << path << "\"\n";
1336 << "# MISC SECTION ######################################\n"
1338 // bind files are not done here.
1340 case RC_PATH_PREFIX:
1341 if (ignore_system_lyxrc ||
1342 path_prefix != system_lyxrc.path_prefix) {
1343 os << "\\path_prefix \"" << path_prefix << "\"\n";
1349 if (ignore_system_lyxrc ||
1350 ui_file != system_lyxrc.ui_file) {
1351 string const path = os::external_path(ui_file);
1352 os << "\\ui_file \"" << path << "\"\n";
1357 case RC_AUTOREGIONDELETE:
1358 if (ignore_system_lyxrc ||
1359 auto_region_delete != system_lyxrc.auto_region_delete) {
1360 os << "# Set to false to inhibit automatic replacement of\n"
1361 << "# the current selection.\n"
1362 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1368 case RC_AUTORESET_OPTIONS:
1369 if (ignore_system_lyxrc ||
1370 auto_reset_options != system_lyxrc.auto_reset_options) {
1371 os << "# Set to false to inhibit automatic reset of\n"
1372 << "# the class options to defaults on class change.\n"
1373 << "\\auto_reset_options "
1374 << convert<string>(auto_reset_options)
1381 if (ignore_system_lyxrc ||
1382 autosave != system_lyxrc.autosave) {
1383 os << "# The time interval between auto-saves in seconds.\n"
1384 << "\\autosave " << autosave << '\n';
1389 case RC_DISPLAY_GRAPHICS:
1390 if (ignore_system_lyxrc ||
1391 display_graphics != system_lyxrc.display_graphics) {
1392 os << "# Display graphics within LyX\n"
1394 << "\\display_graphics "
1395 << (display_graphics ? "true" : "false")
1401 case RC_SORT_LAYOUTS:
1402 if (ignore_system_lyxrc ||
1403 sort_layouts != system_lyxrc.sort_layouts) {
1404 os << "# Sort layouts alphabetically.\n"
1405 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1410 case RC_GROUP_LAYOUTS:
1411 if (ignore_system_lyxrc ||
1412 group_layouts != system_lyxrc.group_layouts) {
1413 os << "# Group layouts by their category.\n"
1414 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1419 case RC_VIEWDVI_PAPEROPTION:
1420 if (ignore_system_lyxrc ||
1421 view_dvi_paper_option
1422 != system_lyxrc.view_dvi_paper_option) {
1423 os << "# Options used to specify paper size to the\n"
1424 << "# view_dvi_command (e.g. -paper)\n"
1425 << "\\view_dvi_paper_option \""
1426 << view_dvi_paper_option << "\"\n";
1431 case RC_CHKTEX_COMMAND:
1432 if (ignore_system_lyxrc ||
1433 chktex_command != system_lyxrc.chktex_command) {
1434 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1439 case RC_BIBTEX_ALTERNATIVES: {
1440 CommandSet::const_iterator it = bibtex_alternatives.begin();
1441 CommandSet::const_iterator end = bibtex_alternatives.end();
1442 for ( ; it != end; ++it) {
1443 if (ignore_system_lyxrc
1444 || !system_lyxrc.bibtex_alternatives.count(*it))
1445 os << "\\bibtex_alternatives \""
1452 case RC_BIBTEX_COMMAND:
1453 if (ignore_system_lyxrc ||
1454 bibtex_command != system_lyxrc.bibtex_command) {
1455 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1460 case RC_JBIBTEX_COMMAND:
1461 if (ignore_system_lyxrc ||
1462 jbibtex_command != system_lyxrc.jbibtex_command) {
1463 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1468 case RC_JBIBTEX_ALTERNATIVES: {
1469 CommandSet::const_iterator it = jbibtex_alternatives.begin();
1470 CommandSet::const_iterator end = jbibtex_alternatives.end();
1471 for ( ; it != end; ++it) {
1472 if (ignore_system_lyxrc
1473 || !system_lyxrc.jbibtex_alternatives.count(*it))
1474 os << "\\jbibtex_alternatives \""
1481 case RC_INDEX_ALTERNATIVES: {
1482 CommandSet::const_iterator it = index_alternatives.begin();
1483 CommandSet::const_iterator end = index_alternatives.end();
1484 for ( ; it != end; ++it) {
1485 if (ignore_system_lyxrc
1486 || !system_lyxrc.index_alternatives.count(*it))
1487 os << "\\index_alternatives \""
1494 case RC_INDEX_COMMAND:
1495 if (ignore_system_lyxrc ||
1496 index_command != system_lyxrc.index_command) {
1497 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1502 case RC_JINDEX_COMMAND:
1503 if (ignore_system_lyxrc ||
1504 jindex_command != system_lyxrc.jindex_command) {
1505 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1510 case RC_SPLITINDEX_COMMAND:
1511 if (ignore_system_lyxrc ||
1512 splitindex_command != system_lyxrc.splitindex_command) {
1513 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1518 case RC_NOMENCL_COMMAND:
1519 if (ignore_system_lyxrc ||
1520 nomencl_command != system_lyxrc.nomencl_command) {
1521 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1526 case RC_PYGMENTIZE_COMMAND:
1527 if (ignore_system_lyxrc ||
1528 pygmentize_command != system_lyxrc.pygmentize_command) {
1529 os << "\\pygmentize_command \"" << escapeCommand(pygmentize_command) << "\"\n";
1534 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1535 // Don't write this setting to the preferences file,
1536 // but allow temporary changes (bug 7557).
1537 if (ignore_system_lyxrc) {
1538 os << "\\tex_expects_windows_paths "
1539 << convert<string>(windows_style_tex_paths) << '\n';
1544 case RC_TEX_ALLOWS_SPACES:
1545 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1546 os << "\\tex_allows_spaces "
1547 << convert<string>(tex_allows_spaces) << '\n';
1553 if (ignore_system_lyxrc ||
1554 use_kbmap != system_lyxrc.use_kbmap) {
1555 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1560 case RC_KBMAP_PRIMARY:
1561 if (ignore_system_lyxrc ||
1562 primary_kbmap != system_lyxrc.primary_kbmap) {
1563 string const path = os::external_path(primary_kbmap);
1564 os << "\\kbmap_primary \"" << path << "\"\n";
1569 case RC_KBMAP_SECONDARY:
1570 if (ignore_system_lyxrc ||
1571 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1572 string const path = os::external_path(secondary_kbmap);
1573 os << "\\kbmap_secondary \"" << path << "\"\n";
1579 if (ignore_system_lyxrc ||
1580 lyxpipes != system_lyxrc.lyxpipes) {
1581 string const path = os::external_path(lyxpipes);
1582 os << "\\serverpipe \"" << path << "\"\n";
1587 case RC_DATE_INSERT_FORMAT:
1588 if (ignore_system_lyxrc ||
1589 date_insert_format != system_lyxrc.date_insert_format) {
1590 os << "\\date_insert_format \"" << date_insert_format
1597 os << "\\user_name \"" << user_name << "\"\n";
1602 os << "\\user_email \"" << user_email << "\"\n";
1606 case RC_SHOW_BANNER:
1607 if (ignore_system_lyxrc ||
1608 show_banner != system_lyxrc.show_banner) {
1609 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1615 if (ignore_system_lyxrc ||
1616 preview != system_lyxrc.preview) {
1622 case PREVIEW_NO_MATH:
1629 os << "\\preview " << status << '\n';
1634 case RC_PREVIEW_HASHED_LABELS:
1635 if (ignore_system_lyxrc ||
1636 preview_hashed_labels !=
1637 system_lyxrc.preview_hashed_labels) {
1638 os << "\\preview_hashed_labels "
1639 << convert<string>(preview_hashed_labels) << '\n';
1644 case RC_PREVIEW_SCALE_FACTOR:
1645 if (ignore_system_lyxrc ||
1646 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1647 os << "\\preview_scale_factor "
1648 << preview_scale_factor << '\n';
1653 case RC_USE_CONVERTER_CACHE:
1654 if (ignore_system_lyxrc ||
1655 use_converter_cache != system_lyxrc.use_converter_cache) {
1656 os << "\\use_converter_cache "
1657 << convert<string>(use_converter_cache) << '\n';
1662 case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
1663 if (ignore_system_lyxrc ||
1664 use_converter_needauth_forbidden != system_lyxrc.use_converter_needauth_forbidden) {
1665 os << "\\use_converter_needauth_forbidden "
1666 << convert<string>(use_converter_needauth_forbidden) << '\n';
1671 case RC_USE_CONVERTER_NEEDAUTH:
1672 if (ignore_system_lyxrc ||
1673 use_converter_needauth != system_lyxrc.use_converter_needauth) {
1674 os << "\\use_converter_needauth "
1675 << convert<string>(use_converter_needauth) << '\n';
1680 case RC_CONVERTER_CACHE_MAXAGE:
1681 if (ignore_system_lyxrc ||
1682 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1683 os << "\\converter_cache_maxage "
1684 << converter_cache_maxage << '\n';
1690 << "# SCREEN & FONTS SECTION ############################\n"
1694 if (ignore_system_lyxrc ||
1695 icon_set != system_lyxrc.icon_set) {
1696 os << "\\icon_set \"" << icon_set
1702 case RC_USE_SYSTEM_THEME_ICONS:
1703 if (ignore_system_lyxrc ||
1704 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1705 os << "\\use_system_theme_icons "
1706 << convert<string>(use_system_theme_icons)
1713 if (ignore_system_lyxrc ||
1714 dpi != system_lyxrc.dpi) {
1715 os << "\\screen_dpi " << dpi << '\n';
1720 case RC_SCREEN_ZOOM:
1721 if (ignore_system_lyxrc ||
1722 zoom != system_lyxrc.zoom) {
1723 os << "\\screen_zoom " << zoom << '\n';
1728 case RC_GEOMETRY_SESSION:
1729 if (ignore_system_lyxrc ||
1730 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1731 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1737 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1738 if (ignore_system_lyxrc ||
1739 cursor_follows_scrollbar
1740 != system_lyxrc.cursor_follows_scrollbar) {
1741 os << "\\cursor_follows_scrollbar "
1742 << convert<string>(cursor_follows_scrollbar) << '\n';
1747 case RC_CURSOR_WIDTH:
1748 if (ignore_system_lyxrc ||
1750 != system_lyxrc.cursor_width) {
1751 os << "\\cursor_width "
1752 << cursor_width << '\n';
1757 case RC_SCROLL_BELOW_DOCUMENT:
1758 if (ignore_system_lyxrc ||
1759 scroll_below_document
1760 != system_lyxrc.scroll_below_document) {
1761 os << "\\scroll_below_document "
1762 << convert<string>(scroll_below_document) << '\n';
1767 case RC_PARAGRAPH_MARKERS:
1768 if (ignore_system_lyxrc ||
1770 != system_lyxrc.paragraph_markers) {
1771 os << "\\paragraph_markers "
1772 << convert<string>(paragraph_markers) << '\n';
1777 case RC_MAC_DONTSWAP_CTRL_META:
1778 if (ignore_system_lyxrc ||
1779 mac_dontswap_ctrl_meta
1780 != system_lyxrc.mac_dontswap_ctrl_meta) {
1781 os << "\\mac_dontswap_ctrl_meta "
1782 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1787 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1788 if (ignore_system_lyxrc ||
1789 mac_like_cursor_movement
1790 != system_lyxrc.mac_like_cursor_movement) {
1791 os << "\\mac_like_cursor_movement "
1792 << convert<string>(mac_like_cursor_movement) << '\n';
1797 case RC_MACRO_EDIT_STYLE:
1798 if (ignore_system_lyxrc ||
1800 != system_lyxrc.macro_edit_style) {
1801 os << "\\macro_edit_style ";
1802 switch (macro_edit_style) {
1803 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1804 case MACRO_EDIT_INLINE: os << "1\n"; break;
1805 case MACRO_EDIT_LIST: os << "2\n"; break;
1811 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1812 if (ignore_system_lyxrc ||
1813 dialogs_iconify_with_main
1814 != system_lyxrc.dialogs_iconify_with_main) {
1815 os << "\\dialogs_iconify_with_main "
1816 << convert<string>(dialogs_iconify_with_main) << '\n';
1821 case RC_SCREEN_FONT_ROMAN:
1822 if (ignore_system_lyxrc ||
1823 roman_font_name != system_lyxrc.roman_font_name) {
1824 os << "\\screen_font_roman \"" << roman_font_name
1830 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1831 if (ignore_system_lyxrc ||
1832 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1833 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1839 case RC_SCREEN_FONT_SANS:
1840 if (ignore_system_lyxrc ||
1841 sans_font_name != system_lyxrc.sans_font_name) {
1842 os << "\\screen_font_sans \"" << sans_font_name
1848 case RC_SCREEN_FONT_SANS_FOUNDRY:
1849 if (ignore_system_lyxrc ||
1850 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1851 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1857 case RC_SCREEN_FONT_TYPEWRITER:
1858 if (ignore_system_lyxrc ||
1859 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1860 os << "\\screen_font_typewriter \""
1861 << typewriter_font_name << "\"\n";
1866 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1867 if (ignore_system_lyxrc ||
1868 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1869 os << "\\screen_font_typewriter_foundry \""
1870 << typewriter_font_foundry << "\"\n";
1875 case RC_SCREEN_FONT_SCALABLE:
1876 if (ignore_system_lyxrc ||
1877 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1878 os << "\\screen_font_scalable "
1879 << convert<string>(use_scalable_fonts)
1885 case RC_SCREEN_FONT_SIZES:
1886 if (ignore_system_lyxrc ||
1887 font_sizes[FONT_SIZE_TINY]
1888 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1889 font_sizes[FONT_SIZE_SCRIPT]
1890 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1891 font_sizes[FONT_SIZE_FOOTNOTE]
1892 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1893 font_sizes[FONT_SIZE_SMALL]
1894 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1895 font_sizes[FONT_SIZE_NORMAL]
1896 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1897 font_sizes[FONT_SIZE_LARGE]
1898 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1899 font_sizes[FONT_SIZE_LARGER]
1900 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1901 font_sizes[FONT_SIZE_LARGEST]
1902 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1903 font_sizes[FONT_SIZE_HUGE]
1904 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1905 font_sizes[FONT_SIZE_HUGER]
1906 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1907 streamsize old_prec = os.precision();
1908 os.setf(ios::fixed);
1910 os << "\\screen_font_sizes"
1911 << ' ' << font_sizes[FONT_SIZE_TINY]
1912 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1913 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1914 << ' ' << font_sizes[FONT_SIZE_SMALL]
1915 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1916 << ' ' << font_sizes[FONT_SIZE_LARGE]
1917 << ' ' << font_sizes[FONT_SIZE_LARGER]
1918 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1919 << ' ' << font_sizes[FONT_SIZE_HUGE]
1920 << ' ' << font_sizes[FONT_SIZE_HUGER]
1922 os.precision(old_prec);
1923 os.unsetf(ios::fixed);
1928 case RC_FULL_SCREEN_LIMIT:
1929 if (ignore_system_lyxrc ||
1930 full_screen_limit != system_lyxrc.full_screen_limit) {
1931 os << "\\fullscreen_limit "
1932 << convert<string>(full_screen_limit)
1938 case RC_FULL_SCREEN_TOOLBARS:
1939 if (ignore_system_lyxrc ||
1940 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1941 os << "\\fullscreen_toolbars "
1942 << convert<string>(full_screen_toolbars)
1948 case RC_FULL_SCREEN_SCROLLBAR:
1949 if (ignore_system_lyxrc ||
1950 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1951 os << "\\fullscreen_scrollbar "
1952 << convert<string>(full_screen_scrollbar)
1958 case RC_FULL_SCREEN_STATUSBAR:
1959 if (ignore_system_lyxrc ||
1960 full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
1961 os << "\\fullscreen_statusbar "
1962 << convert<string>(full_screen_statusbar)
1968 case RC_FULL_SCREEN_TABBAR:
1969 if (ignore_system_lyxrc ||
1970 full_screen_tabbar != system_lyxrc.full_screen_tabbar) {
1971 os << "\\fullscreen_tabbar "
1972 << convert<string>(full_screen_tabbar)
1978 case RC_FULL_SCREEN_MENUBAR:
1979 if (ignore_system_lyxrc ||
1980 full_screen_menubar != system_lyxrc.full_screen_menubar) {
1981 os << "\\fullscreen_menubar "
1982 << convert<string>(full_screen_menubar)
1988 case RC_FULL_SCREEN_WIDTH:
1989 if (ignore_system_lyxrc ||
1990 full_screen_width != system_lyxrc.full_screen_width) {
1991 os << "\\fullscreen_width "
1992 << convert<string>(full_screen_width)
1998 case RC_OPEN_BUFFERS_IN_TABS:
1999 if (ignore_system_lyxrc ||
2000 open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) {
2001 os << "\\open_buffers_in_tabs "
2002 << convert<string>(open_buffers_in_tabs)
2008 case RC_SINGLE_CLOSE_TAB_BUTTON:
2009 if (ignore_system_lyxrc ||
2010 single_close_tab_button != system_lyxrc.single_close_tab_button) {
2011 os << "\\single_close_tab_button "
2012 << convert<string>(single_close_tab_button)
2018 case RC_SINGLE_INSTANCE:
2019 if (ignore_system_lyxrc ||
2020 single_instance != system_lyxrc.single_instance) {
2021 os << "\\single_instance "
2022 << convert<string>(single_instance)
2028 case RC_FORWARD_SEARCH_DVI:
2029 if (ignore_system_lyxrc ||
2030 forward_search_dvi != system_lyxrc.forward_search_dvi) {
2031 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
2036 case RC_FORWARD_SEARCH_PDF:
2037 if (ignore_system_lyxrc ||
2038 forward_search_pdf != system_lyxrc.forward_search_pdf) {
2039 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
2045 << "# COLOR SECTION ###################################\n"
2050 for (int i = 0; i < Color_ignore; ++i) {
2051 ColorCode lc = static_cast<ColorCode>(i);
2052 string const col = lcolor.getX11Name(lc);
2053 if (ignore_system_lyxrc
2054 || col != system_lcolor.getX11Name(lc)) {
2055 os << "\\set_color \""
2056 << lcolor.getLyXName(lc) << "\" \""
2064 << "# PRINTER SECTION ###################################\n"
2068 case RC_PRINTLANDSCAPEFLAG:
2069 if (ignore_system_lyxrc ||
2070 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2071 os << "\\print_landscape_flag \"" << print_landscape_flag
2077 case RC_PRINTPAPERFLAG:
2078 if (ignore_system_lyxrc ||
2079 print_paper_flag != system_lyxrc.print_paper_flag) {
2080 os << "\\print_paper_flag \"" << print_paper_flag
2086 case RC_PRINTPAPERDIMENSIONFLAG:
2087 if (ignore_system_lyxrc ||
2088 print_paper_dimension_flag
2089 != system_lyxrc.print_paper_dimension_flag) {
2090 os << "\\print_paper_dimension_flag \""
2091 << print_paper_dimension_flag << "\"\n";
2097 << "# TEX SECTION #######################################\n"
2101 case RC_TEXINPUTS_PREFIX:
2102 if (ignore_system_lyxrc ||
2103 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2104 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2109 case RC_FONT_ENCODING:
2110 if (ignore_system_lyxrc ||
2111 fontenc != system_lyxrc.fontenc) {
2112 os << "\\font_encoding \"" << fontenc << "\"\n";
2118 << "# FILE SECTION ######################################\n"
2122 case RC_DOCUMENTPATH:
2123 if (ignore_system_lyxrc ||
2124 document_path != system_lyxrc.document_path) {
2125 string const path = os::external_path(document_path);
2126 os << "\\document_path \"" << path << "\"\n";
2131 case RC_USELASTFILEPOS:
2132 if (ignore_system_lyxrc ||
2133 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2134 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2140 case RC_LOADSESSION:
2141 if (ignore_system_lyxrc ||
2142 load_session != system_lyxrc.load_session) {
2143 os << "\\load_session " << convert<string>(load_session)
2149 case RC_MOUSE_WHEEL_SPEED:
2150 if (ignore_system_lyxrc ||
2151 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2152 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2157 case RC_MOUSE_MIDDLEBUTTON_PASTE:
2158 if (ignore_system_lyxrc ||
2159 mouse_middlebutton_paste != system_lyxrc.mouse_middlebutton_paste) {
2160 os << "\\mouse_middlebutton_paste "
2161 << convert<string>(mouse_middlebutton_paste) << '\n';
2166 case RC_COMPLETION_INLINE_DELAY:
2167 if (ignore_system_lyxrc ||
2168 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2169 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2174 case RC_COMPLETION_INLINE_MATH:
2175 if (ignore_system_lyxrc ||
2176 completion_inline_math != system_lyxrc.completion_inline_math) {
2177 os << "\\completion_inline_math "
2178 << convert<string>(completion_inline_math) << '\n';
2183 case RC_COMPLETION_INLINE_TEXT:
2184 if (ignore_system_lyxrc ||
2185 completion_inline_text != system_lyxrc.completion_inline_text) {
2186 os << "\\completion_inline_text "
2187 << convert<string>(completion_inline_text) << '\n';
2192 case RC_COMPLETION_INLINE_DOTS:
2193 if (ignore_system_lyxrc ||
2194 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2195 os << "\\completion_inline_dots "
2196 << convert<string>(completion_inline_dots) << '\n';
2201 case RC_AUTOCORRECTION_MATH:
2202 if (ignore_system_lyxrc ||
2203 autocorrection_math != system_lyxrc.autocorrection_math) {
2204 os << "\\autocorrection_math "
2205 << convert<string>(autocorrection_math) << '\n';
2210 case RC_COMPLETION_POPUP_DELAY:
2211 if (ignore_system_lyxrc ||
2212 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2213 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2218 case RC_COMPLETION_POPUP_MATH:
2219 if (ignore_system_lyxrc ||
2220 completion_popup_math != system_lyxrc.completion_popup_math) {
2221 os << "\\completion_popup_math "
2222 << convert<string>(completion_popup_math) << '\n';
2227 case RC_COMPLETION_POPUP_TEXT:
2228 if (ignore_system_lyxrc ||
2229 completion_popup_text != system_lyxrc.completion_popup_text) {
2230 os << "\\completion_popup_text "
2231 << convert<string>(completion_popup_text) << '\n';
2236 case RC_COMPLETION_CURSOR_TEXT:
2237 if (ignore_system_lyxrc ||
2238 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2239 os << "\\completion_cursor_text "
2240 << convert<string>(completion_cursor_text) << '\n';
2245 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2246 if (ignore_system_lyxrc ||
2247 completion_popup_after_complete
2248 != system_lyxrc.completion_popup_after_complete) {
2249 os << "\\completion_popup_after_complete "
2250 << convert<string>(completion_popup_after_complete) << '\n';
2255 case RC_COMPLETION_MINLENGTH:
2256 if (ignore_system_lyxrc ||
2257 completion_minlength != system_lyxrc.completion_minlength) {
2258 os << "\\completion_minlength " << convert<string>(completion_minlength)
2264 case RC_NUMLASTFILES:
2265 if (ignore_system_lyxrc ||
2266 num_lastfiles != system_lyxrc.num_lastfiles) {
2267 os << "\\num_lastfiles " << num_lastfiles << '\n';
2272 case RC_CHECKLASTFILES:
2273 if (ignore_system_lyxrc ||
2274 check_lastfiles != system_lyxrc.check_lastfiles) {
2275 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";
2290 case RC_TEMPLATEPATH:
2291 if (ignore_system_lyxrc ||
2292 template_path != system_lyxrc.template_path) {
2293 string const path = os::external_path(template_path);
2294 os << "\\template_path \"" << path << "\"\n";
2299 case RC_TEMPDIRPATH:
2300 if (ignore_system_lyxrc ||
2301 tempdir_path != system_lyxrc.tempdir_path) {
2302 string const path = os::external_path(tempdir_path);
2303 os << "\\tempdir_path \"" << path << "\"\n";
2308 case RC_THESAURUSDIRPATH:
2309 if (ignore_system_lyxrc ||
2310 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2311 string const path = os::external_path(thesaurusdir_path);
2312 os << "\\thesaurusdir_path \"" << path << "\"\n";
2317 case RC_HUNSPELLDIR_PATH:
2318 if (ignore_system_lyxrc ||
2319 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2320 string const path = os::external_path(hunspelldir_path);
2321 os << "\\hunspelldir_path \"" << path << "\"\n";
2326 case RC_PLAINTEXT_LINELEN:
2327 if (ignore_system_lyxrc ||
2328 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2329 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2334 case RC_MAKE_BACKUP:
2335 if (ignore_system_lyxrc ||
2336 make_backup != system_lyxrc.make_backup) {
2337 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';
2350 case RC_SAVE_ORIGIN:
2351 if (ignore_system_lyxrc ||
2352 save_origin != system_lyxrc.save_origin) {
2353 os << "\\save_origin " << convert<string>(save_origin) << '\n';
2358 case RC_BACKUPDIR_PATH:
2359 if (ignore_system_lyxrc ||
2360 backupdir_path != system_lyxrc.backupdir_path) {
2361 string const path = os::external_path(backupdir_path);
2362 os << "\\backupdir_path \"" << path << "\"\n";
2368 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2372 << "# SPELLCHECKER SECTION ##############################\n"
2376 case RC_ACCEPT_COMPOUND:
2377 if (ignore_system_lyxrc ||
2378 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2379 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2386 if (ignore_system_lyxrc ||
2387 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2388 os << "\\alternate_language \"" << spellchecker_alt_lang
2395 if (ignore_system_lyxrc ||
2396 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2397 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2402 case RC_USE_SYSTEM_COLORS:
2403 if (ignore_system_lyxrc ||
2404 use_system_colors != system_lyxrc.use_system_colors) {
2405 os << "\\use_system_colors "
2406 << convert<string>(use_system_colors)
2412 case RC_USE_TOOLTIP:
2413 if (ignore_system_lyxrc ||
2414 use_tooltip != system_lyxrc.use_tooltip) {
2415 os << "\\use_tooltip "
2416 << convert<string>(use_tooltip)
2422 case RC_USE_PIXMAP_CACHE:
2423 if (ignore_system_lyxrc ||
2424 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2425 os << "\\use_pixmap_cache "
2426 << convert<string>(use_pixmap_cache)
2434 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2438 case RC_DEFAULT_DECIMAL_POINT:
2439 if (ignore_system_lyxrc ||
2440 default_decimal_point != system_lyxrc.default_decimal_point) {
2441 os << "\\default_decimal_point " << default_decimal_point << '\n';
2446 case RC_DEFAULT_LENGTH_UNIT:
2447 if (ignore_system_lyxrc ||
2448 default_length_unit != system_lyxrc.default_length_unit) {
2449 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2454 case RC_SPELLCHECKER:
2455 if (ignore_system_lyxrc ||
2456 spellchecker != system_lyxrc.spellchecker) {
2457 os << "\\spellchecker " << spellchecker << '\n';
2462 case RC_SPELLCHECK_CONTINUOUSLY:
2463 if (ignore_system_lyxrc ||
2464 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2465 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2471 case RC_SPELLCHECK_NOTES:
2472 if (ignore_system_lyxrc ||
2473 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2474 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2480 case RC_VISUAL_CURSOR:
2481 if (ignore_system_lyxrc ||
2482 visual_cursor != system_lyxrc.visual_cursor) {
2483 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2488 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2489 if (ignore_system_lyxrc ||
2490 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2491 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2492 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2497 case RC_LANGUAGE_CUSTOM_PACKAGE:
2498 if (ignore_system_lyxrc ||
2499 language_custom_package != system_lyxrc.language_custom_package) {
2500 os << "\\language_custom_package \"" << language_custom_package
2506 case RC_LANGUAGE_GLOBAL_OPTIONS:
2507 if (ignore_system_lyxrc ||
2508 language_global_options
2509 != system_lyxrc.language_global_options) {
2510 os << "\\language_global_options \""
2511 << convert<string>(language_global_options)
2517 case RC_LANGUAGE_PACKAGE_SELECTION:
2518 if (ignore_system_lyxrc ||
2519 language_package_selection != system_lyxrc.language_package_selection) {
2520 os << "\\language_package_selection ";
2521 switch (language_package_selection) {
2539 case RC_LANGUAGE_COMMAND_BEGIN:
2540 if (ignore_system_lyxrc ||
2541 language_command_begin
2542 != system_lyxrc.language_command_begin) {
2543 os << "\\language_command_begin \""
2544 << language_command_begin
2550 case RC_LANGUAGE_COMMAND_END:
2551 if (ignore_system_lyxrc ||
2552 language_command_end
2553 != system_lyxrc.language_command_end) {
2554 os << "\\language_command_end \"" << language_command_end
2560 case RC_LANGUAGE_COMMAND_LOCAL:
2561 if (ignore_system_lyxrc ||
2562 language_command_local
2563 != system_lyxrc.language_command_local) {
2564 os << "\\language_command_local \""
2565 << language_command_local
2571 case RC_LANGUAGE_AUTO_BEGIN:
2572 if (ignore_system_lyxrc ||
2573 language_auto_begin != system_lyxrc.language_auto_begin) {
2574 os << "\\language_auto_begin "
2575 << convert<string>(language_auto_begin) << '\n';
2580 case RC_LANGUAGE_AUTO_END:
2581 if (ignore_system_lyxrc ||
2582 language_auto_end != system_lyxrc.language_auto_end) {
2583 os << "\\language_auto_end "
2584 << convert<string>(language_auto_end) << '\n';
2589 case RC_MARK_FOREIGN_LANGUAGE:
2590 if (ignore_system_lyxrc ||
2591 mark_foreign_language
2592 != system_lyxrc.mark_foreign_language) {
2593 os << "\\mark_foreign_language " <<
2594 convert<string>(mark_foreign_language) << '\n';
2600 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2604 case RC_AUTO_NUMBER:
2605 if (ignore_system_lyxrc ||
2606 auto_number != system_lyxrc.auto_number) {
2607 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2612 case RC_GUI_LANGUAGE:
2613 if (ignore_system_lyxrc ||
2614 gui_language != system_lyxrc.gui_language) {
2615 os << "\\gui_language " << gui_language << '\n';
2620 case RC_EXPORT_OVERWRITE:
2621 if (ignore_system_lyxrc ||
2622 export_overwrite != system_lyxrc.export_overwrite) {
2624 switch (export_overwrite) {
2635 os << "\\export_overwrite " << status << '\n';
2640 case RC_SCROLL_WHEEL_ZOOM:
2641 if (ignore_system_lyxrc ||
2642 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2644 switch (scroll_wheel_zoom) {
2645 case SCROLL_WHEEL_ZOOM_OFF:
2648 case SCROLL_WHEEL_ZOOM_CTRL:
2651 case SCROLL_WHEEL_ZOOM_SHIFT:
2654 case SCROLL_WHEEL_ZOOM_ALT:
2658 os << "\\scroll_wheel_zoom " << status << '\n';
2664 << "# FORMATS SECTION ##########################\n"
2669 // New/modified formats
2670 for (Formats::const_iterator cit = theFormats().begin();
2671 cit != theFormats().end(); ++cit) {
2672 Format const * format =
2673 theSystemFormats().getFormat(cit->name());
2675 format->extensions() != cit->extensions() ||
2676 format->prettyname() != cit->prettyname() ||
2677 format->shortcut() != cit->shortcut() ||
2678 format->viewer() != cit->viewer() ||
2679 format->editor() != cit->editor() ||
2680 format->documentFormat() != cit->documentFormat() ||
2681 format->vectorFormat() != cit->vectorFormat() ||
2682 format->inExportMenu() != cit->inExportMenu() ||
2683 format->mime() != cit->mime()) {
2684 os << "\\format \"" << cit->name() << "\" \""
2685 << cit->extensions() << "\" \""
2686 << to_utf8(cit->prettyname()) << "\" \""
2687 << cit->shortcut() << "\" \""
2688 << escapeCommand(cit->viewer()) << "\" \""
2689 << escapeCommand(cit->editor()) << "\" \"";
2690 vector<string> flags;
2691 if (cit->documentFormat())
2692 flags.push_back("document");
2693 if (cit->vectorFormat())
2694 flags.push_back("vector");
2695 if (cit->zippedNative())
2696 flags.push_back("zipped=native");
2697 if (cit->inExportMenu())
2698 flags.push_back("menu=export");
2700 os << getStringFromVector(flags);
2701 os << "\" \"" << cit->mime() << "\"\n";
2705 // Look for deleted formats
2706 for (Formats::const_iterator cit = theSystemFormats().begin();
2707 cit != theSystemFormats().end(); ++cit)
2708 if (!theFormats().getFormat(cit->name()))
2709 os << "\\format \"" << cit->name()
2710 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2714 case RC_VIEWER_ALTERNATIVES: {
2715 Alternatives::const_iterator it = viewer_alternatives.begin();
2716 Alternatives::const_iterator const en = viewer_alternatives.end();
2717 Alternatives::const_iterator const sysend =
2718 system_lyxrc.viewer_alternatives.end();
2719 for (; it != en; ++it) {
2720 string const & fmt = it->first;
2721 CommandSet const & cmd = it->second;
2722 CommandSet::const_iterator sit = cmd.begin();
2723 CommandSet::const_iterator const sen = cmd.end();
2724 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2725 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2726 system_lyxrc.viewer_alternatives.find(fmt);
2727 for (; sit != sen; ++sit) {
2728 string const & cmd = *sit;
2729 if (ignore_system_lyxrc
2730 || sysfmt == sysend // format not found
2731 || sysfmt->second.count(cmd) == 0 // this command not found
2733 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2740 case RC_EDITOR_ALTERNATIVES: {
2741 Alternatives::const_iterator it = editor_alternatives.begin();
2742 Alternatives::const_iterator const en = editor_alternatives.end();
2743 Alternatives::const_iterator const sysend =
2744 system_lyxrc.editor_alternatives.end();
2745 for (; it != en; ++it) {
2746 string const & fmt = it->first;
2747 CommandSet const & cmd = it->second;
2748 CommandSet::const_iterator sit = cmd.begin();
2749 CommandSet::const_iterator const sen = cmd.end();
2750 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2751 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2752 system_lyxrc.editor_alternatives.find(fmt);
2753 for (; sit != sen; ++sit) {
2754 string const & cmd = *sit;
2755 if (ignore_system_lyxrc
2756 || sysfmt == sysend // format not found
2757 || sysfmt->second.count(cmd) == 0 // this command not found
2759 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2766 case RC_DEFAULT_OTF_VIEW_FORMAT:
2767 if ((ignore_system_lyxrc ||
2768 default_otf_view_format != system_lyxrc.default_otf_view_format)
2769 && !default_otf_view_format.empty()) {
2770 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2775 case RC_DEFAULT_VIEW_FORMAT:
2776 if (ignore_system_lyxrc ||
2777 default_view_format != system_lyxrc.default_view_format) {
2778 os << "\\default_view_format " << default_view_format << '\n';
2789 << "# CONVERTERS SECTION ##########################\n"
2794 // Look for new converters
2795 for (Converters::const_iterator cit = theConverters().begin();
2796 cit != theConverters().end(); ++cit) {
2797 Converter const * converter =
2798 theSystemConverters().getConverter(cit->from(),
2801 converter->command() != cit->command() ||
2802 converter->flags() != cit->flags())
2803 os << "\\converter \"" << cit->from() << "\" \""
2804 << cit->to() << "\" \""
2805 << escapeCommand(cit->command()) << "\" \""
2806 << cit->flags() << "\"\n";
2809 // New/modifed converters
2810 for (Converters::const_iterator cit = theSystemConverters().begin();
2811 cit != theSystemConverters().end(); ++cit)
2812 if (!theConverters().getConverter(cit->from(), cit->to()))
2813 os << "\\converter \"" << cit->from()
2814 << "\" \"" << cit->to() << "\" \"\" \"\"\n";
2821 << "# COPIERS SECTION ##########################\n"
2824 // Look for new movers
2825 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2826 Movers::const_iterator const sysend = theSystemMovers().end();
2827 Movers::const_iterator it = theMovers().begin();
2828 Movers::const_iterator end = theMovers().end();
2830 for (; it != end; ++it) {
2831 Movers::const_iterator const sysit =
2832 find_if(sysbegin, sysend, SameMover(*it));
2833 if (sysit == sysend) {
2834 string const & fmt = it->first;
2835 string const & command =
2836 it->second.command();
2838 os << "\\copier " << fmt
2839 << " \"" << escapeCommand(command) << "\"\n";
2845 // We don't actually delete SpecialisedMover(s) from the
2846 // map, just clear their 'command', so there's no need
2847 // to test for anything else.
2854 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2856 // Why the switch you might ask. It is a trick to ensure that all
2857 // the elements in the LyXRCTags enum is handled. As you can see
2858 // there are no breaks at all. So it is just a huge fall-through.
2859 // The nice thing is that we will get a warning from the compiler
2860 // if we forget an element.
2861 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2863 case LyXRC::RC_LAST:
2864 case LyXRC::RC_ACCEPT_COMPOUND:
2865 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2866 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2868 case LyXRC::RC_ALT_LANG:
2869 case LyXRC::RC_PLAINTEXT_LINELEN:
2870 case LyXRC::RC_AUTOCORRECTION_MATH:
2871 case LyXRC::RC_AUTOREGIONDELETE:
2872 case LyXRC::RC_AUTORESET_OPTIONS:
2873 case LyXRC::RC_AUTOSAVE:
2874 case LyXRC::RC_AUTO_NUMBER:
2875 case LyXRC::RC_BACKUPDIR_PATH:
2876 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2877 case LyXRC::RC_BIBTEX_COMMAND:
2878 case LyXRC::RC_BINDFILE:
2879 case LyXRC::RC_CHECKLASTFILES:
2880 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2881 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2882 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2883 case LyXRC::RC_COMPLETION_INLINE_MATH:
2884 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2885 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2886 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2887 case LyXRC::RC_COMPLETION_POPUP_MATH:
2888 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2889 case LyXRC::RC_COMPLETION_MINLENGTH:
2890 case LyXRC::RC_USELASTFILEPOS:
2891 case LyXRC::RC_LOADSESSION:
2892 case LyXRC::RC_CHKTEX_COMMAND:
2893 case LyXRC::RC_CONVERTER:
2894 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2895 case LyXRC::RC_COPIER:
2896 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2897 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2898 case LyXRC::RC_DATE_INSERT_FORMAT:
2899 case LyXRC::RC_GUI_LANGUAGE:
2900 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2901 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2902 case LyXRC::RC_DEFFILE:
2903 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2904 case LyXRC::RC_DISPLAY_GRAPHICS:
2905 case LyXRC::RC_DOCUMENTPATH:
2906 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2907 FileName path(lyxrc_new.document_path);
2908 if (path.exists() && path.isDirectory())
2909 package().document_dir() = FileName(lyxrc.document_path);
2912 case LyXRC::RC_EDITOR_ALTERNATIVES:
2913 case LyXRC::RC_ESC_CHARS:
2914 case LyXRC::RC_EXAMPLEPATH:
2915 case LyXRC::RC_FONT_ENCODING:
2916 case LyXRC::RC_FILEFORMAT:
2917 case LyXRC::RC_GROUP_LAYOUTS:
2918 case LyXRC::RC_HUNSPELLDIR_PATH:
2919 case LyXRC::RC_ICON_SET:
2920 case LyXRC::RC_INDEX_ALTERNATIVES:
2921 case LyXRC::RC_INDEX_COMMAND:
2922 case LyXRC::RC_JBIBTEX_COMMAND:
2923 case LyXRC::RC_JBIBTEX_ALTERNATIVES:
2924 case LyXRC::RC_JINDEX_COMMAND:
2925 case LyXRC::RC_NOMENCL_COMMAND:
2926 case LyXRC::RC_PYGMENTIZE_COMMAND:
2927 case LyXRC::RC_INPUT:
2928 case LyXRC::RC_KBMAP:
2929 case LyXRC::RC_KBMAP_PRIMARY:
2930 case LyXRC::RC_KBMAP_SECONDARY:
2931 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2932 case LyXRC::RC_LANGUAGE_AUTO_END:
2933 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2934 case LyXRC::RC_LANGUAGE_COMMAND_END:
2935 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2936 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2937 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2938 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2939 case LyXRC::RC_LYXRCFORMAT:
2940 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2941 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
2942 case LyXRC::RC_MACRO_EDIT_STYLE:
2943 case LyXRC::RC_MAKE_BACKUP:
2944 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2945 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2946 case LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE:
2947 case LyXRC::RC_NUMLASTFILES:
2948 case LyXRC::RC_PARAGRAPH_MARKERS:
2949 case LyXRC::RC_PATH_PREFIX:
2950 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2951 prependEnvPath("PATH", lyxrc_new.path_prefix);
2952 // Resets python path
2953 support::os::python(true);
2956 case LyXRC::RC_PREVIEW:
2957 case LyXRC::RC_PREVIEW_HASHED_LABELS:
2958 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
2959 case LyXRC::RC_PRINTLANDSCAPEFLAG:
2960 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
2961 case LyXRC::RC_PRINTPAPERFLAG:
2962 case LyXRC::RC_SAVE_COMPRESSED:
2963 case LyXRC::RC_SAVE_ORIGIN:
2964 case LyXRC::RC_SCREEN_DPI:
2965 case LyXRC::RC_SCREEN_FONT_ROMAN:
2966 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
2967 case LyXRC::RC_SCREEN_FONT_SANS:
2968 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
2969 case LyXRC::RC_SCREEN_FONT_SCALABLE:
2970 case LyXRC::RC_SCREEN_FONT_SIZES:
2971 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
2972 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
2973 case LyXRC::RC_GEOMETRY_SESSION:
2974 case LyXRC::RC_SCREEN_ZOOM:
2975 case LyXRC::RC_SERVERPIPE:
2976 case LyXRC::RC_SET_COLOR:
2977 case LyXRC::RC_SHOW_BANNER:
2978 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
2979 case LyXRC::RC_SPELLCHECKER:
2980 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
2983 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
2984 case LyXRC::RC_SPELLCHECK_NOTES:
2985 case LyXRC::RC_SPLITINDEX_COMMAND:
2986 case LyXRC::RC_TEMPDIRPATH:
2987 case LyXRC::RC_TEMPLATEPATH:
2988 case LyXRC::RC_TEX_ALLOWS_SPACES:
2989 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
2990 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
2991 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
2994 case LyXRC::RC_TEXINPUTS_PREFIX:
2995 case LyXRC::RC_THESAURUSDIRPATH:
2996 case LyXRC::RC_UIFILE:
2997 case LyXRC::RC_USER_EMAIL:
2998 case LyXRC::RC_USER_NAME:
2999 case LyXRC::RC_USE_CONVERTER_CACHE:
3000 case LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
3001 case LyXRC::RC_USE_CONVERTER_NEEDAUTH:
3002 case LyXRC::RC_USE_SYSTEM_COLORS:
3003 case LyXRC::RC_USE_TOOLTIP:
3004 case LyXRC::RC_USE_PIXMAP_CACHE:
3005 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
3006 case LyXRC::RC_VIEWDVI_PAPEROPTION:
3007 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
3008 case LyXRC::RC_SINGLE_INSTANCE:
3009 case LyXRC::RC_SORT_LAYOUTS:
3010 case LyXRC::RC_FULL_SCREEN_LIMIT:
3011 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
3012 case LyXRC::RC_FULL_SCREEN_MENUBAR:
3013 case LyXRC::RC_FULL_SCREEN_STATUSBAR:
3014 case LyXRC::RC_FULL_SCREEN_TABBAR:
3015 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
3016 case LyXRC::RC_FULL_SCREEN_WIDTH:
3017 case LyXRC::RC_VISUAL_CURSOR:
3018 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3019 case LyXRC::RC_VIEWER:
3020 case LyXRC::RC_VIEWER_ALTERNATIVES:
3021 case LyXRC::RC_FORWARD_SEARCH_DVI:
3022 case LyXRC::RC_FORWARD_SEARCH_PDF:
3023 case LyXRC::RC_EXPORT_OVERWRITE:
3024 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
3025 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
3026 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
3027 case LyXRC::RC_CURSOR_WIDTH:
3034 string const LyXRC::getDescription(LyXRCTags tag)
3039 case RC_ACCEPT_COMPOUND:
3040 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
3044 str = _("Specify an alternate language. The default is to use the language of the document.");
3047 case RC_PLAINTEXT_LINELEN:
3048 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.");
3051 case RC_AUTOREGIONDELETE:
3052 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
3055 case RC_AUTORESET_OPTIONS:
3056 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
3060 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
3063 case RC_AUTO_NUMBER:
3066 case RC_BACKUPDIR_PATH:
3067 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.");
3070 case RC_BIBTEX_COMMAND:
3071 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
3074 case RC_JBIBTEX_COMMAND:
3075 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
3079 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
3082 case RC_CHECKLASTFILES:
3083 str = _("Select to check whether the lastfiles still exist.");
3086 case RC_CHKTEX_COMMAND:
3087 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
3093 case RC_CONVERTER_NEEDAUTH_FORBIDDEN:
3094 str = _("Forbid use of external converters with 'needauth' option to prevent undesired effects.");
3097 case RC_CONVERTER_NEEDAUTH:
3098 str = _("Ask user before calling external converters with 'needauth' option to prevent undesired effects.");
3104 case RC_CURSOR_FOLLOWS_SCROLLBAR:
3105 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.");
3108 case RC_CURSOR_WIDTH:
3109 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
3112 case RC_SCROLL_BELOW_DOCUMENT:
3113 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");
3116 case RC_MAC_DONTSWAP_CTRL_META:
3117 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3120 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3121 str = _("Use the Mac OS X conventions for cursor movement");
3124 case RC_SHOW_MACRO_LABEL:
3125 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3128 case RC_DATE_INSERT_FORMAT:
3129 //xgettext:no-c-format
3130 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3134 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3137 case RC_DEFAULT_OTF_VIEW_FORMAT:
3138 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3141 case RC_DEFAULT_VIEW_FORMAT:
3142 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3145 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3146 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3149 case RC_DISPLAY_GRAPHICS:
3150 str = _("Select how LyX will display any graphics.");
3153 case RC_DOCUMENTPATH:
3154 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3158 str = _("Specify additional chars that can be part of a word.");
3161 case RC_EXAMPLEPATH:
3162 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3165 case RC_FONT_ENCODING:
3166 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3172 case RC_INDEX_COMMAND:
3173 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\".");
3176 case RC_JINDEX_COMMAND:
3177 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3180 case RC_NOMENCL_COMMAND:
3181 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3184 case RC_PYGMENTIZE_COMMAND:
3185 str = _("The command to run the python pygments syntax highlighter.");
3192 case RC_KBMAP_PRIMARY:
3193 case RC_KBMAP_SECONDARY:
3194 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.");
3197 case RC_LANGUAGE_AUTO_BEGIN:
3198 str = _("Select if a language switching command is needed at the beginning of the document.");
3201 case RC_LANGUAGE_AUTO_END:
3202 str = _("Select if a language switching command is needed at the end of the document.");
3205 case RC_LANGUAGE_COMMAND_BEGIN:
3206 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.");
3209 case RC_LANGUAGE_COMMAND_END:
3210 str = _("The LaTeX command for changing back to the language of the document.");
3213 case RC_LANGUAGE_COMMAND_LOCAL:
3214 str = _("The LaTeX command for local changing of the language.");
3217 case RC_LANGUAGE_GLOBAL_OPTIONS:
3218 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3221 case RC_LANGUAGE_CUSTOM_PACKAGE:
3222 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3225 case RC_LANGUAGE_PACKAGE_SELECTION:
3226 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3229 case RC_USELASTFILEPOS:
3230 str = _("De-select if you do not want LyX to scroll to saved position.");
3233 case RC_LOADSESSION:
3234 str = _("De-select to prevent loading files opened from the last LyX session.");
3237 case RC_MAKE_BACKUP:
3238 str = _("De-select if you don't want LyX to create backup files.");
3241 case RC_MARK_FOREIGN_LANGUAGE:
3242 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3245 case RC_MOUSE_WHEEL_SPEED:
3246 str = _("The scrolling speed of the mouse wheel.");
3249 case RC_COMPLETION_POPUP_DELAY:
3250 str = _("The completion popup delay.");
3253 case RC_COMPLETION_POPUP_MATH:
3254 str = _("Select to display the completion popup in math mode.");
3257 case RC_COMPLETION_POPUP_TEXT:
3258 str = _("Select to display the completion popup in text mode.");
3261 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3262 str = _("Show the completion popup without delay after non-unique completion attempt.");
3265 case RC_COMPLETION_POPUP_TEXT:
3266 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3269 case RC_COMPLETION_POPUP_DELAY:
3270 str = _("The inline completion delay.");
3273 case RC_COMPLETION_INLINE_MATH:
3274 str = _("Select to display the inline completion in math mode.");
3277 case RC_COMPLETION_INLINE_TEXT:
3278 str = _("Select to display the inline completion in text mode.");
3281 case RC_COMPLETION_INLINE_DOTS:
3282 str = _("Use \"...\" to shorten long completions.");
3285 case RC_AUTOCORRECTION_MATH:
3286 str = _("Allow TeXMacs shorthand, like => converting to \\Rightarrow.");
3289 case RC_NUMLASTFILES:
3290 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3294 case RC_PATH_PREFIX:
3295 str = _("Specify those directories which should be "
3296 "prepended to the PATH environment variable.\n"
3297 "Use the OS native format.");
3301 str = _("Shows a typeset preview of things such as math");
3304 case RC_PREVIEW_HASHED_LABELS:
3305 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3308 case RC_PREVIEW_SCALE_FACTOR:
3309 str = _("Scale the preview size to suit.");
3312 case RC_PRINTLANDSCAPEFLAG:
3313 str = _("The option to print out in landscape.");
3316 case RC_PRINTPAPERDIMENSIONFLAG:
3317 str = _("Option to specify the dimensions of the print paper.");
3320 case RC_PRINTPAPERFLAG:
3321 str = _("The option to specify paper type.");
3324 case RC_VISUAL_CURSOR:
3325 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3328 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3329 str = _("Specify whether, closing the last view of an open document, LyX should close the document (yes), hide it (no), or ask the user (ask).");
3333 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3336 case RC_SCREEN_FONT_ROMAN:
3337 case RC_SCREEN_FONT_SANS:
3338 case RC_SCREEN_FONT_TYPEWRITER:
3339 str = _("The screen fonts used to display the text while editing.");
3342 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3343 case RC_SCREEN_FONT_SANS_FOUNDRY:
3344 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3347 case RC_SCREEN_FONT_SCALABLE:
3348 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.");
3351 case RC_SCREEN_FONT_SIZES:
3352 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3355 case RC_SCREEN_ZOOM:
3356 //xgettext:no-c-format
3357 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3360 case RC_GEOMETRY_SESSION:
3361 str = _("Allow session manager to save and restore windows geometry.");
3365 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3371 case RC_SHOW_BANNER:
3372 str = _("De-select if you don't want the startup banner.");
3375 case RC_TEMPDIRPATH:
3376 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3379 case RC_THESAURUSDIRPATH:
3380 str = _("This is the place where the files of the thesaurus library reside.");
3383 case RC_TEMPLATEPATH:
3384 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3387 case RC_TEX_ALLOWS_SPACES:
3390 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3393 case RC_TEXINPUTS_PREFIX:
3394 str = _("Specify those directories which should be "
3395 "prepended to the TEXINPUTS environment variable.\n"
3396 "A '.' represents the current document directory. "
3397 "Use the OS native format.");
3401 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3410 case RC_USE_USE_SYSTEM_COLORS:
3411 str = _("Enable use the system colors for some things like main window background and selection.");
3414 case RC_USE_TOOLTIP:
3415 str = _("Enable the automatic appearance of tool tips in the work area.");
3418 case RC_USE_PIXMAP_CACHE:
3419 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3422 case RC_VIEWDVI_PAPEROPTION:
3423 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3438 // The global instance
3441 // The global copy of the system lyxrc entries (everything except preferences)