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 = 21; // spitz: jbibtex_alternatives
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 { "\\save_compressed", LyXRC::RC_SAVE_COMPRESSED },
162 { "\\save_origin", LyXRC::RC_SAVE_ORIGIN },
163 { "\\screen_dpi", LyXRC::RC_SCREEN_DPI },
164 { "\\screen_font_roman", LyXRC::RC_SCREEN_FONT_ROMAN },
165 { "\\screen_font_roman_foundry", LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY },
166 { "\\screen_font_sans", LyXRC::RC_SCREEN_FONT_SANS },
167 { "\\screen_font_sans_foundry", LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY },
168 { "\\screen_font_scalable", LyXRC::RC_SCREEN_FONT_SCALABLE },
169 { "\\screen_font_sizes", LyXRC::RC_SCREEN_FONT_SIZES },
170 { "\\screen_font_typewriter", LyXRC::RC_SCREEN_FONT_TYPEWRITER },
171 { "\\screen_font_typewriter_foundry", LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY },
172 { "\\screen_zoom", LyXRC::RC_SCREEN_ZOOM },
173 { "\\scroll_below_document", LyXRC::RC_SCROLL_BELOW_DOCUMENT },
174 { "\\scroll_wheel_zoom", LyXRC::RC_SCROLL_WHEEL_ZOOM },
175 { "\\serverpipe", LyXRC::RC_SERVERPIPE },
176 { "\\set_color", LyXRC::RC_SET_COLOR },
177 { "\\show_banner", LyXRC::RC_SHOW_BANNER },
178 { "\\single_close_tab_button", LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON },
179 { "\\single_instance", LyXRC::RC_SINGLE_INSTANCE },
180 { "\\sort_layouts", LyXRC::RC_SORT_LAYOUTS },
181 { "\\spellcheck_continuously", LyXRC::RC_SPELLCHECK_CONTINUOUSLY },
182 { "\\spellcheck_notes", LyXRC::RC_SPELLCHECK_NOTES },
183 { "\\spellchecker", LyXRC::RC_SPELLCHECKER },
184 { "\\splitindex_command", LyXRC::RC_SPLITINDEX_COMMAND },
185 { "\\tempdir_path", LyXRC::RC_TEMPDIRPATH },
186 { "\\template_path", LyXRC::RC_TEMPLATEPATH },
187 { "\\tex_allows_spaces", LyXRC::RC_TEX_ALLOWS_SPACES },
188 { "\\tex_expects_windows_paths", LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS },
189 { "\\texinputs_prefix", LyXRC::RC_TEXINPUTS_PREFIX },
190 { "\\thesaurusdir_path", LyXRC::RC_THESAURUSDIRPATH },
191 { "\\ui_file", LyXRC::RC_UIFILE },
192 { "\\use_converter_cache", LyXRC::RC_USE_CONVERTER_CACHE },
193 { "\\use_converter_needauth", LyXRC::RC_USE_CONVERTER_NEEDAUTH },
194 { "\\use_converter_needauth_forbidden", LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN },
195 { "\\use_lastfilepos", LyXRC::RC_USELASTFILEPOS },
196 { "\\use_pixmap_cache", LyXRC::RC_USE_PIXMAP_CACHE },
197 { "\\use_qimage", LyXRC::RC_USE_QIMAGE },
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";
245 // Because a screen is typically wider than a piece of paper:
247 allow_geometry_session = true;
248 // Default LaTeX font size:
249 font_sizes[FONT_SIZE_TINY] = "5.0";
250 font_sizes[FONT_SIZE_SCRIPT] = "7.0";
251 font_sizes[FONT_SIZE_FOOTNOTE] = "8.0";
252 font_sizes[FONT_SIZE_SMALL] = "9.0";
253 font_sizes[FONT_SIZE_NORMAL] = "10.0";
254 font_sizes[FONT_SIZE_LARGE] = "12.0";
255 font_sizes[FONT_SIZE_LARGER] = "14.4";
256 font_sizes[FONT_SIZE_LARGEST] = "17.26";
257 font_sizes[FONT_SIZE_HUGE] = "20.74";
258 font_sizes[FONT_SIZE_HUGER] = "24.88";
259 use_scalable_fonts = true;
260 roman_font_name = "";
262 typewriter_font_name = "";
264 auto_region_delete = true;
265 auto_reset_options = false;
266 plaintext_linelen = 65;
267 mouse_wheel_speed = 1.0;
269 check_lastfiles = true;
270 use_lastfilepos = true;
271 load_session = false;
273 save_compressed = false;
275 backupdir_path.erase();
276 display_graphics = true;
277 // Spellchecker settings:
278 // FIXME: this check should test the target platform (darwin)
279 #if defined(USE_MACOSX_PACKAGING)
280 spellchecker = "native";
281 #elif defined(USE_ASPELL)
282 spellchecker = "aspell";
283 #elif defined(USE_HUNSPELL)
284 spellchecker = "hunspell";
286 spellchecker = "aspell";
288 spellchecker_accept_compound = false;
289 spellcheck_continuously = false;
290 completion_minlength = 6;
291 spellcheck_notes = true;
293 visual_cursor = false;
295 mark_foreign_language = true;
296 language_auto_begin = true;
297 language_auto_end = true;
298 language_global_options = true;
299 language_package_selection = LP_AUTO;
300 language_custom_package = "\\usepackage{babel}";
301 language_command_begin = "\\selectlanguage{$$lang}";
302 language_command_local = "\\foreignlanguage{$$lang}{";
303 sort_layouts = false;
304 group_layouts = true;
305 gui_language = "auto";
307 windows_style_tex_paths = false;
308 tex_allows_spaces = false;
309 date_insert_format = "%x";
310 cursor_follows_scrollbar = false;
311 scroll_below_document = false;
312 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
313 paragraph_markers = false;
314 mac_dontswap_ctrl_meta = false;
315 mac_like_cursor_movement = false;
316 macro_edit_style = MACRO_EDIT_INLINE_BOX;
317 dialogs_iconify_with_main = false;
318 preview = PREVIEW_OFF;
319 preview_hashed_labels = false;
320 preview_scale_factor = 1.0;
321 use_converter_cache = true;
322 use_converter_needauth_forbidden = true;
323 use_converter_needauth = true;
324 use_system_colors = false;
326 use_pixmap_cache = false;
328 converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months
329 user_name = to_utf8(support::user_name());
330 user_email = to_utf8(support::user_email());
331 open_buffers_in_tabs = true;
332 single_close_tab_button = false;
333 single_instance = true;
334 forward_search_dvi = string();
335 forward_search_pdf = string();
336 export_overwrite = NO_FILES;
338 // Fullscreen settings
339 full_screen_limit = false;
340 full_screen_toolbars = true;
341 full_screen_tabbar = true;
342 full_screen_menubar = true;
343 full_screen_statusbar = true;
344 full_screen_scrollbar = true;
345 full_screen_width = 700;
347 completion_cursor_text = true;
348 completion_popup_math = true;
349 completion_popup_text = false;
350 completion_popup_delay = 2.0;
351 completion_popup_after_complete = true;
352 autocorrection_math = false;
353 completion_inline_math = true;
354 completion_inline_text = false;
355 completion_inline_dots = -1;
356 completion_inline_delay = 0.2;
357 default_decimal_point = ".";
358 default_length_unit = Length::CM;
360 close_buffer_with_last_view = "yes";
361 mouse_middlebutton_paste = true;
367 void oldFontFormat(string & family, string & foundry)
369 if (family.empty() || family[0] != '-')
371 foundry = token(family, '-', 1);
372 family = token(family, '-', 2);
380 bool LyXRC::read(FileName const & filename, bool check_format)
382 Lexer lexrc(lyxrcTags);
383 lexrc.setFile(filename);
384 LYXERR(Debug::LYXRC, "Reading '" << filename << "'...");
385 ReturnValues retval = read(lexrc, check_format);
386 if (!check_format || retval != FormatMismatch)
387 return retval == ReadOK;
389 LYXERR(Debug::FILES, "Converting LyXRC file to " << LYXRC_FILEFORMAT);
390 TempFile tmp("convert_lyxrc");
391 FileName const tempfile = tmp.name();
392 bool const success = prefs2prefs(filename, tempfile, false);
394 LYXERR0 ("Unable to convert " << filename.absFileName() <<
395 " to format " << LYXRC_FILEFORMAT);
398 // Keep this in the else branch, such that lexrc2 goes out
399 // of scope and releases the lock on tempfile before we
400 // attempt to remove it. This matters on Windows.
401 Lexer lexrc2(lyxrcTags);
402 lexrc2.setFile(tempfile);
403 LYXERR(Debug::LYXRC, "Reading '" << tempfile << "'...");
404 retval = read(lexrc2, check_format);
406 return retval == ReadOK;
410 // don't need to worry about conversion, because this is always
411 // from an internal source
412 bool LyXRC::read(istream & is)
414 Lexer lexrc(lyxrcTags);
416 LYXERR(Debug::LYXRC, "Reading istream...");
417 return read(lexrc, false) == ReadOK;
421 LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format)
423 if (lyxerr.debugging(Debug::PARSER))
424 lexrc.printTable(lyxerr);
429 // format prior to 2.0 and introduction of format tag
430 unsigned int format = 0;
432 while (lexrc.isOK()) {
433 // By using two switches we take advantage of the compiler
434 // telling us if we have missed a LyXRCTags element in
435 // the second switch.
436 // Note that this also shows a problem with Lexer since it
437 // helps us avoid taking advantage of the strictness of the
440 int le = lexrc.lex();
442 case Lexer::LEX_UNDEF:
443 lexrc.printError("Unknown tag `$$Token'");
445 case Lexer::LEX_FEOF:
450 switch (static_cast<LyXRCTags>(le)) {
453 format = lexrc.getInteger();
455 case RC_INPUT: // Include file
458 libFileSearch(string(),
460 if (read(tmp, check_format)) {
462 "Error reading included file: " + tmp.absFileName());
468 bind_file = os::internal_path(lexrc.getString());
473 def_file = os::internal_path(lexrc.getString());
478 ui_file = os::internal_path(lexrc.getString());
481 case RC_AUTORESET_OPTIONS:
482 lexrc >> auto_reset_options;
485 case RC_DISPLAY_GRAPHICS:
487 display_graphics = lexrc.getString() == "true";
490 case RC_TEX_EXPECTS_WINDOWS_PATHS:
491 lexrc >> windows_style_tex_paths;
494 case RC_TEX_ALLOWS_SPACES:
495 lexrc >> tex_allows_spaces;
498 case RC_TEXINPUTS_PREFIX:
499 lexrc >> texinputs_prefix;
506 case RC_KBMAP_PRIMARY:
508 string const kmap(os::internal_path(lexrc.getString()));
509 if (!libFileSearch("kbd", kmap, "kmap").empty()
511 primary_kbmap = kmap;
513 lexrc.printError("LyX: Keymap `$$Token' not found");
518 case RC_KBMAP_SECONDARY:
520 string const kmap(os::internal_path(lexrc.getString()));
521 if (!libFileSearch("kbd", kmap, "kmap").empty()
523 secondary_kbmap = kmap;
525 lexrc.printError("LyX: Keymap `$$Token' not found");
530 case RC_FONT_ENCODING:
534 case RC_PRINTLANDSCAPEFLAG:
535 lexrc >> print_landscape_flag;
538 case RC_PRINTPAPERDIMENSIONFLAG:
539 lexrc >> print_paper_dimension_flag;
542 case RC_PRINTPAPERFLAG:
543 lexrc >> print_paper_flag;
546 case RC_VIEWDVI_PAPEROPTION:
548 view_dvi_paper_option = lexrc.getString();
550 view_dvi_paper_option.erase();
553 case RC_CHKTEX_COMMAND:
554 if (lexrc.next(true)) {
555 chktex_command = lexrc.getString();
559 case RC_BIBTEX_ALTERNATIVES:
560 if (lexrc.next(true)) {
561 bibtex_alternatives.insert(lexrc.getString());
565 case RC_BIBTEX_COMMAND:
566 if (lexrc.next(true)) {
567 bibtex_command = lexrc.getString();
571 case RC_JBIBTEX_COMMAND:
572 if (lexrc.next(true)) {
573 jbibtex_command = lexrc.getString();
577 case RC_JBIBTEX_ALTERNATIVES:
578 if (lexrc.next(true)) {
579 jbibtex_alternatives.insert(lexrc.getString());
583 case RC_INDEX_ALTERNATIVES:
584 if (lexrc.next(true)) {
585 index_alternatives.insert(lexrc.getString());
589 case RC_INDEX_COMMAND:
590 if (lexrc.next(true)) {
591 index_command = lexrc.getString();
595 case RC_JINDEX_COMMAND:
596 if (lexrc.next(true)) {
597 jindex_command = lexrc.getString();
601 case RC_SPLITINDEX_COMMAND:
602 if (lexrc.next(true)) {
603 splitindex_command = lexrc.getString();
607 case RC_NOMENCL_COMMAND:
608 if (lexrc.next(true)) {
609 nomencl_command = lexrc.getString();
623 case RC_GEOMETRY_SESSION:
624 lexrc >> allow_geometry_session;
627 case RC_SCREEN_FONT_SIZES:
628 lexrc >> font_sizes[FONT_SIZE_TINY];
629 lexrc >> font_sizes[FONT_SIZE_SCRIPT];
630 lexrc >> font_sizes[FONT_SIZE_FOOTNOTE];
631 lexrc >> font_sizes[FONT_SIZE_SMALL];
632 lexrc >> font_sizes[FONT_SIZE_NORMAL];
633 lexrc >> font_sizes[FONT_SIZE_LARGE];
634 lexrc >> font_sizes[FONT_SIZE_LARGER];
635 lexrc >> font_sizes[FONT_SIZE_LARGEST];
636 lexrc >> font_sizes[FONT_SIZE_HUGE];
637 lexrc >> font_sizes[FONT_SIZE_HUGER];
640 case RC_SCREEN_FONT_SCALABLE:
641 lexrc >> use_scalable_fonts;
648 case RC_DOCUMENTPATH:
650 document_path = os::internal_path(lexrc.getString());
655 example_path = os::internal_path(lexrc.getString());
658 case RC_TEMPLATEPATH:
660 template_path = os::internal_path(lexrc.getString());
665 tempdir_path = os::internal_path(lexrc.getString());
668 case RC_THESAURUSDIRPATH:
670 thesaurusdir_path = os::internal_path(lexrc.getString());
673 case RC_HUNSPELLDIR_PATH:
675 hunspelldir_path = os::internal_path(lexrc.getString());
678 case RC_USELASTFILEPOS:
679 lexrc >> use_lastfilepos;
683 lexrc >> load_session;
686 case RC_MOUSE_WHEEL_SPEED:
687 lexrc >> mouse_wheel_speed;
690 case RC_COMPLETION_INLINE_DELAY:
691 lexrc >> completion_inline_delay;
694 case RC_COMPLETION_INLINE_MATH:
695 lexrc >> completion_inline_math;
698 case RC_COMPLETION_INLINE_TEXT:
699 lexrc >> completion_inline_text;
702 case RC_COMPLETION_INLINE_DOTS:
703 lexrc >> completion_inline_dots;
706 case RC_AUTOCORRECTION_MATH:
707 lexrc >> autocorrection_math;
710 case RC_COMPLETION_POPUP_DELAY:
711 lexrc >> completion_popup_delay;
714 case RC_COMPLETION_POPUP_MATH:
715 lexrc >> completion_popup_math;
718 case RC_COMPLETION_POPUP_TEXT:
719 lexrc >> completion_popup_text;
722 case RC_COMPLETION_CURSOR_TEXT:
723 lexrc >> completion_cursor_text;
726 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
727 lexrc >> completion_popup_after_complete;
730 case RC_COMPLETION_MINLENGTH:
731 lexrc >> completion_minlength;
734 case RC_NUMLASTFILES:
735 lexrc >> num_lastfiles;
738 case RC_CHECKLASTFILES:
739 lexrc >> check_lastfiles;
746 case RC_USE_SYSTEM_THEME_ICONS:
747 lexrc >> use_system_theme_icons;
750 case RC_SCREEN_FONT_ROMAN:
752 roman_font_name = lexrc.getString();
753 oldFontFormat(roman_font_name,
758 case RC_SCREEN_FONT_SANS:
760 sans_font_name = lexrc.getString();
761 oldFontFormat(sans_font_name, sans_font_foundry);
765 case RC_SCREEN_FONT_TYPEWRITER:
767 typewriter_font_name = lexrc.getString();
768 oldFontFormat(typewriter_font_name,
769 typewriter_font_foundry);
773 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
774 lexrc >> roman_font_foundry;
777 case RC_SCREEN_FONT_SANS_FOUNDRY:
778 lexrc >> sans_font_foundry;
781 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
782 lexrc >> typewriter_font_foundry;
787 lexrc.printError("Missing color tag.");
790 string lyx_name = lexrc.getString();
793 lexrc.printError("Missing color name for color: `$$Token'");
796 string x11_name = lexrc.getString();
798 ColorCode const col =
799 lcolor.getFromLyXName(lyx_name);
800 if (col == Color_none ||
801 col == Color_inherit ||
805 if (!lcolor.setColor(col, x11_name))
806 LYXERR0("Bad lyxrc set_color for " << lyx_name);
810 case RC_AUTOREGIONDELETE:
811 // Auto region delete defaults to true
812 lexrc >> auto_region_delete;
817 lyxpipes = os::internal_path(lexrc.getString());
820 case RC_CURSOR_FOLLOWS_SCROLLBAR:
821 lexrc >> cursor_follows_scrollbar;
824 case RC_CURSOR_WIDTH:
825 lexrc >> cursor_width;
828 case RC_SCROLL_BELOW_DOCUMENT:
829 lexrc >> scroll_below_document;
832 case RC_PARAGRAPH_MARKERS:
833 lexrc >> paragraph_markers;
836 case RC_MAC_DONTSWAP_CTRL_META:
837 lexrc >> mac_dontswap_ctrl_meta;
840 case RC_MAC_LIKE_CURSOR_MOVEMENT:
841 lexrc >> mac_like_cursor_movement;
844 case RC_MACRO_EDIT_STYLE:
846 switch (lexrc.getInteger()) {
847 case 0: macro_edit_style = MACRO_EDIT_INLINE_BOX; break;
848 case 1: macro_edit_style = MACRO_EDIT_INLINE; break;
849 case 2: macro_edit_style = MACRO_EDIT_LIST; break;
854 case RC_DIALOGS_ICONIFY_WITH_MAIN:
855 lexrc >> dialogs_iconify_with_main;
858 case RC_PLAINTEXT_LINELEN:
859 lexrc >> plaintext_linelen;
861 // Spellchecker settings:
862 case RC_ACCEPT_COMPOUND:
863 lexrc >> spellchecker_accept_compound;
865 case RC_USE_SYSTEM_COLORS:
866 lexrc >> use_system_colors;
869 lexrc >> use_tooltip;
871 case RC_USE_PIXMAP_CACHE:
872 lexrc >> use_pixmap_cache;
877 case RC_SPELLCHECKER:
878 lexrc >> spellchecker;
881 lexrc >> spellchecker_alt_lang;
884 lexrc >> spellchecker_esc_chars;
886 case RC_SPELLCHECK_CONTINUOUSLY:
887 lexrc >> spellcheck_continuously;
889 case RC_SPELLCHECK_NOTES:
890 lexrc >> spellcheck_notes;
893 lexrc >> make_backup;
895 case RC_SAVE_COMPRESSED:
896 lexrc >> save_compressed;
899 lexrc >> save_origin;
901 case RC_BACKUPDIR_PATH:
903 backupdir_path = os::internal_path(lexrc.getString());
905 case RC_DEFAULT_DECIMAL_POINT:
906 lexrc >> default_decimal_point;
908 case RC_DEFAULT_LENGTH_UNIT:
910 default_length_unit = (Length::UNIT) lexrc.getInteger();
912 case RC_DATE_INSERT_FORMAT:
913 lexrc >> date_insert_format;
915 case RC_LANGUAGE_CUSTOM_PACKAGE:
916 lexrc >> language_custom_package;
918 case RC_LANGUAGE_AUTO_BEGIN:
919 lexrc >> language_auto_begin;
921 case RC_LANGUAGE_AUTO_END:
922 lexrc >> language_auto_end;
924 case RC_LANGUAGE_GLOBAL_OPTIONS:
925 lexrc >> language_global_options;
927 case RC_LANGUAGE_PACKAGE_SELECTION:
929 switch (lexrc.getInteger()) {
931 language_package_selection = LP_AUTO;
934 language_package_selection = LP_BABEL;
937 language_package_selection = LP_CUSTOM;
940 language_package_selection = LP_NONE;
945 case RC_LANGUAGE_COMMAND_BEGIN:
946 lexrc >> language_command_begin;
948 case RC_LANGUAGE_COMMAND_END:
949 lexrc >> language_command_end;
951 case RC_LANGUAGE_COMMAND_LOCAL:
952 lexrc >> language_command_local;
954 case RC_VISUAL_CURSOR:
955 lexrc >> visual_cursor;
957 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
958 lexrc >> close_buffer_with_last_view;
961 lexrc >> auto_number;
963 case RC_MARK_FOREIGN_LANGUAGE:
964 lexrc >> mark_foreign_language;
970 fmt = lexrc.getString();
971 if (lexrc.next(true))
972 command = lexrc.getString();
973 setMover(fmt, command);
978 string from, to, command, flags;
980 from = lexrc.getString();
982 to = lexrc.getString();
983 if (lexrc.next(true))
984 command = lexrc.getString();
986 flags = lexrc.getString();
988 theConverters().erase(from, to);
990 theConverters().add(from, to, command, flags);
993 // compatibility with versions older than 1.4.0 only
995 string format, command;
996 lexrc >> format >> command;
997 theFormats().setViewer(format, command);
1000 case RC_FILEFORMAT: {
1002 string format, extensions, shortcut;
1003 docstring prettyname;
1004 if (!(lexrc >> format >> extensions))
1006 if (ok && lexrc.next(true))
1007 prettyname = lexrc.getDocString();
1011 if(!(lexrc >> shortcut))
1013 string viewer, editor;
1014 if (ok && lexrc.next(true))
1015 viewer = lexrc.getString();
1018 if (ok && lexrc.next(true))
1019 editor = lexrc.getString();
1023 if (!(lexrc >> flags >> mime))
1025 int flgs = Format::none;
1026 while (!flags.empty()) {
1028 flags = split(flags, flag, ',');
1029 if (flag == "document")
1030 flgs |= Format::document;
1031 else if (flag == "vector")
1032 flgs |= Format::vector;
1033 else if (flag == "zipped=native")
1034 flgs |= Format::zipped_native;
1035 else if (flag == "menu=export")
1036 flgs |= Format::export_menu;
1038 LYXERR0("Ignoring unknown flag `"
1039 << flag << "' for format `"
1043 LYXERR0("Syntax error in format " << format);
1044 else if (prettyname.empty()) {
1045 if (theConverters().formatIsUsed(format))
1046 LYXERR0("Can't delete format " << format);
1048 theFormats().erase(format);
1050 theFormats().add(format, extensions, prettyname,
1051 shortcut, viewer, editor, mime, flgs);
1055 case RC_VIEWER_ALTERNATIVES: {
1056 string format, command;
1057 if ((lexrc >> format) && lexrc.next(true)) {
1058 command = lexrc.getString();
1059 viewer_alternatives[format].insert(command);
1063 case RC_EDITOR_ALTERNATIVES: {
1064 string format, command;
1065 if ((lexrc >> format) && lexrc.next(true)) {
1066 command = lexrc.getString();
1067 editor_alternatives[format].insert(command);
1072 case RC_DEFAULT_OTF_VIEW_FORMAT:
1073 lexrc >> default_otf_view_format;
1076 case RC_DEFAULT_VIEW_FORMAT:
1077 lexrc >> default_view_format;
1080 case RC_GUI_LANGUAGE:
1081 lexrc >> gui_language;
1084 case RC_SHOW_BANNER:
1085 lexrc >> show_banner;
1090 string const tmp = lexrc.getString();
1091 if (tmp == "true" || tmp == "on")
1092 preview = PREVIEW_ON;
1093 else if (tmp == "no_math")
1094 preview = PREVIEW_NO_MATH;
1096 preview = PREVIEW_OFF;
1097 if (tmp != "false" && tmp != "off")
1098 LYXERR0("Unrecognized preview status \""
1104 case RC_PREVIEW_HASHED_LABELS:
1105 lexrc >> preview_hashed_labels;
1108 case RC_PREVIEW_SCALE_FACTOR:
1109 lexrc >> preview_scale_factor;
1116 lexrc >> user_email;
1119 case RC_PATH_PREFIX:
1120 lexrc >> path_prefix;
1123 case RC_USE_CONVERTER_CACHE:
1124 lexrc >> use_converter_cache;
1126 case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
1127 lexrc >> use_converter_needauth_forbidden;
1129 case RC_USE_CONVERTER_NEEDAUTH:
1130 lexrc >> use_converter_needauth;
1132 case RC_CONVERTER_CACHE_MAXAGE:
1133 lexrc >> converter_cache_maxage;
1136 case RC_SORT_LAYOUTS:
1137 lexrc >> sort_layouts;
1139 case RC_GROUP_LAYOUTS:
1140 lexrc >> group_layouts;
1142 case RC_FULL_SCREEN_LIMIT:
1143 lexrc >> full_screen_limit;
1145 case RC_FULL_SCREEN_TOOLBARS:
1146 lexrc >> full_screen_toolbars;
1148 case RC_FULL_SCREEN_SCROLLBAR:
1149 lexrc >> full_screen_scrollbar;
1151 case RC_FULL_SCREEN_STATUSBAR:
1152 lexrc >> full_screen_statusbar;
1154 case RC_FULL_SCREEN_TABBAR:
1155 lexrc >> full_screen_tabbar;
1157 case RC_FULL_SCREEN_MENUBAR:
1158 lexrc >> full_screen_menubar;
1160 case RC_FULL_SCREEN_WIDTH:
1161 lexrc >> full_screen_width;
1163 case RC_OPEN_BUFFERS_IN_TABS:
1164 lexrc >> open_buffers_in_tabs;
1166 case RC_SINGLE_CLOSE_TAB_BUTTON:
1167 lexrc >> single_close_tab_button;
1169 case RC_SINGLE_INSTANCE:
1170 lexrc >> single_instance;
1171 if (run_mode == PREFERRED)
1172 run_mode = single_instance ? USE_REMOTE : NEW_INSTANCE;
1174 case RC_FORWARD_SEARCH_DVI:
1175 if (lexrc.next(true))
1176 forward_search_dvi = lexrc.getString();
1178 case RC_FORWARD_SEARCH_PDF:
1179 if (lexrc.next(true))
1180 forward_search_pdf = lexrc.getString();
1182 case RC_EXPORT_OVERWRITE:
1184 string const tmp = lexrc.getString();
1185 if (tmp == "all" || tmp == "true")
1186 export_overwrite = ALL_FILES;
1187 else if (tmp == "main")
1188 export_overwrite = MAIN_FILE;
1190 export_overwrite = NO_FILES;
1191 if (tmp != "ask" && tmp != "false")
1192 LYXERR0("Unrecognized export_overwrite status \""
1197 case RC_SCROLL_WHEEL_ZOOM:
1199 string const tmp = lexrc.getString();
1201 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_CTRL;
1202 else if (tmp == "shift")
1203 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_SHIFT;
1204 else if (tmp == "alt")
1205 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_ALT;
1207 scroll_wheel_zoom = SCROLL_WHEEL_ZOOM_OFF;
1208 if (tmp != "off" && tmp != "false")
1209 LYXERR0("Unrecognized scroll_wheel_zoom status \""
1215 case RC_MOUSE_MIDDLEBUTTON_PASTE:
1216 lexrc >> mouse_middlebutton_paste;
1220 break; // this is just a dummy
1223 // This is triggered the first time through the loop unless
1224 // we hit a format tag.
1225 if (check_format && format != LYXRC_FILEFORMAT)
1226 return FormatMismatch;
1229 /// Update converters data-structures
1230 theConverters().update(theFormats());
1231 theConverters().buildGraph();
1232 theBufferList().invalidateConverterCache();
1238 void LyXRC::write(FileName const & filename, bool ignore_system_lyxrc) const
1240 ofstream ofs(filename.toFilesystemEncoding().c_str());
1242 write(ofs, ignore_system_lyxrc);
1246 void LyXRC::print() const
1248 if (lyxerr.debugging())
1249 write(lyxerr, false);
1257 typedef pair<string, SpecialisedMover> Data;
1259 SameMover(Data const & comparison)
1260 : comparison_(comparison) {}
1262 bool operator()(Data const & data) const
1264 return data.first == comparison_.first &&
1265 data.second.command() == comparison_.second.command();
1275 // Escape \ and " so that LyXLex can read the string later
1276 string escapeCommand(string const & str) {
1277 return subst(subst(str , "\\", "\\\\"),
1284 void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const
1286 LyXRCTags tag = RC_LAST;
1288 if (!name.empty()) {
1289 for (int i = 0; i != lyxrcCount; ++i)
1290 if ("\\" + name == lyxrcTags[i].tag)
1291 tag = static_cast<LyXRCTags>(lyxrcTags[i].code);
1295 os << "# LyX " << lyx_version
1296 << " generated this file. If you want to make your own\n"
1297 << "# modifications you should do them from inside LyX and save.\n\n"
1298 << "Format " << LYXRC_FILEFORMAT << "\n\n";
1300 // Why the switch you might ask. It is a trick to ensure that all
1301 // the elements in the LyXRCTags enum are handled. As you can see
1302 // there are no breaks at all. So it is just a huge fall-through.
1303 // The nice thing is that we will get a warning from the compiler
1304 // if we forget an element.
1308 // input/include files are not done here
1309 case RC_LYXRCFORMAT:
1311 if (ignore_system_lyxrc ||
1312 bind_file != system_lyxrc.bind_file) {
1313 string const path = os::external_path(bind_file);
1314 os << "\\bind_file \"" << path << "\"\n";
1320 if (ignore_system_lyxrc ||
1321 def_file != system_lyxrc.def_file) {
1322 string const path = os::external_path(def_file);
1323 os << "\\def_file \"" << path << "\"\n";
1332 << "# MISC SECTION ######################################\n"
1334 // bind files are not done here.
1336 case RC_PATH_PREFIX:
1337 if (ignore_system_lyxrc ||
1338 path_prefix != system_lyxrc.path_prefix) {
1339 os << "\\path_prefix \"" << path_prefix << "\"\n";
1344 if (ignore_system_lyxrc ||
1345 ui_file != system_lyxrc.ui_file) {
1346 string const path = os::external_path(ui_file);
1347 os << "\\ui_file \"" << path << "\"\n";
1351 case RC_AUTOREGIONDELETE:
1352 if (ignore_system_lyxrc ||
1353 auto_region_delete != system_lyxrc.auto_region_delete) {
1354 os << "# Set to false to inhibit automatic replacement of\n"
1355 << "# the current selection.\n"
1356 << "\\auto_region_delete " << convert<string>(auto_region_delete)
1361 case RC_AUTORESET_OPTIONS:
1362 if (ignore_system_lyxrc ||
1363 auto_reset_options != system_lyxrc.auto_reset_options) {
1364 os << "# Set to false to inhibit automatic reset of\n"
1365 << "# the class options to defaults on class change.\n"
1366 << "\\auto_reset_options "
1367 << convert<string>(auto_reset_options)
1373 if (ignore_system_lyxrc ||
1374 autosave != system_lyxrc.autosave) {
1375 os << "# The time interval between auto-saves in seconds.\n"
1376 << "\\autosave " << autosave << '\n';
1380 case RC_DISPLAY_GRAPHICS:
1381 if (ignore_system_lyxrc ||
1382 display_graphics != system_lyxrc.display_graphics) {
1383 os << "# Display graphics within LyX\n"
1385 << "\\display_graphics "
1386 << (display_graphics ? "true" : "false")
1391 case RC_SORT_LAYOUTS:
1392 if (ignore_system_lyxrc ||
1393 sort_layouts != system_lyxrc.sort_layouts) {
1394 os << "# Sort layouts alphabetically.\n"
1395 << "\\sort_layouts " << convert<string>(sort_layouts) << '\n';
1399 case RC_GROUP_LAYOUTS:
1400 if (ignore_system_lyxrc ||
1401 group_layouts != system_lyxrc.group_layouts) {
1402 os << "# Group layouts by their category.\n"
1403 << "\\group_layouts " << convert<string>(group_layouts) << '\n';
1407 case RC_VIEWDVI_PAPEROPTION:
1408 if (ignore_system_lyxrc ||
1409 view_dvi_paper_option
1410 != system_lyxrc.view_dvi_paper_option) {
1411 os << "# Options used to specify paper size to the\n"
1412 << "# view_dvi_command (e.g. -paper)\n"
1413 << "\\view_dvi_paper_option \""
1414 << view_dvi_paper_option << "\"\n";
1418 case RC_CHKTEX_COMMAND:
1419 if (ignore_system_lyxrc ||
1420 chktex_command != system_lyxrc.chktex_command) {
1421 os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n";
1425 case RC_BIBTEX_ALTERNATIVES: {
1426 CommandSet::const_iterator it = bibtex_alternatives.begin();
1427 CommandSet::const_iterator end = bibtex_alternatives.end();
1428 for ( ; it != end; ++it) {
1429 if (ignore_system_lyxrc
1430 || !system_lyxrc.bibtex_alternatives.count(*it))
1431 os << "\\bibtex_alternatives \""
1437 case RC_BIBTEX_COMMAND:
1438 if (ignore_system_lyxrc ||
1439 bibtex_command != system_lyxrc.bibtex_command) {
1440 os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n";
1444 case RC_JBIBTEX_COMMAND:
1445 if (ignore_system_lyxrc ||
1446 jbibtex_command != system_lyxrc.jbibtex_command) {
1447 os << "\\jbibtex_command \"" << escapeCommand(jbibtex_command) << "\"\n";
1451 case RC_JBIBTEX_ALTERNATIVES: {
1452 CommandSet::const_iterator it = jbibtex_alternatives.begin();
1453 CommandSet::const_iterator end = jbibtex_alternatives.end();
1454 for ( ; it != end; ++it) {
1455 if (ignore_system_lyxrc
1456 || !system_lyxrc.jbibtex_alternatives.count(*it))
1457 os << "\\jbibtex_alternatives \""
1463 case RC_INDEX_ALTERNATIVES: {
1464 CommandSet::const_iterator it = index_alternatives.begin();
1465 CommandSet::const_iterator end = index_alternatives.end();
1466 for ( ; it != end; ++it) {
1467 if (ignore_system_lyxrc
1468 || !system_lyxrc.index_alternatives.count(*it))
1469 os << "\\index_alternatives \""
1475 case RC_INDEX_COMMAND:
1476 if (ignore_system_lyxrc ||
1477 index_command != system_lyxrc.index_command) {
1478 os << "\\index_command \"" << escapeCommand(index_command) << "\"\n";
1482 case RC_JINDEX_COMMAND:
1483 if (ignore_system_lyxrc ||
1484 jindex_command != system_lyxrc.jindex_command) {
1485 os << "\\jindex_command \"" << escapeCommand(jindex_command) << "\"\n";
1489 case RC_SPLITINDEX_COMMAND:
1490 if (ignore_system_lyxrc ||
1491 splitindex_command != system_lyxrc.splitindex_command) {
1492 os << "\\splitindex_command \"" << escapeCommand(splitindex_command) << "\"\n";
1496 case RC_NOMENCL_COMMAND:
1497 if (ignore_system_lyxrc ||
1498 nomencl_command != system_lyxrc.nomencl_command) {
1499 os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n";
1503 case RC_TEX_EXPECTS_WINDOWS_PATHS:
1504 // Don't write this setting to the preferences file,
1505 // but allow temporary changes (bug 7557).
1506 if (ignore_system_lyxrc) {
1507 os << "\\tex_expects_windows_paths "
1508 << convert<string>(windows_style_tex_paths) << '\n';
1512 case RC_TEX_ALLOWS_SPACES:
1513 if (tex_allows_spaces != system_lyxrc.tex_allows_spaces) {
1514 os << "\\tex_allows_spaces "
1515 << convert<string>(tex_allows_spaces) << '\n';
1520 if (ignore_system_lyxrc ||
1521 use_kbmap != system_lyxrc.use_kbmap) {
1522 os << "\\kbmap " << convert<string>(use_kbmap) << '\n';
1526 case RC_KBMAP_PRIMARY:
1527 if (ignore_system_lyxrc ||
1528 primary_kbmap != system_lyxrc.primary_kbmap) {
1529 string const path = os::external_path(primary_kbmap);
1530 os << "\\kbmap_primary \"" << path << "\"\n";
1534 case RC_KBMAP_SECONDARY:
1535 if (ignore_system_lyxrc ||
1536 secondary_kbmap != system_lyxrc.secondary_kbmap) {
1537 string const path = os::external_path(secondary_kbmap);
1538 os << "\\kbmap_secondary \"" << path << "\"\n";
1543 if (ignore_system_lyxrc ||
1544 lyxpipes != system_lyxrc.lyxpipes) {
1545 string const path = os::external_path(lyxpipes);
1546 os << "\\serverpipe \"" << path << "\"\n";
1550 case RC_DATE_INSERT_FORMAT:
1551 if (ignore_system_lyxrc ||
1552 date_insert_format != system_lyxrc.date_insert_format) {
1553 os << "\\date_insert_format \"" << date_insert_format
1560 os << "\\user_name \"" << user_name << "\"\n";
1565 os << "\\user_email \"" << user_email << "\"\n";
1569 case RC_SHOW_BANNER:
1570 if (ignore_system_lyxrc ||
1571 show_banner != system_lyxrc.show_banner) {
1572 os << "\\show_banner " << convert<string>(show_banner) << '\n';
1578 if (ignore_system_lyxrc ||
1579 preview != system_lyxrc.preview) {
1585 case PREVIEW_NO_MATH:
1592 os << "\\preview " << status << '\n';
1597 case RC_PREVIEW_HASHED_LABELS:
1598 if (ignore_system_lyxrc ||
1599 preview_hashed_labels !=
1600 system_lyxrc.preview_hashed_labels) {
1601 os << "\\preview_hashed_labels "
1602 << convert<string>(preview_hashed_labels) << '\n';
1607 case RC_PREVIEW_SCALE_FACTOR:
1608 if (ignore_system_lyxrc ||
1609 preview_scale_factor != system_lyxrc.preview_scale_factor) {
1610 os << "\\preview_scale_factor "
1611 << preview_scale_factor << '\n';
1616 case RC_USE_CONVERTER_CACHE:
1617 if (ignore_system_lyxrc ||
1618 use_converter_cache != system_lyxrc.use_converter_cache) {
1619 os << "\\use_converter_cache "
1620 << convert<string>(use_converter_cache) << '\n';
1625 case RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
1626 if (ignore_system_lyxrc ||
1627 use_converter_needauth_forbidden != system_lyxrc.use_converter_needauth_forbidden) {
1628 os << "\\use_converter_needauth_forbidden "
1629 << convert<string>(use_converter_needauth_forbidden) << '\n';
1634 case RC_USE_CONVERTER_NEEDAUTH:
1635 if (ignore_system_lyxrc ||
1636 use_converter_needauth != system_lyxrc.use_converter_needauth) {
1637 os << "\\use_converter_needauth "
1638 << convert<string>(use_converter_needauth) << '\n';
1643 case RC_CONVERTER_CACHE_MAXAGE:
1644 if (ignore_system_lyxrc ||
1645 converter_cache_maxage != system_lyxrc.converter_cache_maxage) {
1646 os << "\\converter_cache_maxage "
1647 << converter_cache_maxage << '\n';
1653 << "# SCREEN & FONTS SECTION ############################\n"
1657 if (ignore_system_lyxrc ||
1658 icon_set != system_lyxrc.icon_set) {
1659 os << "\\icon_set \"" << icon_set
1665 case RC_USE_SYSTEM_THEME_ICONS:
1666 if (ignore_system_lyxrc ||
1667 use_system_theme_icons != system_lyxrc.use_system_theme_icons) {
1668 os << "\\use_system_theme_icons "
1669 << convert<string>(use_system_theme_icons)
1676 if (ignore_system_lyxrc ||
1677 dpi != system_lyxrc.dpi) {
1678 os << "\\screen_dpi " << dpi << '\n';
1682 case RC_SCREEN_ZOOM:
1683 if (ignore_system_lyxrc ||
1684 zoom != system_lyxrc.zoom) {
1685 os << "\\screen_zoom " << zoom << '\n';
1689 case RC_GEOMETRY_SESSION:
1690 if (ignore_system_lyxrc ||
1691 allow_geometry_session != system_lyxrc.allow_geometry_session) {
1692 os << "\\allow_geometry_session " << convert<string>(allow_geometry_session)
1697 case RC_CURSOR_FOLLOWS_SCROLLBAR:
1698 if (ignore_system_lyxrc ||
1699 cursor_follows_scrollbar
1700 != system_lyxrc.cursor_follows_scrollbar) {
1701 os << "\\cursor_follows_scrollbar "
1702 << convert<string>(cursor_follows_scrollbar) << '\n';
1706 case RC_CURSOR_WIDTH:
1707 if (ignore_system_lyxrc ||
1709 != system_lyxrc.cursor_width) {
1710 os << "\\cursor_width "
1711 << cursor_width << '\n';
1715 case RC_SCROLL_BELOW_DOCUMENT:
1716 if (ignore_system_lyxrc ||
1717 scroll_below_document
1718 != system_lyxrc.scroll_below_document) {
1719 os << "\\scroll_below_document "
1720 << convert<string>(scroll_below_document) << '\n';
1724 case RC_PARAGRAPH_MARKERS:
1725 if (ignore_system_lyxrc ||
1727 != system_lyxrc.paragraph_markers) {
1728 os << "\\paragraph_markers "
1729 << convert<string>(paragraph_markers) << '\n';
1733 case RC_MAC_DONTSWAP_CTRL_META:
1734 if (ignore_system_lyxrc ||
1735 mac_dontswap_ctrl_meta
1736 != system_lyxrc.mac_dontswap_ctrl_meta) {
1737 os << "\\mac_dontswap_ctrl_meta "
1738 << convert<string>(mac_dontswap_ctrl_meta) << '\n';
1742 case RC_MAC_LIKE_CURSOR_MOVEMENT:
1743 if (ignore_system_lyxrc ||
1744 mac_like_cursor_movement
1745 != system_lyxrc.mac_like_cursor_movement) {
1746 os << "\\mac_like_cursor_movement "
1747 << convert<string>(mac_like_cursor_movement) << '\n';
1751 case RC_MACRO_EDIT_STYLE:
1752 if (ignore_system_lyxrc ||
1754 != system_lyxrc.macro_edit_style) {
1755 os << "\\macro_edit_style ";
1756 switch (macro_edit_style) {
1757 case MACRO_EDIT_INLINE_BOX: os << "0\n"; break;
1758 case MACRO_EDIT_INLINE: os << "1\n"; break;
1759 case MACRO_EDIT_LIST: os << "2\n"; break;
1764 case RC_DIALOGS_ICONIFY_WITH_MAIN:
1765 if (ignore_system_lyxrc ||
1766 dialogs_iconify_with_main
1767 != system_lyxrc.dialogs_iconify_with_main) {
1768 os << "\\dialogs_iconify_with_main "
1769 << convert<string>(dialogs_iconify_with_main) << '\n';
1773 case RC_SCREEN_FONT_ROMAN:
1774 if (ignore_system_lyxrc ||
1775 roman_font_name != system_lyxrc.roman_font_name) {
1776 os << "\\screen_font_roman \"" << roman_font_name
1781 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
1782 if (ignore_system_lyxrc ||
1783 roman_font_foundry != system_lyxrc.roman_font_foundry) {
1784 os << "\\screen_font_roman_foundry \"" << roman_font_foundry
1789 case RC_SCREEN_FONT_SANS:
1790 if (ignore_system_lyxrc ||
1791 sans_font_name != system_lyxrc.sans_font_name) {
1792 os << "\\screen_font_sans \"" << sans_font_name
1797 case RC_SCREEN_FONT_SANS_FOUNDRY:
1798 if (ignore_system_lyxrc ||
1799 sans_font_foundry != system_lyxrc.sans_font_foundry) {
1800 os << "\\screen_font_sans_foundry \"" << sans_font_foundry
1805 case RC_SCREEN_FONT_TYPEWRITER:
1806 if (ignore_system_lyxrc ||
1807 typewriter_font_name != system_lyxrc.typewriter_font_name) {
1808 os << "\\screen_font_typewriter \""
1809 << typewriter_font_name << "\"\n";
1813 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
1814 if (ignore_system_lyxrc ||
1815 typewriter_font_foundry != system_lyxrc.typewriter_font_foundry) {
1816 os << "\\screen_font_typewriter_foundry \""
1817 << typewriter_font_foundry << "\"\n";
1822 case RC_SCREEN_FONT_SCALABLE:
1823 if (ignore_system_lyxrc ||
1824 use_scalable_fonts != system_lyxrc.use_scalable_fonts) {
1825 os << "\\screen_font_scalable "
1826 << convert<string>(use_scalable_fonts)
1831 case RC_SCREEN_FONT_SIZES:
1832 if (ignore_system_lyxrc ||
1833 font_sizes[FONT_SIZE_TINY]
1834 != system_lyxrc.font_sizes[FONT_SIZE_TINY] ||
1835 font_sizes[FONT_SIZE_SCRIPT]
1836 != system_lyxrc.font_sizes[FONT_SIZE_SCRIPT] ||
1837 font_sizes[FONT_SIZE_FOOTNOTE]
1838 != system_lyxrc.font_sizes[FONT_SIZE_FOOTNOTE] ||
1839 font_sizes[FONT_SIZE_SMALL]
1840 != system_lyxrc.font_sizes[FONT_SIZE_SMALL] ||
1841 font_sizes[FONT_SIZE_NORMAL]
1842 != system_lyxrc.font_sizes[FONT_SIZE_NORMAL] ||
1843 font_sizes[FONT_SIZE_LARGE]
1844 != system_lyxrc.font_sizes[FONT_SIZE_LARGE] ||
1845 font_sizes[FONT_SIZE_LARGER]
1846 != system_lyxrc.font_sizes[FONT_SIZE_LARGER] ||
1847 font_sizes[FONT_SIZE_LARGEST]
1848 != system_lyxrc.font_sizes[FONT_SIZE_LARGEST] ||
1849 font_sizes[FONT_SIZE_HUGE]
1850 != system_lyxrc.font_sizes[FONT_SIZE_HUGE] ||
1851 font_sizes[FONT_SIZE_HUGER]
1852 != system_lyxrc.font_sizes[FONT_SIZE_HUGER]) {
1853 streamsize old_prec = os.precision();
1854 os.setf(ios::fixed);
1856 os << "\\screen_font_sizes"
1857 << ' ' << font_sizes[FONT_SIZE_TINY]
1858 << ' ' << font_sizes[FONT_SIZE_SCRIPT]
1859 << ' ' << font_sizes[FONT_SIZE_FOOTNOTE]
1860 << ' ' << font_sizes[FONT_SIZE_SMALL]
1861 << ' ' << font_sizes[FONT_SIZE_NORMAL]
1862 << ' ' << font_sizes[FONT_SIZE_LARGE]
1863 << ' ' << font_sizes[FONT_SIZE_LARGER]
1864 << ' ' << font_sizes[FONT_SIZE_LARGEST]
1865 << ' ' << font_sizes[FONT_SIZE_HUGE]
1866 << ' ' << font_sizes[FONT_SIZE_HUGER]
1868 os.precision(old_prec);
1869 os.unsetf(ios::fixed);
1873 case RC_FULL_SCREEN_LIMIT:
1874 if (ignore_system_lyxrc ||
1875 full_screen_limit != system_lyxrc.full_screen_limit) {
1876 os << "\\fullscreen_limit "
1877 << convert<string>(full_screen_limit)
1882 case RC_FULL_SCREEN_TOOLBARS:
1883 if (ignore_system_lyxrc ||
1884 full_screen_toolbars != system_lyxrc.full_screen_toolbars) {
1885 os << "\\fullscreen_toolbars "
1886 << convert<string>(full_screen_toolbars)
1891 case RC_FULL_SCREEN_SCROLLBAR:
1892 if (ignore_system_lyxrc ||
1893 full_screen_scrollbar != system_lyxrc.full_screen_scrollbar) {
1894 os << "\\fullscreen_scrollbar "
1895 << convert<string>(full_screen_scrollbar)
1900 case RC_FULL_SCREEN_STATUSBAR:
1901 if (ignore_system_lyxrc ||
1902 full_screen_statusbar != system_lyxrc.full_screen_statusbar) {
1903 os << "\\fullscreen_statusbar "
1904 << convert<string>(full_screen_statusbar)
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_SINGLE_INSTANCE:
1955 if (ignore_system_lyxrc ||
1956 single_instance != system_lyxrc.single_instance) {
1957 os << "\\single_instance "
1958 << convert<string>(single_instance)
1963 case RC_FORWARD_SEARCH_DVI:
1964 if (ignore_system_lyxrc ||
1965 forward_search_dvi != system_lyxrc.forward_search_dvi) {
1966 os << "\\forward_search_dvi \"" << escapeCommand(forward_search_dvi) << "\"\n";
1970 case RC_FORWARD_SEARCH_PDF:
1971 if (ignore_system_lyxrc ||
1972 forward_search_pdf != system_lyxrc.forward_search_pdf) {
1973 os << "\\forward_search_pdf \"" << escapeCommand(forward_search_pdf) << "\"\n";
1979 << "# COLOR SECTION ###################################\n"
1983 for (int i = 0; i < Color_ignore; ++i) {
1984 ColorCode lc = static_cast<ColorCode>(i);
1985 string const col = lcolor.getX11Name(lc);
1986 if (ignore_system_lyxrc
1987 || col != system_lcolor.getX11Name(lc)) {
1988 os << "\\set_color \""
1989 << lcolor.getLyXName(lc) << "\" \""
1997 << "# PRINTER SECTION ###################################\n"
2000 case RC_PRINTLANDSCAPEFLAG:
2001 if (ignore_system_lyxrc ||
2002 print_landscape_flag != system_lyxrc.print_landscape_flag) {
2003 os << "\\print_landscape_flag \"" << print_landscape_flag
2009 case RC_PRINTPAPERFLAG:
2010 if (ignore_system_lyxrc ||
2011 print_paper_flag != system_lyxrc.print_paper_flag) {
2012 os << "\\print_paper_flag \"" << print_paper_flag
2018 case RC_PRINTPAPERDIMENSIONFLAG:
2019 if (ignore_system_lyxrc ||
2020 print_paper_dimension_flag
2021 != system_lyxrc.print_paper_dimension_flag) {
2022 os << "\\print_paper_dimension_flag \""
2023 << print_paper_dimension_flag << "\"\n";
2029 << "# TEX SECTION #######################################\n"
2032 case RC_TEXINPUTS_PREFIX:
2033 if (ignore_system_lyxrc ||
2034 texinputs_prefix != system_lyxrc.texinputs_prefix) {
2035 os << "\\texinputs_prefix \"" << texinputs_prefix << "\"\n";
2040 case RC_FONT_ENCODING:
2041 if (ignore_system_lyxrc ||
2042 fontenc != system_lyxrc.fontenc) {
2043 os << "\\font_encoding \"" << fontenc << "\"\n";
2049 << "# FILE SECTION ######################################\n"
2052 case RC_DOCUMENTPATH:
2053 if (ignore_system_lyxrc ||
2054 document_path != system_lyxrc.document_path) {
2055 string const path = os::external_path(document_path);
2056 os << "\\document_path \"" << path << "\"\n";
2060 case RC_USELASTFILEPOS:
2061 if (ignore_system_lyxrc ||
2062 use_lastfilepos != system_lyxrc.use_lastfilepos) {
2063 os << "\\use_lastfilepos " << convert<string>(use_lastfilepos)
2068 case RC_LOADSESSION:
2069 if (ignore_system_lyxrc ||
2070 load_session != system_lyxrc.load_session) {
2071 os << "\\load_session " << convert<string>(load_session)
2076 case RC_MOUSE_WHEEL_SPEED:
2077 if (ignore_system_lyxrc ||
2078 mouse_wheel_speed != system_lyxrc.mouse_wheel_speed) {
2079 os << "\\mouse_wheel_speed " << mouse_wheel_speed << '\n';
2083 case RC_MOUSE_MIDDLEBUTTON_PASTE:
2084 if (ignore_system_lyxrc ||
2085 mouse_middlebutton_paste != system_lyxrc.mouse_middlebutton_paste) {
2086 os << "\\mouse_middlebutton_paste "
2087 << convert<string>(mouse_middlebutton_paste) << '\n';
2091 case RC_COMPLETION_INLINE_DELAY:
2092 if (ignore_system_lyxrc ||
2093 completion_inline_delay != system_lyxrc.completion_inline_delay) {
2094 os << "\\completion_inline_delay " << completion_inline_delay << '\n';
2098 case RC_COMPLETION_INLINE_MATH:
2099 if (ignore_system_lyxrc ||
2100 completion_inline_math != system_lyxrc.completion_inline_math) {
2101 os << "\\completion_inline_math "
2102 << convert<string>(completion_inline_math) << '\n';
2106 case RC_COMPLETION_INLINE_TEXT:
2107 if (ignore_system_lyxrc ||
2108 completion_inline_text != system_lyxrc.completion_inline_text) {
2109 os << "\\completion_inline_text "
2110 << convert<string>(completion_inline_text) << '\n';
2114 case RC_COMPLETION_INLINE_DOTS:
2115 if (ignore_system_lyxrc ||
2116 completion_inline_dots != system_lyxrc.completion_inline_dots) {
2117 os << "\\completion_inline_dots "
2118 << convert<string>(completion_inline_dots) << '\n';
2122 case RC_AUTOCORRECTION_MATH:
2123 if (ignore_system_lyxrc ||
2124 autocorrection_math != system_lyxrc.autocorrection_math) {
2125 os << "\\autocorrection_math "
2126 << convert<string>(autocorrection_math) << '\n';
2130 case RC_COMPLETION_POPUP_DELAY:
2131 if (ignore_system_lyxrc ||
2132 completion_popup_delay != system_lyxrc.completion_popup_delay) {
2133 os << "\\completion_popup_delay " << completion_popup_delay << '\n';
2137 case RC_COMPLETION_POPUP_MATH:
2138 if (ignore_system_lyxrc ||
2139 completion_popup_math != system_lyxrc.completion_popup_math) {
2140 os << "\\completion_popup_math "
2141 << convert<string>(completion_popup_math) << '\n';
2145 case RC_COMPLETION_POPUP_TEXT:
2146 if (ignore_system_lyxrc ||
2147 completion_popup_text != system_lyxrc.completion_popup_text) {
2148 os << "\\completion_popup_text "
2149 << convert<string>(completion_popup_text) << '\n';
2153 case RC_COMPLETION_CURSOR_TEXT:
2154 if (ignore_system_lyxrc ||
2155 completion_cursor_text != system_lyxrc.completion_cursor_text) {
2156 os << "\\completion_cursor_text "
2157 << convert<string>(completion_cursor_text) << '\n';
2161 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
2162 if (ignore_system_lyxrc ||
2163 completion_popup_after_complete
2164 != system_lyxrc.completion_popup_after_complete) {
2165 os << "\\completion_popup_after_complete "
2166 << convert<string>(completion_popup_after_complete) << '\n';
2170 case RC_COMPLETION_MINLENGTH:
2171 if (ignore_system_lyxrc ||
2172 completion_minlength != system_lyxrc.completion_minlength) {
2173 os << "\\completion_minlength " << convert<string>(completion_minlength)
2179 case RC_NUMLASTFILES:
2180 if (ignore_system_lyxrc ||
2181 num_lastfiles != system_lyxrc.num_lastfiles) {
2182 os << "\\num_lastfiles " << num_lastfiles << '\n';
2186 case RC_CHECKLASTFILES:
2187 if (ignore_system_lyxrc ||
2188 check_lastfiles != system_lyxrc.check_lastfiles) {
2189 os << "\\check_lastfiles " << convert<string>(check_lastfiles)
2194 case RC_EXAMPLEPATH:
2195 if (ignore_system_lyxrc ||
2196 example_path != system_lyxrc.example_path) {
2197 string const path = os::external_path(example_path);
2198 os << "\\example_path \"" << path << "\"\n";
2202 case RC_TEMPLATEPATH:
2203 if (ignore_system_lyxrc ||
2204 template_path != system_lyxrc.template_path) {
2205 string const path = os::external_path(template_path);
2206 os << "\\template_path \"" << path << "\"\n";
2210 case RC_TEMPDIRPATH:
2211 if (ignore_system_lyxrc ||
2212 tempdir_path != system_lyxrc.tempdir_path) {
2213 string const path = os::external_path(tempdir_path);
2214 os << "\\tempdir_path \"" << path << "\"\n";
2218 case RC_THESAURUSDIRPATH:
2219 if (ignore_system_lyxrc ||
2220 thesaurusdir_path != system_lyxrc.thesaurusdir_path) {
2221 string const path = os::external_path(thesaurusdir_path);
2222 os << "\\thesaurusdir_path \"" << path << "\"\n";
2226 case RC_HUNSPELLDIR_PATH:
2227 if (ignore_system_lyxrc ||
2228 hunspelldir_path != system_lyxrc.hunspelldir_path) {
2229 string const path = os::external_path(hunspelldir_path);
2230 os << "\\hunspelldir_path \"" << path << "\"\n";
2234 case RC_PLAINTEXT_LINELEN:
2235 if (ignore_system_lyxrc ||
2236 plaintext_linelen != system_lyxrc.plaintext_linelen) {
2237 os << "\\plaintext_linelen " << plaintext_linelen << '\n';
2241 case RC_MAKE_BACKUP:
2242 if (ignore_system_lyxrc ||
2243 make_backup != system_lyxrc.make_backup) {
2244 os << "\\make_backup " << convert<string>(make_backup) << '\n';
2248 case RC_SAVE_COMPRESSED:
2249 if (ignore_system_lyxrc ||
2250 save_compressed != system_lyxrc.save_compressed) {
2251 os << "\\save_compressed " << convert<string>(save_compressed) << '\n';
2255 case RC_SAVE_ORIGIN:
2256 if (ignore_system_lyxrc ||
2257 save_origin != system_lyxrc.save_origin) {
2258 os << "\\save_origin " << convert<string>(save_origin) << '\n';
2262 case RC_BACKUPDIR_PATH:
2263 if (ignore_system_lyxrc ||
2264 backupdir_path != system_lyxrc.backupdir_path) {
2265 string const path = os::external_path(backupdir_path);
2266 os << "\\backupdir_path \"" << path << "\"\n";
2272 << "# PLAIN TEXT EXPORT SECTION ##############################\n"
2276 << "# SPELLCHECKER SECTION ##############################\n"
2279 case RC_ACCEPT_COMPOUND:
2280 if (ignore_system_lyxrc ||
2281 spellchecker_accept_compound != system_lyxrc.spellchecker_accept_compound) {
2282 os << "\\accept_compound " << convert<string>(spellchecker_accept_compound)
2288 if (ignore_system_lyxrc ||
2289 spellchecker_alt_lang != system_lyxrc.spellchecker_alt_lang) {
2290 os << "\\alternate_language \"" << spellchecker_alt_lang
2296 if (ignore_system_lyxrc ||
2297 spellchecker_esc_chars != system_lyxrc.spellchecker_esc_chars) {
2298 os << "\\escape_chars \"" << spellchecker_esc_chars << "\"\n";
2302 case RC_USE_SYSTEM_COLORS:
2303 if (ignore_system_lyxrc ||
2304 use_system_colors != system_lyxrc.use_system_colors) {
2305 os << "\\use_system_colors "
2306 << convert<string>(use_system_colors)
2311 case RC_USE_TOOLTIP:
2312 if (ignore_system_lyxrc ||
2313 use_tooltip != system_lyxrc.use_tooltip) {
2314 os << "\\use_tooltip "
2315 << convert<string>(use_tooltip)
2320 case RC_USE_PIXMAP_CACHE:
2321 if (ignore_system_lyxrc ||
2322 use_pixmap_cache != system_lyxrc.use_pixmap_cache) {
2323 os << "\\use_pixmap_cache "
2324 << convert<string>(use_pixmap_cache)
2330 if (ignore_system_lyxrc ||
2331 use_qimage != system_lyxrc.use_qimage) {
2332 os << "\\use_qimage "
2333 << convert<string>(use_qimage)
2340 << "# LANGUAGE SUPPORT SECTION ##########################\n"
2343 case RC_DEFAULT_DECIMAL_POINT:
2344 if (ignore_system_lyxrc ||
2345 default_decimal_point != system_lyxrc.default_decimal_point) {
2346 os << "\\default_decimal_point " << default_decimal_point << '\n';
2351 case RC_DEFAULT_LENGTH_UNIT:
2352 if (ignore_system_lyxrc ||
2353 default_length_unit != system_lyxrc.default_length_unit) {
2354 os << "\\default_length_unit " << int(default_length_unit) << '\n';
2359 case RC_SPELLCHECKER:
2360 if (ignore_system_lyxrc ||
2361 spellchecker != system_lyxrc.spellchecker) {
2362 os << "\\spellchecker " << spellchecker << '\n';
2367 case RC_SPELLCHECK_CONTINUOUSLY:
2368 if (ignore_system_lyxrc ||
2369 spellcheck_continuously != system_lyxrc.spellcheck_continuously) {
2370 os << "\\spellcheck_continuously " << convert<string>(spellcheck_continuously)
2376 case RC_SPELLCHECK_NOTES:
2377 if (ignore_system_lyxrc ||
2378 spellcheck_notes != system_lyxrc.spellcheck_notes) {
2379 os << "\\spellcheck_notes " << convert<string>(spellcheck_notes)
2385 case RC_VISUAL_CURSOR:
2386 if (ignore_system_lyxrc ||
2387 visual_cursor != system_lyxrc.visual_cursor) {
2388 os << "\\visual_cursor " << convert<string>(visual_cursor) << '\n';
2392 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2393 if (ignore_system_lyxrc ||
2394 close_buffer_with_last_view != system_lyxrc.close_buffer_with_last_view) {
2395 os << "# When closing last view, buffer closes (yes), hides (no), or ask the user (ask)\n";
2396 os << "\\close_buffer_with_last_view " << close_buffer_with_last_view << '\n';
2400 case RC_LANGUAGE_CUSTOM_PACKAGE:
2401 if (ignore_system_lyxrc ||
2402 language_custom_package != system_lyxrc.language_custom_package) {
2403 os << "\\language_custom_package \"" << language_custom_package
2408 case RC_LANGUAGE_GLOBAL_OPTIONS:
2409 if (ignore_system_lyxrc ||
2410 language_global_options
2411 != system_lyxrc.language_global_options) {
2412 os << "\\language_global_options \""
2413 << convert<string>(language_global_options)
2418 case RC_LANGUAGE_PACKAGE_SELECTION:
2419 if (ignore_system_lyxrc ||
2420 language_package_selection != system_lyxrc.language_package_selection) {
2421 os << "\\language_package_selection ";
2422 switch (language_package_selection) {
2439 case RC_LANGUAGE_COMMAND_BEGIN:
2440 if (ignore_system_lyxrc ||
2441 language_command_begin
2442 != system_lyxrc.language_command_begin) {
2443 os << "\\language_command_begin \""
2444 << language_command_begin
2449 case RC_LANGUAGE_COMMAND_END:
2450 if (ignore_system_lyxrc ||
2451 language_command_end
2452 != system_lyxrc.language_command_end) {
2453 os << "\\language_command_end \"" << language_command_end
2458 case RC_LANGUAGE_COMMAND_LOCAL:
2459 if (ignore_system_lyxrc ||
2460 language_command_local
2461 != system_lyxrc.language_command_local) {
2462 os << "\\language_command_local \""
2463 << language_command_local
2468 case RC_LANGUAGE_AUTO_BEGIN:
2469 if (ignore_system_lyxrc ||
2470 language_auto_begin != system_lyxrc.language_auto_begin) {
2471 os << "\\language_auto_begin "
2472 << convert<string>(language_auto_begin) << '\n';
2476 case RC_LANGUAGE_AUTO_END:
2477 if (ignore_system_lyxrc ||
2478 language_auto_end != system_lyxrc.language_auto_end) {
2479 os << "\\language_auto_end "
2480 << convert<string>(language_auto_end) << '\n';
2484 case RC_MARK_FOREIGN_LANGUAGE:
2485 if (ignore_system_lyxrc ||
2486 mark_foreign_language
2487 != system_lyxrc.mark_foreign_language) {
2488 os << "\\mark_foreign_language " <<
2489 convert<string>(mark_foreign_language) << '\n';
2495 << "# 2nd MISC SUPPORT SECTION ##########################\n"
2498 case RC_AUTO_NUMBER:
2499 if (ignore_system_lyxrc ||
2500 auto_number != system_lyxrc.auto_number) {
2501 os << "\\auto_number " << convert<string>(auto_number) << '\n';
2505 case RC_GUI_LANGUAGE:
2506 if (ignore_system_lyxrc ||
2507 gui_language != system_lyxrc.gui_language) {
2508 os << "\\gui_language " << gui_language << '\n';
2512 case RC_EXPORT_OVERWRITE:
2513 if (ignore_system_lyxrc ||
2514 export_overwrite != system_lyxrc.export_overwrite) {
2516 switch (export_overwrite) {
2527 os << "\\export_overwrite " << status << '\n';
2532 case RC_SCROLL_WHEEL_ZOOM:
2533 if (ignore_system_lyxrc ||
2534 scroll_wheel_zoom != system_lyxrc.scroll_wheel_zoom) {
2536 switch (scroll_wheel_zoom) {
2537 case SCROLL_WHEEL_ZOOM_OFF:
2540 case SCROLL_WHEEL_ZOOM_CTRL:
2543 case SCROLL_WHEEL_ZOOM_SHIFT:
2546 case SCROLL_WHEEL_ZOOM_ALT:
2550 os << "\\scroll_wheel_zoom " << status << '\n';
2556 << "# FORMATS SECTION ##########################\n"
2560 // New/modified formats
2561 for (Formats::const_iterator cit = theFormats().begin();
2562 cit != theFormats().end(); ++cit) {
2563 Format const * format =
2564 theSystemFormats().getFormat(cit->name());
2566 format->extensions() != cit->extensions() ||
2567 format->prettyname() != cit->prettyname() ||
2568 format->shortcut() != cit->shortcut() ||
2569 format->viewer() != cit->viewer() ||
2570 format->editor() != cit->editor() ||
2571 format->documentFormat() != cit->documentFormat() ||
2572 format->vectorFormat() != cit->vectorFormat() ||
2573 format->inExportMenu() != cit->inExportMenu() ||
2574 format->mime() != cit->mime()) {
2575 os << "\\format \"" << cit->name() << "\" \""
2576 << cit->extensions() << "\" \""
2577 << to_utf8(cit->prettyname()) << "\" \""
2578 << cit->shortcut() << "\" \""
2579 << escapeCommand(cit->viewer()) << "\" \""
2580 << escapeCommand(cit->editor()) << "\" \"";
2581 vector<string> flags;
2582 if (cit->documentFormat())
2583 flags.push_back("document");
2584 if (cit->vectorFormat())
2585 flags.push_back("vector");
2586 if (cit->zippedNative())
2587 flags.push_back("zipped=native");
2588 if (cit->inExportMenu())
2589 flags.push_back("menu=export");
2591 os << getStringFromVector(flags);
2592 os << "\" \"" << cit->mime() << "\"\n";
2596 // Look for deleted formats
2597 for (Formats::const_iterator cit = theSystemFormats().begin();
2598 cit != theSystemFormats().end(); ++cit)
2599 if (!theFormats().getFormat(cit->name()))
2600 os << "\\format \"" << cit->name()
2601 << "\" \"\" \"\" \"\" \"\" \"\" \"\" \"\"\n";
2604 case RC_VIEWER_ALTERNATIVES: {
2605 Alternatives::const_iterator it = viewer_alternatives.begin();
2606 Alternatives::const_iterator const en = viewer_alternatives.end();
2607 Alternatives::const_iterator const sysend =
2608 system_lyxrc.viewer_alternatives.end();
2609 for (; it != en; ++it) {
2610 string const & fmt = it->first;
2611 CommandSet const & cmd = it->second;
2612 CommandSet::const_iterator sit = cmd.begin();
2613 CommandSet::const_iterator const sen = cmd.end();
2614 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2615 system_lyxrc.viewer_alternatives.begin() : // we won't use it in this case
2616 system_lyxrc.viewer_alternatives.find(fmt);
2617 for (; sit != sen; ++sit) {
2618 string const & cmd = *sit;
2619 if (ignore_system_lyxrc
2620 || sysfmt == sysend // format not found
2621 || sysfmt->second.count(cmd) == 0 // this command not found
2623 os << "\\viewer_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2629 case RC_EDITOR_ALTERNATIVES: {
2630 Alternatives::const_iterator it = editor_alternatives.begin();
2631 Alternatives::const_iterator const en = editor_alternatives.end();
2632 Alternatives::const_iterator const sysend =
2633 system_lyxrc.editor_alternatives.end();
2634 for (; it != en; ++it) {
2635 string const & fmt = it->first;
2636 CommandSet const & cmd = it->second;
2637 CommandSet::const_iterator sit = cmd.begin();
2638 CommandSet::const_iterator const sen = cmd.end();
2639 Alternatives::const_iterator const sysfmt = ignore_system_lyxrc ?
2640 system_lyxrc.editor_alternatives.begin() : // we won't use it in this case
2641 system_lyxrc.editor_alternatives.find(fmt);
2642 for (; sit != sen; ++sit) {
2643 string const & cmd = *sit;
2644 if (ignore_system_lyxrc
2645 || sysfmt == sysend // format not found
2646 || sysfmt->second.count(cmd) == 0 // this command not found
2648 os << "\\editor_alternatives " << fmt << " \"" << escapeCommand(cmd) << "\"\n";
2654 case RC_DEFAULT_OTF_VIEW_FORMAT:
2655 if ((ignore_system_lyxrc ||
2656 default_otf_view_format != system_lyxrc.default_otf_view_format)
2657 && !default_otf_view_format.empty()) {
2658 os << "\\default_otf_view_format " << default_otf_view_format << '\n';
2662 case RC_DEFAULT_VIEW_FORMAT:
2663 if (ignore_system_lyxrc ||
2664 default_view_format != system_lyxrc.default_view_format) {
2665 os << "\\default_view_format " << default_view_format << '\n';
2675 << "# CONVERTERS SECTION ##########################\n"
2679 // Look for new converters
2680 for (Converters::const_iterator cit = theConverters().begin();
2681 cit != theConverters().end(); ++cit) {
2682 Converter const * converter =
2683 theSystemConverters().getConverter(cit->from(),
2686 converter->command() != cit->command() ||
2687 converter->flags() != cit->flags())
2688 os << "\\converter \"" << cit->from() << "\" \""
2689 << cit->to() << "\" \""
2690 << escapeCommand(cit->command()) << "\" \""
2691 << cit->flags() << "\"\n";
2694 // New/modifed converters
2695 for (Converters::const_iterator cit = theSystemConverters().begin();
2696 cit != theSystemConverters().end(); ++cit)
2697 if (!theConverters().getConverter(cit->from(), cit->to()))
2698 os << "\\converter \"" << cit->from()
2699 << "\" \"" << cit->to() << "\" \"\" \"\"\n";
2706 << "# COPIERS SECTION ##########################\n"
2709 // Look for new movers
2710 Movers::const_iterator const sysbegin = theSystemMovers().begin();
2711 Movers::const_iterator const sysend = theSystemMovers().end();
2712 Movers::const_iterator it = theMovers().begin();
2713 Movers::const_iterator end = theMovers().end();
2715 for (; it != end; ++it) {
2716 Movers::const_iterator const sysit =
2717 find_if(sysbegin, sysend, SameMover(*it));
2718 if (sysit == sysend) {
2719 string const & fmt = it->first;
2720 string const & command =
2721 it->second.command();
2723 os << "\\copier " << fmt
2724 << " \"" << escapeCommand(command) << "\"\n";
2730 // We don't actually delete SpecialisedMover(s) from the
2731 // map, just clear their 'command', so there's no need
2732 // to test for anything else.
2739 void actOnUpdatedPrefs(LyXRC const & lyxrc_orig, LyXRC const & lyxrc_new)
2741 // Why the switch you might ask. It is a trick to ensure that all
2742 // the elements in the LyXRCTags enum is handled. As you can see
2743 // there are no breaks at all. So it is just a huge fall-through.
2744 // The nice thing is that we will get a warning from the compiler
2745 // if we forget an element.
2746 LyXRC::LyXRCTags tag = LyXRC::RC_LAST;
2748 case LyXRC::RC_LAST:
2749 case LyXRC::RC_ACCEPT_COMPOUND:
2750 if (lyxrc_orig.spellchecker_accept_compound != lyxrc_new.spellchecker_accept_compound)
2751 if (theSpellChecker()) theSpellChecker()->advanceChangeNumber();
2753 case LyXRC::RC_ALT_LANG:
2754 case LyXRC::RC_PLAINTEXT_LINELEN:
2755 case LyXRC::RC_AUTOCORRECTION_MATH:
2756 case LyXRC::RC_AUTOREGIONDELETE:
2757 case LyXRC::RC_AUTORESET_OPTIONS:
2758 case LyXRC::RC_AUTOSAVE:
2759 case LyXRC::RC_AUTO_NUMBER:
2760 case LyXRC::RC_BACKUPDIR_PATH:
2761 case LyXRC::RC_BIBTEX_ALTERNATIVES:
2762 case LyXRC::RC_BIBTEX_COMMAND:
2763 case LyXRC::RC_BINDFILE:
2764 case LyXRC::RC_CHECKLASTFILES:
2765 case LyXRC::RC_COMPLETION_CURSOR_TEXT:
2766 case LyXRC::RC_COMPLETION_INLINE_DELAY:
2767 case LyXRC::RC_COMPLETION_INLINE_DOTS:
2768 case LyXRC::RC_COMPLETION_INLINE_MATH:
2769 case LyXRC::RC_COMPLETION_INLINE_TEXT:
2770 case LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE:
2771 case LyXRC::RC_COMPLETION_POPUP_DELAY:
2772 case LyXRC::RC_COMPLETION_POPUP_MATH:
2773 case LyXRC::RC_COMPLETION_POPUP_TEXT:
2774 case LyXRC::RC_COMPLETION_MINLENGTH:
2775 case LyXRC::RC_USELASTFILEPOS:
2776 case LyXRC::RC_LOADSESSION:
2777 case LyXRC::RC_CHKTEX_COMMAND:
2778 case LyXRC::RC_CONVERTER:
2779 case LyXRC::RC_CONVERTER_CACHE_MAXAGE:
2780 case LyXRC::RC_COPIER:
2781 case LyXRC::RC_CURSOR_FOLLOWS_SCROLLBAR:
2782 case LyXRC::RC_SCROLL_BELOW_DOCUMENT:
2783 case LyXRC::RC_DATE_INSERT_FORMAT:
2784 case LyXRC::RC_GUI_LANGUAGE:
2785 case LyXRC::RC_DEFAULT_OTF_VIEW_FORMAT:
2786 case LyXRC::RC_DEFAULT_VIEW_FORMAT:
2787 case LyXRC::RC_DEFFILE:
2788 case LyXRC::RC_DIALOGS_ICONIFY_WITH_MAIN:
2789 case LyXRC::RC_DISPLAY_GRAPHICS:
2790 case LyXRC::RC_DOCUMENTPATH:
2791 if (lyxrc_orig.document_path != lyxrc_new.document_path) {
2792 FileName path(lyxrc_new.document_path);
2793 if (path.exists() && path.isDirectory())
2794 package().document_dir() = FileName(lyxrc.document_path);
2797 case LyXRC::RC_EDITOR_ALTERNATIVES:
2798 case LyXRC::RC_ESC_CHARS:
2799 case LyXRC::RC_EXAMPLEPATH:
2800 case LyXRC::RC_FONT_ENCODING:
2801 case LyXRC::RC_FILEFORMAT:
2802 case LyXRC::RC_GROUP_LAYOUTS:
2803 case LyXRC::RC_HUNSPELLDIR_PATH:
2804 case LyXRC::RC_ICON_SET:
2805 case LyXRC::RC_INDEX_ALTERNATIVES:
2806 case LyXRC::RC_INDEX_COMMAND:
2807 case LyXRC::RC_JBIBTEX_COMMAND:
2808 case LyXRC::RC_JBIBTEX_ALTERNATIVES:
2809 case LyXRC::RC_JINDEX_COMMAND:
2810 case LyXRC::RC_NOMENCL_COMMAND:
2811 case LyXRC::RC_INPUT:
2812 case LyXRC::RC_KBMAP:
2813 case LyXRC::RC_KBMAP_PRIMARY:
2814 case LyXRC::RC_KBMAP_SECONDARY:
2815 case LyXRC::RC_LANGUAGE_AUTO_BEGIN:
2816 case LyXRC::RC_LANGUAGE_AUTO_END:
2817 case LyXRC::RC_LANGUAGE_COMMAND_BEGIN:
2818 case LyXRC::RC_LANGUAGE_COMMAND_END:
2819 case LyXRC::RC_LANGUAGE_COMMAND_LOCAL:
2820 case LyXRC::RC_LANGUAGE_GLOBAL_OPTIONS:
2821 case LyXRC::RC_LANGUAGE_CUSTOM_PACKAGE:
2822 case LyXRC::RC_LANGUAGE_PACKAGE_SELECTION:
2823 case LyXRC::RC_LYXRCFORMAT:
2824 case LyXRC::RC_MAC_DONTSWAP_CTRL_META:
2825 case LyXRC::RC_MAC_LIKE_CURSOR_MOVEMENT:
2826 case LyXRC::RC_MACRO_EDIT_STYLE:
2827 case LyXRC::RC_MAKE_BACKUP:
2828 case LyXRC::RC_MARK_FOREIGN_LANGUAGE:
2829 case LyXRC::RC_MOUSE_WHEEL_SPEED:
2830 case LyXRC::RC_MOUSE_MIDDLEBUTTON_PASTE:
2831 case LyXRC::RC_NUMLASTFILES:
2832 case LyXRC::RC_PARAGRAPH_MARKERS:
2833 case LyXRC::RC_PATH_PREFIX:
2834 if (lyxrc_orig.path_prefix != lyxrc_new.path_prefix) {
2835 prependEnvPath("PATH", lyxrc_new.path_prefix);
2836 // Resets python path
2837 support::os::python(true);
2840 case LyXRC::RC_PREVIEW:
2841 case LyXRC::RC_PREVIEW_HASHED_LABELS:
2842 case LyXRC::RC_PREVIEW_SCALE_FACTOR:
2843 case LyXRC::RC_PRINTLANDSCAPEFLAG:
2844 case LyXRC::RC_PRINTPAPERDIMENSIONFLAG:
2845 case LyXRC::RC_PRINTPAPERFLAG:
2846 case LyXRC::RC_SAVE_COMPRESSED:
2847 case LyXRC::RC_SAVE_ORIGIN:
2848 case LyXRC::RC_SCREEN_DPI:
2849 case LyXRC::RC_SCREEN_FONT_ROMAN:
2850 case LyXRC::RC_SCREEN_FONT_ROMAN_FOUNDRY:
2851 case LyXRC::RC_SCREEN_FONT_SANS:
2852 case LyXRC::RC_SCREEN_FONT_SANS_FOUNDRY:
2853 case LyXRC::RC_SCREEN_FONT_SCALABLE:
2854 case LyXRC::RC_SCREEN_FONT_SIZES:
2855 case LyXRC::RC_SCREEN_FONT_TYPEWRITER:
2856 case LyXRC::RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
2857 case LyXRC::RC_GEOMETRY_SESSION:
2858 case LyXRC::RC_SCREEN_ZOOM:
2859 case LyXRC::RC_SERVERPIPE:
2860 case LyXRC::RC_SET_COLOR:
2861 case LyXRC::RC_SHOW_BANNER:
2862 case LyXRC::RC_OPEN_BUFFERS_IN_TABS:
2863 case LyXRC::RC_SPELLCHECKER:
2864 if (lyxrc_orig.spellchecker != lyxrc_new.spellchecker)
2867 case LyXRC::RC_SPELLCHECK_CONTINUOUSLY:
2868 case LyXRC::RC_SPELLCHECK_NOTES:
2869 case LyXRC::RC_SPLITINDEX_COMMAND:
2870 case LyXRC::RC_TEMPDIRPATH:
2871 case LyXRC::RC_TEMPLATEPATH:
2872 case LyXRC::RC_TEX_ALLOWS_SPACES:
2873 case LyXRC::RC_TEX_EXPECTS_WINDOWS_PATHS:
2874 if (lyxrc_orig.windows_style_tex_paths != lyxrc_new.windows_style_tex_paths) {
2875 os::windows_style_tex_paths(lyxrc_new.windows_style_tex_paths);
2878 case LyXRC::RC_TEXINPUTS_PREFIX:
2879 case LyXRC::RC_THESAURUSDIRPATH:
2880 case LyXRC::RC_UIFILE:
2881 case LyXRC::RC_USER_EMAIL:
2882 case LyXRC::RC_USER_NAME:
2883 case LyXRC::RC_USE_CONVERTER_CACHE:
2884 case LyXRC::RC_USE_CONVERTER_NEEDAUTH_FORBIDDEN:
2885 case LyXRC::RC_USE_CONVERTER_NEEDAUTH:
2886 case LyXRC::RC_USE_SYSTEM_COLORS:
2887 case LyXRC::RC_USE_TOOLTIP:
2888 case LyXRC::RC_USE_PIXMAP_CACHE:
2889 case LyXRC::RC_USE_QIMAGE:
2890 case LyXRC::RC_USE_SYSTEM_THEME_ICONS:
2891 case LyXRC::RC_VIEWDVI_PAPEROPTION:
2892 case LyXRC::RC_SINGLE_CLOSE_TAB_BUTTON:
2893 case LyXRC::RC_SINGLE_INSTANCE:
2894 case LyXRC::RC_SORT_LAYOUTS:
2895 case LyXRC::RC_FULL_SCREEN_LIMIT:
2896 case LyXRC::RC_FULL_SCREEN_SCROLLBAR:
2897 case LyXRC::RC_FULL_SCREEN_MENUBAR:
2898 case LyXRC::RC_FULL_SCREEN_STATUSBAR:
2899 case LyXRC::RC_FULL_SCREEN_TABBAR:
2900 case LyXRC::RC_FULL_SCREEN_TOOLBARS:
2901 case LyXRC::RC_FULL_SCREEN_WIDTH:
2902 case LyXRC::RC_VISUAL_CURSOR:
2903 case LyXRC::RC_CLOSE_BUFFER_WITH_LAST_VIEW:
2904 case LyXRC::RC_VIEWER:
2905 case LyXRC::RC_VIEWER_ALTERNATIVES:
2906 case LyXRC::RC_FORWARD_SEARCH_DVI:
2907 case LyXRC::RC_FORWARD_SEARCH_PDF:
2908 case LyXRC::RC_EXPORT_OVERWRITE:
2909 case LyXRC::RC_DEFAULT_DECIMAL_POINT:
2910 case LyXRC::RC_DEFAULT_LENGTH_UNIT:
2911 case LyXRC::RC_SCROLL_WHEEL_ZOOM:
2912 case LyXRC::RC_CURSOR_WIDTH:
2919 string const LyXRC::getDescription(LyXRCTags tag)
2924 case RC_ACCEPT_COMPOUND:
2925 str = _("Consider run-together words, such as \"diskdrive\" for \"disk drive\", as legal words?");
2929 str = _("Specify an alternate language. The default is to use the language of the document.");
2932 case RC_PLAINTEXT_LINELEN:
2933 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.");
2936 case RC_AUTOREGIONDELETE:
2937 str = _("De-select if you don't want the current selection to be replaced automatically by what you type.");
2940 case RC_AUTORESET_OPTIONS:
2941 str = _("De-select if you don't want the class options to be reset to defaults after class change.");
2945 str = _("The time interval between auto-saves (in seconds). 0 means no auto-save.");
2948 case RC_AUTO_NUMBER:
2951 case RC_BACKUPDIR_PATH:
2952 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.");
2955 case RC_BIBTEX_COMMAND:
2956 str = _("Define the options of bibtex (cf. man bibtex) or select an alternative compiler (e.g. mlbibtex or bibulus).");
2959 case RC_JBIBTEX_COMMAND:
2960 str = _("Define the options of the bibtex program for PLaTeX (Japanese LaTeX).");
2964 str = _("Keybindings file. Can either specify an absolute path, or LyX will look in its global and local bind/ directories.");
2967 case RC_CHECKLASTFILES:
2968 str = _("Select to check whether the lastfiles still exist.");
2971 case RC_CHKTEX_COMMAND:
2972 str = _("Define how to run chktex. E.g. \"chktex -n11 -n1 -n3 -n6 -n9 -22 -n25 -n30 -n38\" Refer to the ChkTeX documentation.");
2978 case RC_CONVERTER_NEEDAUTH_FORBIDDEN:
2979 str = _("Forbid use of external converters with 'needauth' option to prevent undesired effects.");
2982 case RC_CONVERTER_NEEDAUTH:
2983 str = _("Ask user before calling external converters with 'needauth' option to prevent undesired effects.");
2989 case RC_CURSOR_FOLLOWS_SCROLLBAR:
2990 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.");
2993 case RC_CURSOR_WIDTH:
2994 str = _("Configure the width of the text cursor. Automatic zoom-controlled cursor width used when set to 0.");
2997 case RC_SCROLL_BELOW_DOCUMENT:
2998 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");
3001 case RC_MAC_DONTSWAP_CTRL_META:
3002 str = _("Make Apple key act as Meta and Control key as Ctrl.");
3005 case RC_MAC_LIKE_CURSOR_MOVEMENT:
3006 str = _("Use the Mac OS X conventions for cursor movement");
3009 case RC_SHOW_MACRO_LABEL:
3010 str = _("Show a small box around a Math Macro with the macro name when the cursor is inside.");
3013 case RC_DATE_INSERT_FORMAT:
3014 //xgettext:no-c-format
3015 str = _("This accepts the normal strftime formats; see man strftime for full details. E.g.\"%A, %e. %B %Y\".");
3019 str = _("Command definition file. Can either specify an absolute path, or LyX will look in its global and local commands/ directories.");
3022 case RC_DEFAULT_OTF_VIEW_FORMAT:
3023 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE] with non-TeX fonts.");
3026 case RC_DEFAULT_VIEW_FORMAT:
3027 str = _("The default format used with LFUN_BUFFER_[VIEW|UPDATE].");
3030 case RC_DIALOGS_ICONIFY_WITH_MAIN:
3031 str = _("Iconify the dialogs when the main window is iconified. (Affects only dialogs shown after the change has been made.)");
3034 case RC_DISPLAY_GRAPHICS:
3035 str = _("Select how LyX will display any graphics.");
3038 case RC_DOCUMENTPATH:
3039 str = _("The default path for your documents. An empty value selects the directory LyX was started from.");
3043 str = _("Specify additional chars that can be part of a word.");
3046 case RC_EXAMPLEPATH:
3047 str = _("The path that LyX will set when offering to choose an example. An empty value selects the directory LyX was started from.");
3050 case RC_FONT_ENCODING:
3051 str = _("The font encoding used for the LaTeX2e fontenc package. T1 is highly recommended for non-English languages.");
3057 case RC_INDEX_COMMAND:
3058 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\".");
3061 case RC_JINDEX_COMMAND:
3062 str = _("Define the options of the index program for PLaTeX (Japanese LaTeX).");
3065 case RC_NOMENCL_COMMAND:
3066 str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options.");
3073 case RC_KBMAP_PRIMARY:
3074 case RC_KBMAP_SECONDARY:
3075 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.");
3078 case RC_LANGUAGE_AUTO_BEGIN:
3079 str = _("Select if a language switching command is needed at the beginning of the document.");
3082 case RC_LANGUAGE_AUTO_END:
3083 str = _("Select if a language switching command is needed at the end of the document.");
3086 case RC_LANGUAGE_COMMAND_BEGIN:
3087 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.");
3090 case RC_LANGUAGE_COMMAND_END:
3091 str = _("The LaTeX command for changing back to the language of the document.");
3094 case RC_LANGUAGE_COMMAND_LOCAL:
3095 str = _("The LaTeX command for local changing of the language.");
3098 case RC_LANGUAGE_GLOBAL_OPTIONS:
3099 str = _("De-select if you don't want the language(s) used as an argument to \\documentclass.");
3102 case RC_LANGUAGE_CUSTOM_PACKAGE:
3103 str = _("The LaTeX command for loading the language package. E.g. \"\\usepackage{babel}\", \"\\usepackage{omega}\".");
3106 case RC_LANGUAGE_PACKAGE_SELECTION:
3107 str = _("De-select if you don't want babel to be used when the language of the document is the default language.");
3110 case RC_USELASTFILEPOS:
3111 str = _("De-select if you do not want LyX to scroll to saved position.");
3114 case RC_LOADSESSION:
3115 str = _("De-select to prevent loading files opened from the last LyX session.");
3118 case RC_MAKE_BACKUP:
3119 str = _("De-select if you don't want LyX to create backup files.");
3122 case RC_MARK_FOREIGN_LANGUAGE:
3123 str = _("Select to control the highlighting of words with a language foreign to that of the document.");
3126 case RC_MOUSE_WHEEL_SPEED:
3127 str = _("The scrolling speed of the mouse wheel.");
3130 case RC_COMPLETION_POPUP_DELAY:
3131 str = _("The completion popup delay.");
3134 case RC_COMPLETION_POPUP_MATH:
3135 str = _("Select to display the completion popup in math mode.");
3138 case RC_COMPLETION_POPUP_TEXT:
3139 str = _("Select to display the completion popup in text mode.");
3142 case RC_COMPLETION_POPUP_AFTER_COMPLETE:
3143 str = _("Show the completion popup without delay after non-unique completion attempt.");
3146 case RC_COMPLETION_POPUP_TEXT:
3147 str = _("Show a small triangle on the cursor to indicate that a completion is available.");
3150 case RC_COMPLETION_POPUP_DELAY:
3151 str = _("The inline completion delay.");
3154 case RC_COMPLETION_INLINE_MATH:
3155 str = _("Select to display the inline completion in math mode.");
3158 case RC_COMPLETION_INLINE_TEXT:
3159 str = _("Select to display the inline completion in text mode.");
3162 case RC_COMPLETION_INLINE_DOTS:
3163 str = _("Use \"...\" to shorten long completions.");
3166 case RC_AUTOCORRECTION_MATH:
3167 str = _("Allow TeXMacs shorthand, like => converting to \\Rightarrow.");
3170 case RC_NUMLASTFILES:
3171 str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."),
3175 case RC_PATH_PREFIX:
3176 str = _("Specify those directories which should be "
3177 "prepended to the PATH environment variable.\n"
3178 "Use the OS native format.");
3182 str = _("Shows a typeset preview of things such as math");
3185 case RC_PREVIEW_HASHED_LABELS:
3186 str = _("Previewed equations will have \"(#)\" labels rather than numbered ones");
3189 case RC_PREVIEW_SCALE_FACTOR:
3190 str = _("Scale the preview size to suit.");
3193 case RC_PRINTLANDSCAPEFLAG:
3194 str = _("The option to print out in landscape.");
3197 case RC_PRINTPAPERDIMENSIONFLAG:
3198 str = _("Option to specify the dimensions of the print paper.");
3201 case RC_PRINTPAPERFLAG:
3202 str = _("The option to specify paper type.");
3205 case RC_VISUAL_CURSOR:
3206 str = _("Select to have visual bidi cursor movement, unselect for logical movement.");
3209 case RC_CLOSE_BUFFER_WITH_LAST_VIEW:
3210 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).");
3214 str = _("DPI (dots per inch) of your monitor is auto-detected by LyX. If that goes wrong, override the setting here.");
3217 case RC_SCREEN_FONT_ROMAN:
3218 case RC_SCREEN_FONT_SANS:
3219 case RC_SCREEN_FONT_TYPEWRITER:
3220 str = _("The screen fonts used to display the text while editing.");
3223 case RC_SCREEN_FONT_ROMAN_FOUNDRY:
3224 case RC_SCREEN_FONT_SANS_FOUNDRY:
3225 case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY:
3228 case RC_SCREEN_FONT_SCALABLE:
3229 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.");
3232 case RC_SCREEN_FONT_SIZES:
3233 str = _("The font sizes used for calculating the scaling of the screen fonts.");
3236 case RC_SCREEN_ZOOM:
3237 //xgettext:no-c-format
3238 str = _("The zoom percentage for screen fonts. A setting of 100% will make the fonts roughly the same size as on paper.");
3241 case RC_GEOMETRY_SESSION:
3242 str = _("Allow session manager to save and restore windows geometry.");
3246 str = _("This starts the lyxserver. The pipes get an additional extension \".in\" and \".out\". Only for advanced users.");
3252 case RC_SHOW_BANNER:
3253 str = _("De-select if you don't want the startup banner.");
3256 case RC_TEMPDIRPATH:
3257 str = _("LyX will place its temporary directories in this path. They will be deleted when you quit LyX.");
3260 case RC_THESAURUSDIRPATH:
3261 str = _("This is the place where the files of the thesaurus library reside.");
3264 case RC_TEMPLATEPATH:
3265 str = _("The path that LyX will set when offering to choose a template. An empty value selects the directory LyX was started from.");
3268 case RC_TEX_ALLOWS_SPACES:
3271 case RC_TEX_EXPECTS_WINDOWS_PATHS:
3274 case RC_TEXINPUTS_PREFIX:
3275 str = _("Specify those directories which should be "
3276 "prepended to the TEXINPUTS environment variable.\n"
3277 "A '.' represents the current document directory. "
3278 "Use the OS native format.");
3282 str = _("The UI (user interface) file. Can either specify an absolute path, or LyX will look in its global and local ui/ directories.");
3291 case RC_USE_USE_SYSTEM_COLORS:
3292 str = _("Enable use the system colors for some things like main window background and selection.");
3295 case RC_USE_TOOLTIP:
3296 str = _("Enable the automatic appearance of tool tips in the work area.");
3299 case RC_USE_PIXMAP_CACHE:
3300 str = _("Enable the pixmap cache that might improve performance on Mac and Windows.");
3303 case RC_VIEWDVI_PAPEROPTION:
3304 _("Specify the paper command to DVI viewer (leave empty or use \"-paper\")");
3319 // The global instance
3322 // The global copy of the system lyxrc entries (everything except preferences)