X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FLyXRC.cpp;h=dc78e8d3d5039fd3732c7cf53792d4aa567a8307;hb=da640391fc82fab25708a074d54ee4dce1fe26e7;hp=0473ca51cad9de6fb69aa6b1cb09f36163a6a28c;hpb=72b270ab4b146e58c26e202e134408faad8394f4;p=lyx.git diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 0473ca51ca..dc78e8d3d5 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -50,7 +50,7 @@ namespace os = support::os; namespace { // when adding something to this array keep it sorted! -keyword_item lyxrcTags[] = { +LexerKeyword lyxrcTags[] = { { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND }, { "\\allow_geometry_session", LyXRC::RC_GEOMETRY_SESSION }, { "\\alternate_language", LyXRC::RC_ALT_LANG }, @@ -63,6 +63,15 @@ keyword_item lyxrcTags[] = { { "\\bind_file", LyXRC::RC_BINDFILE }, { "\\check_lastfiles", LyXRC::RC_CHECKLASTFILES }, { "\\chktex_command", LyXRC::RC_CHKTEX_COMMAND }, + { "\\completion_cursor_text", LyXRC::RC_COMPLETION_CURSOR_TEXT }, + { "\\completion_inline_delay", LyXRC::RC_COMPLETION_INLINE_DELAY }, + { "\\completion_inline_dots", LyXRC::RC_COMPLETION_INLINE_DOTS }, + { "\\completion_inline_math", LyXRC::RC_COMPLETION_INLINE_MATH }, + { "\\completion_inline_text", LyXRC::RC_COMPLETION_INLINE_TEXT }, + { "\\completion_popup_after_complete", LyXRC::RC_COMPLETION_POPUP_AFTER_COMPLETE }, + { "\\completion_popup_delay", LyXRC::RC_COMPLETION_POPUP_DELAY }, + { "\\completion_popup_math", LyXRC::RC_COMPLETION_POPUP_MATH }, + { "\\completion_popup_text", LyXRC::RC_COMPLETION_POPUP_TEXT }, { "\\converter", LyXRC::RC_CONVERTER }, { "\\converter_cache_maxage", LyXRC::RC_CONVERTER_CACHE_MAXAGE }, { "\\copier", LyXRC::RC_COPIER }, @@ -85,6 +94,8 @@ keyword_item lyxrcTags[] = { { "\\fullscreen_tabbar", LyXRC::RC_FULL_SCREEN_TABBAR }, { "\\fullscreen_toolbars", LyXRC::RC_FULL_SCREEN_TOOLBARS }, { "\\fullscreen_width", LyXRC::RC_FULL_SCREEN_WIDTH }, + { "\\group_layouts", LyXRC::RC_GROUP_LAYOUTS }, + { "\\gui_language", LyXRC::RC_GUI_LANGUAGE }, { "\\index_command", LyXRC::RC_INDEX_COMMAND }, { "\\input", LyXRC::RC_INPUT }, { "\\kbmap", LyXRC::RC_KBMAP }, @@ -100,11 +111,14 @@ keyword_item lyxrcTags[] = { { "\\language_package", LyXRC::RC_LANGUAGE_PACKAGE }, { "\\language_use_babel", LyXRC::RC_LANGUAGE_USE_BABEL }, { "\\load_session", LyXRC::RC_LOADSESSION }, + { "\\mac_like_word_movement", LyXRC::RC_MAC_LIKE_WORD_MOVEMENT }, { "\\macro_edit_style", LyXRC::RC_MACRO_EDIT_STYLE }, { "\\make_backup", LyXRC::RC_MAKE_BACKUP }, { "\\mark_foreign_language", LyXRC::RC_MARK_FOREIGN_LANGUAGE }, { "\\mouse_wheel_speed", LyXRC::RC_MOUSE_WHEEL_SPEED }, + { "\\nomencl_command", LyXRC::RC_NOMENCL_COMMAND }, { "\\num_lastfiles", LyXRC::RC_NUMLASTFILES }, + { "\\open_buffers_in_tabs", LyXRC::RC_OPEN_BUFFERS_IN_TABS }, { "\\path_prefix", LyXRC::RC_PATH_PREFIX }, { "\\personal_dictionary", LyXRC::RC_PERS_DICT }, { "\\plaintext_linelen", LyXRC::RC_PLAINTEXT_LINELEN }, @@ -172,7 +186,7 @@ keyword_item lyxrcTags[] = { { "\\visual_cursor" ,LyXRC::RC_VISUAL_CURSOR} }; -const int lyxrcCount = sizeof(lyxrcTags) / sizeof(keyword_item); +const int lyxrcCount = sizeof(lyxrcTags) / sizeof(lyxrcTags[0]); } // namespace anon @@ -183,7 +197,8 @@ LyXRC::LyXRC() } -void LyXRC::setDefaults() { +void LyXRC::setDefaults() +{ bind_file = "cua"; def_file = "default"; ui_file = "default"; @@ -212,6 +227,7 @@ void LyXRC::setDefaults() { bibtex_command = "bibtex"; fontenc = "default"; index_command = "makeindex -c -q"; + nomencl_command = "makeindex -s nomencl.ist"; dpi = 75; // Because a screen typically is wider than a piece of paper: zoom = 150; @@ -242,7 +258,7 @@ void LyXRC::setDefaults() { load_session = false; make_backup = true; backupdir_path.erase(); - display_graphics = graphics::ColorDisplay; + display_graphics = true; // Spellchecker settings: use_spell_lib = true; isp_command = "ispell"; @@ -264,12 +280,15 @@ void LyXRC::setDefaults() { language_command_begin = "\\selectlanguage{$$lang}"; language_command_local = "\\foreignlanguage{$$lang}{"; sort_layouts = false; + group_layouts = true; default_language = "english"; + gui_language = "auto"; show_banner = true; windows_style_tex_paths = false; tex_allows_spaces = false; date_insert_format = "%x"; cursor_follows_scrollbar = false; + mac_like_word_movement = false; macro_edit_style = MACRO_EDIT_INLINE_BOX; dialogs_iconify_with_main = false; label_init_length = 3; @@ -280,6 +299,10 @@ void LyXRC::setDefaults() { use_tooltip = true; use_pixmap_cache = false; converter_cache_maxage = 6 * 30 * 24 * 3600; // 6 months + user_name = to_utf8(support::user_name()); + user_email = to_utf8(support::user_email()); + open_buffers_in_tabs = true; + // Fullscreen settings full_screen_limit = false; full_screen_toolbars = true; @@ -287,9 +310,15 @@ void LyXRC::setDefaults() { full_screen_scrollbar = true; full_screen_width = 700; - user_name = to_utf8(support::user_name()); - - user_email = to_utf8(support::user_email()); + completion_cursor_text = true; + completion_popup_math = true; + completion_popup_text = false; + completion_popup_delay = 2.0; + completion_popup_after_complete = true; + completion_inline_math = true; + completion_inline_text = false; + completion_inline_dots = -1; + completion_inline_delay = 0.2; } @@ -310,12 +339,13 @@ void oldFontFormat(string & family, string & foundry) int LyXRC::read(FileName const & filename) { - Lexer lexrc(lyxrcTags, lyxrcCount); + Lexer lexrc(lyxrcTags); if (lyxerr.debugging(Debug::PARSER)) lexrc.printTable(lyxerr); lexrc.setFile(filename); - if (!lexrc.isOK()) return -2; + if (!lexrc.isOK()) + return -2; LYXERR(Debug::LYXRC, "Reading '" << filename << "'..."); @@ -325,12 +355,13 @@ int LyXRC::read(FileName const & filename) int LyXRC::read(istream & is) { - Lexer lexrc(lyxrcTags, lyxrcCount); + Lexer lexrc(lyxrcTags); if (lyxerr.debugging(Debug::PARSER)) lexrc.printTable(lyxerr); lexrc.setStream(is); - if (!lexrc.isOK()) return -2; + if (!lexrc.isOK()) + return -2; LYXERR(Debug::LYXRC, "Reading istream..."); @@ -390,33 +421,24 @@ int LyXRC::read(Lexer & lexrc) break; case RC_AUTORESET_OPTIONS: - if (lexrc.next()) { - auto_reset_options = lexrc.getBool(); - } + lexrc >> auto_reset_options; break; case RC_DISPLAY_GRAPHICS: - if (lexrc.next()) { - display_graphics = graphics::displayTranslator().find(lexrc.getString()); - } + if (lexrc.next()) + display_graphics = lexrc.getString() == "true"; break; case RC_TEX_EXPECTS_WINDOWS_PATHS: - if (lexrc.next()) { - windows_style_tex_paths = lexrc.getBool(); - } + lexrc >> windows_style_tex_paths; break; case RC_TEX_ALLOWS_SPACES: - if (lexrc.next()) { - tex_allows_spaces = lexrc.getBool(); - } + lexrc >> tex_allows_spaces; break; case RC_KBMAP: - if (lexrc.next()) { - use_kbmap = lexrc.getBool(); - } + lexrc >> use_kbmap; break; case RC_KBMAP_PRIMARY: @@ -448,75 +470,53 @@ int LyXRC::read(Lexer & lexrc) break; case RC_FONT_ENCODING: - if (lexrc.next()) { - fontenc = lexrc.getString(); - } + lexrc >> fontenc; break; case RC_PRINTER: - if (lexrc.next()) { - printer = lexrc.getString(); - } + lexrc >> printer; break; case RC_PRINT_COMMAND: - if (lexrc.next()) { + if (lexrc.next(true)) { print_command = lexrc.getString(); } break; case RC_PRINTEVENPAGEFLAG: - if (lexrc.next()) { - print_evenpage_flag = lexrc.getString(); - } + lexrc >> print_evenpage_flag; break; case RC_PRINTODDPAGEFLAG: - if (lexrc.next()) { - print_oddpage_flag = lexrc.getString(); - } + lexrc >> print_oddpage_flag; break; case RC_PRINTPAGERANGEFLAG: - if (lexrc.next()) { - print_pagerange_flag = lexrc.getString(); - } + lexrc >> print_pagerange_flag; break; case RC_PRINTCOPIESFLAG: - if (lexrc.next()) { - print_copies_flag = lexrc.getString(); - } + lexrc >> print_copies_flag; break; case RC_PRINTCOLLCOPIESFLAG: - if (lexrc.next()) { - print_collcopies_flag = lexrc.getString(); - } + lexrc >> print_collcopies_flag; break; case RC_PRINTREVERSEFLAG: - if (lexrc.next()) { - print_reverse_flag = lexrc.getString(); - } + lexrc >> print_reverse_flag; break; case RC_PRINTLANDSCAPEFLAG: - if (lexrc.next()) { - print_landscape_flag = lexrc.getString(); - } + lexrc >> print_landscape_flag; break; case RC_PRINTTOPRINTER: - if (lexrc.next()) { - print_to_printer = lexrc.getString(); - } + lexrc >> print_to_printer; break; case RC_PRINT_ADAPTOUTPUT: - if (lexrc.next()) { - print_adapt_output = lexrc.getBool(); - } + lexrc >> print_adapt_output; break; case RC_PRINTTOFILE: @@ -526,181 +526,123 @@ int LyXRC::read(Lexer & lexrc) break; case RC_PRINTFILEEXTENSION: - if (lexrc.next()) { - print_file_extension = lexrc.getString(); - } + lexrc >> print_file_extension; break; case RC_PRINTEXSTRAOPTIONS: - if (lexrc.next()) { - print_extra_options = lexrc.getString(); - } + lexrc >> print_extra_options; break; case RC_PRINTSPOOL_COMMAND: - if (lexrc.next()) { + if (lexrc.next(true)) { print_spool_command = lexrc.getString(); } break; case RC_PRINTSPOOL_PRINTERPREFIX: - if (lexrc.next()) { - print_spool_printerprefix = lexrc.getString(); - } + lexrc >> print_spool_printerprefix; break; case RC_PRINTPAPERDIMENSIONFLAG: - if (lexrc.next()) { - print_paper_dimension_flag = lexrc.getString(); - } + lexrc >> print_paper_dimension_flag; break; case RC_PRINTPAPERFLAG: - if (lexrc.next()) { - print_paper_flag = lexrc.getString(); - } + lexrc >> print_paper_flag; break; case RC_CUSTOM_EXPORT_COMMAND: - if (lexrc.next()) { - custom_export_command = lexrc.getString(); - } + lexrc >> custom_export_command; break; case RC_CUSTOM_EXPORT_FORMAT: - if (lexrc.next()) { - custom_export_format = lexrc.getString(); - } + lexrc >> custom_export_format; break; case RC_DEFAULT_PAPERSIZE: if (lexrc.next()) { - string const size = - ascii_lowercase(lexrc.getString()); + string const size = ascii_lowercase(lexrc.getString()); if (size == "usletter") - default_papersize = - PAPER_USLETTER; + default_papersize = PAPER_USLETTER; else if (size == "legal") - default_papersize = - PAPER_USLEGAL; + default_papersize = PAPER_USLEGAL; else if (size == "executive") - default_papersize = - PAPER_USEXECUTIVE; + default_papersize = PAPER_USEXECUTIVE; else if (size == "a3") - default_papersize = - PAPER_A3; + default_papersize = PAPER_A3; else if (size == "a4") - default_papersize = - PAPER_A4; + default_papersize = PAPER_A4; else if (size == "a5") - default_papersize = - PAPER_A5; + default_papersize = PAPER_A5; else if (size == "b5") - default_papersize = - PAPER_B5; + default_papersize = PAPER_B5; else if (size == "default") - default_papersize = - PAPER_DEFAULT; + default_papersize = PAPER_DEFAULT; } break; case RC_VIEWDVI_PAPEROPTION: - if (lexrc.next()) { + if (lexrc.next()) view_dvi_paper_option = lexrc.getString(); - } else { + else view_dvi_paper_option.erase(); - } break; case RC_CHKTEX_COMMAND: - if (lexrc.next()) { + if (lexrc.next(true)) { chktex_command = lexrc.getString(); } break; case RC_BIBTEX_COMMAND: - if (lexrc.next()) { + if (lexrc.next(true)) { bibtex_command = lexrc.getString(); } break; case RC_INDEX_COMMAND: - if (lexrc.next()) { + if (lexrc.next(true)) { index_command = lexrc.getString(); } break; - case RC_SCREEN_DPI: - if (lexrc.next()) { - dpi = lexrc.getInteger(); + case RC_NOMENCL_COMMAND: + if (lexrc.next(true)) { + nomencl_command = lexrc.getString(); } break; + case RC_SCREEN_DPI: + lexrc >> dpi; + break; + case RC_SCREEN_ZOOM: - if (lexrc.next()) { - zoom = lexrc.getInteger(); - } + lexrc >> zoom; break; case RC_GEOMETRY_SESSION: - if (lexrc.next()) { - allow_geometry_session = lexrc.getBool(); - } + lexrc >> allow_geometry_session; break; case RC_SCREEN_FONT_SIZES: - if (lexrc.next()) { - font_sizes[FONT_SIZE_TINY] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_SCRIPT] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_FOOTNOTE] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_SMALL] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_NORMAL] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_LARGE] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_LARGER] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_LARGEST] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_HUGE] = - lexrc.getString(); - } - if (lexrc.next()) { - font_sizes[FONT_SIZE_HUGER] = - lexrc.getString(); - } + lexrc >> font_sizes[FONT_SIZE_TINY]; + lexrc >> font_sizes[FONT_SIZE_SCRIPT]; + lexrc >> font_sizes[FONT_SIZE_FOOTNOTE]; + lexrc >> font_sizes[FONT_SIZE_SMALL]; + lexrc >> font_sizes[FONT_SIZE_NORMAL]; + lexrc >> font_sizes[FONT_SIZE_LARGE]; + lexrc >> font_sizes[FONT_SIZE_LARGER]; + lexrc >> font_sizes[FONT_SIZE_LARGEST]; + lexrc >> font_sizes[FONT_SIZE_HUGE]; + lexrc >> font_sizes[FONT_SIZE_HUGER]; break; case RC_SCREEN_FONT_SCALABLE: - if (lexrc.next()) { - use_scalable_fonts = lexrc.getBool(); - } + lexrc >> use_scalable_fonts; break; case RC_AUTOSAVE: - if (lexrc.next()) { - autosave = lexrc.getInteger(); - } + lexrc >> autosave; break; case RC_DOCUMENTPATH: @@ -732,39 +674,64 @@ int LyXRC::read(Lexer & lexrc) break; case RC_USETEMPDIR: - if (lexrc.next()) { - lyxerr << "Ignoring obsolete use_tempdir flag." << endl; - } + if (lexrc.next()) + LYXERR0("Ignoring obsolete use_tempdir flag."); break; case RC_USELASTFILEPOS: - if (lexrc.next()) { - use_lastfilepos = lexrc.getBool(); - } + lexrc >> use_lastfilepos; break; case RC_LOADSESSION: - if (lexrc.next()) { - load_session = lexrc.getBool(); - } + lexrc >> load_session; break; case RC_MOUSE_WHEEL_SPEED: - if (lexrc.next()) { - mouse_wheel_speed = lexrc.getFloat(); - } + lexrc >> mouse_wheel_speed; + break; + + case RC_COMPLETION_INLINE_DELAY: + lexrc >> completion_inline_delay; + break; + + case RC_COMPLETION_INLINE_MATH: + lexrc >> completion_inline_math; + break; + + case RC_COMPLETION_INLINE_TEXT: + lexrc >> completion_inline_text; + break; + + case RC_COMPLETION_INLINE_DOTS: + lexrc >> completion_inline_dots; + break; + + case RC_COMPLETION_POPUP_DELAY: + lexrc >> completion_popup_delay; + break; + + case RC_COMPLETION_POPUP_MATH: + lexrc >> completion_popup_math; + break; + + case RC_COMPLETION_POPUP_TEXT: + lexrc >> completion_popup_text; + break; + + case RC_COMPLETION_CURSOR_TEXT: + lexrc >> completion_cursor_text; + break; + + case RC_COMPLETION_POPUP_AFTER_COMPLETE: + lexrc >> completion_popup_after_complete; break; case RC_NUMLASTFILES: - if (lexrc.next()) { - num_lastfiles = lexrc.getInteger(); - } + lexrc >> num_lastfiles; break; case RC_CHECKLASTFILES: - if (lexrc.next()) { - check_lastfiles = lexrc.getBool(); - } + lexrc >> check_lastfiles; break; case RC_SCREEN_FONT_ROMAN: @@ -791,40 +758,29 @@ int LyXRC::read(Lexer & lexrc) break; case RC_SCREEN_FONT_ROMAN_FOUNDRY: - if (lexrc.next()) { - roman_font_foundry = lexrc.getString(); - } + lexrc >> roman_font_foundry; break; case RC_SCREEN_FONT_SANS_FOUNDRY: - if (lexrc.next()) { - sans_font_foundry = lexrc.getString(); - } + lexrc >> sans_font_foundry; break; case RC_SCREEN_FONT_TYPEWRITER_FOUNDRY: - if (lexrc.next()) { - typewriter_font_foundry = lexrc.getString(); - } + lexrc >> typewriter_font_foundry; break; - case RC_SET_COLOR: - { - string lyx_name, x11_name; - - if (lexrc.next()) { - lyx_name = lexrc.getString(); - } else { + case RC_SET_COLOR: { + if (!lexrc.next()) { lexrc.printError("Missing color tag."); break; } + string lyx_name = lexrc.getString(); - if (lexrc.next()) { - x11_name = lexrc.getString(); - } else { + if (!lexrc.next()) { lexrc.printError("Missing color name for color: `$$Token'"); break; } + string x11_name = lexrc.getString(); ColorCode const col = lcolor.getFromLyXName(lyx_name); @@ -833,18 +789,14 @@ int LyXRC::read(Lexer & lexrc) col == Color_ignore) break; - if (!lcolor.setColor(col, x11_name)) { - lyxerr << "Bad lyxrc set_color for " - << lyx_name << endl; - - } + if (!lcolor.setColor(col, x11_name)) + LYXERR0("Bad lyxrc set_color for " << lyx_name); break; } + case RC_AUTOREGIONDELETE: // Auto region delete defaults to true - if (lexrc.next()) { - auto_region_delete = lexrc.getBool(); - } + lexrc >> auto_region_delete; break; case RC_SERVERPIPE: @@ -855,9 +807,11 @@ int LyXRC::read(Lexer & lexrc) break; case RC_CURSOR_FOLLOWS_SCROLLBAR: - if (lexrc.next()) { - cursor_follows_scrollbar = lexrc.getBool(); - } + lexrc >> cursor_follows_scrollbar; + break; + + case RC_MAC_LIKE_WORD_MOVEMENT: + lexrc >> mac_like_word_movement; break; case RC_MACRO_EDIT_STYLE: @@ -871,86 +825,58 @@ int LyXRC::read(Lexer & lexrc) break; case RC_DIALOGS_ICONIFY_WITH_MAIN: - if (lexrc.next()) { - dialogs_iconify_with_main = lexrc.getBool(); - } + lexrc >> dialogs_iconify_with_main; break; case RC_PLAINTEXT_ROFF_COMMAND: - if (lexrc.next()) { + if (lexrc.next(true)) { plaintext_roff_command = lexrc.getString(); } break; case RC_PLAINTEXT_LINELEN: - if (lexrc.next()) { - plaintext_linelen = lexrc.getInteger(); - } + lexrc >> plaintext_linelen; break; // Spellchecker settings: case RC_USE_SPELL_LIB: - if (lexrc.next()) { - use_spell_lib = lexrc.getBool(); - } + lexrc >> use_spell_lib; break; case RC_SPELL_COMMAND: - if (lexrc.next()) { + if (lexrc.next(true)) isp_command = lexrc.getString(); - } break; case RC_ACCEPT_COMPOUND: - if (lexrc.next()) { - isp_accept_compound = lexrc.getBool(); - } + lexrc >> isp_accept_compound; break; case RC_USE_INP_ENC: - if (lexrc.next()) { - isp_use_input_encoding = lexrc.getBool(); - } + lexrc >> isp_use_input_encoding; break; case RC_USE_ALT_LANG: - if (lexrc.next()) { - isp_use_alt_lang = lexrc.getBool(); - } + lexrc >> isp_use_alt_lang; break; case RC_USE_PERS_DICT: - if (lexrc.next()) { - isp_use_pers_dict = lexrc.getBool(); - } + lexrc >> isp_use_pers_dict; break; case RC_USE_TOOLTIP: - if (lexrc.next()) { - use_tooltip = lexrc.getBool(); - } + lexrc >> use_tooltip; break; case RC_USE_PIXMAP_CACHE: - if (lexrc.next()) { - use_pixmap_cache = lexrc.getBool(); - } + lexrc >> use_pixmap_cache; break; case RC_USE_ESC_CHARS: - if (lexrc.next()) { - isp_use_esc_chars = lexrc.getBool(); - } + lexrc >> isp_use_esc_chars; break; case RC_ALT_LANG: - if (lexrc.next()) { - isp_alt_lang = lexrc.getString(); - } + lexrc >> isp_alt_lang; break; case RC_PERS_DICT: - if (lexrc.next()) { + if (lexrc.next()) isp_pers_dict = os::internal_path(lexrc.getString()); - } break; case RC_ESC_CHARS: - if (lexrc.next()) { - isp_esc_chars = lexrc.getString(); - } + lexrc >> isp_esc_chars; break; case RC_MAKE_BACKUP: - if (lexrc.next()) { - make_backup = lexrc.getBool(); - } + lexrc >> make_backup; break; case RC_BACKUPDIR_PATH: if (lexrc.next()) { @@ -959,134 +885,85 @@ int LyXRC::read(Lexer & lexrc) } break; case RC_DATE_INSERT_FORMAT: - if (lexrc.next()) { - date_insert_format = lexrc.getString(); - } + lexrc >> date_insert_format; break; case RC_LANGUAGE_PACKAGE: - if (lexrc.next()) { - language_package = lexrc.getString(); - } + lexrc >> language_package; break; case RC_LANGUAGE_AUTO_BEGIN: - if (lexrc.next()) { - language_auto_begin = lexrc.getBool(); - } + lexrc >> language_auto_begin; break; case RC_LANGUAGE_AUTO_END: - if (lexrc.next()) { - language_auto_end = lexrc.getBool(); - } + lexrc >> language_auto_end; break; case RC_LANGUAGE_GLOBAL_OPTIONS: - if (lexrc.next()) { - language_global_options = lexrc.getBool(); - } + lexrc >> language_global_options; break; case RC_LANGUAGE_USE_BABEL: - if (lexrc.next()) { - language_use_babel = lexrc.getBool(); - } + lexrc >> language_use_babel; break; case RC_LANGUAGE_COMMAND_BEGIN: - if (lexrc.next()) { - language_command_begin = lexrc.getString(); - } + lexrc >> language_command_begin; break; case RC_LANGUAGE_COMMAND_END: - if (lexrc.next()) { - language_command_end = lexrc.getString(); - } + lexrc >> language_command_end; break; case RC_LANGUAGE_COMMAND_LOCAL: - if (lexrc.next()) { - language_command_local = lexrc.getString(); - } + lexrc >> language_command_local; break; case RC_RTL_SUPPORT: - if (lexrc.next()) { - rtl_support = lexrc.getBool(); - } + lexrc >> rtl_support; break; case RC_VISUAL_CURSOR: - if (lexrc.next()) { - visual_cursor = lexrc.getBool(); - } + lexrc >> visual_cursor; break; case RC_AUTO_NUMBER: - if (lexrc.next()) { - auto_number = lexrc.getBool(); - } + lexrc >> auto_number; break; case RC_MARK_FOREIGN_LANGUAGE: - if (lexrc.next()) { - mark_foreign_language = lexrc.getBool(); - } + lexrc >> mark_foreign_language; break; case RC_COPIER: { string fmt, command; - if (lexrc.next()) { + if (lexrc.next()) fmt = lexrc.getString(); - } - if (lexrc.next()) { + if (lexrc.next(true)) command = lexrc.getString(); - } setMover(fmt, command); break; } case RC_CONVERTER: { string from, to, command, flags; - if (lexrc.next()) { + if (lexrc.next()) from = lexrc.getString(); - } - if (lexrc.next()) { + if (lexrc.next()) to = lexrc.getString(); - } - if (lexrc.next()) { + if (lexrc.next(true)) command = lexrc.getString(); - } - if (lexrc.next()) { + if (lexrc.next()) flags = lexrc.getString(); - } - if (command.empty()) { + if (command.empty()) theConverters().erase(from, to); - } else { + else theConverters().add(from, to, command, flags); - } break; } // compatibility with versions older than 1.4.0 only case RC_VIEWER: { string format, command; - if (lexrc.next()) { - format = lexrc.getString(); - } - if (lexrc.next()) { - command = lexrc.getString(); - } + lexrc >> format >> command; formats.setViewer(format, command); break; } case RC_FORMAT: { string format, extension, prettyname, shortcut; - if (lexrc.next()) { - format = lexrc.getString(); - } - if (lexrc.next()) { - extension = lexrc.getString(); - } - if (lexrc.next()) { - prettyname = lexrc.getString(); - } - if (lexrc.next()) { - shortcut = lexrc.getString(); - } + lexrc >> format >> extension >> prettyname >> shortcut; string viewer, editor; - if (lexrc.next()) + if (lexrc.next(true)) viewer = lexrc.getString(); - if (lexrc.next()) + if (lexrc.next(true)) editor = lexrc.getString(); string flags; // Hack to ensure compatibility with versions older @@ -1112,17 +989,15 @@ int LyXRC::read(Lexer & lexrc) else if (flag == "vector") flgs |= Format::vector; else - lyxerr << "Ignoring unknown flag `" + LYXERR0("Ignoring unknown flag `" << flag << "' for format `" - << format << "'." << endl; + << format << "'."); } if (prettyname.empty()) { - if (theConverters().formatIsUsed(format)) { - lyxerr << "Can't delete format " - << format << endl; - } else { + if (theConverters().formatIsUsed(format)) + LYXERR0("Can't delete format " << format); + else formats.erase(format); - } } else { formats.add(format, extension, prettyname, shortcut, viewer, editor, flgs); @@ -1130,21 +1005,19 @@ int LyXRC::read(Lexer & lexrc) break; } case RC_DEFAULT_LANGUAGE: - if (lexrc.next()) { - default_language = lexrc.getString(); - } + lexrc >> default_language; + break; + + case RC_GUI_LANGUAGE: + lexrc >> gui_language; break; case RC_LABEL_INIT_LENGTH: - if (lexrc.next()) { - label_init_length = lexrc.getInteger(); - } + lexrc >> label_init_length; break; case RC_SHOW_BANNER: - if (lexrc.next()) { - show_banner = lexrc.getBool(); - } + lexrc >> show_banner; break; case RC_PREVIEW: @@ -1157,77 +1030,65 @@ int LyXRC::read(Lexer & lexrc) else { preview = PREVIEW_OFF; if (tmp != "false" && tmp != "off") - lyxerr << "Unrecognized " - "preview status \"" - << tmp << '\n' << endl; + LYXERR0("Unrecognized preview status \"" + << tmp << '\n'); } } break; case RC_PREVIEW_HASHED_LABELS: - if (lexrc.next()) { - preview_hashed_labels = lexrc.getBool(); - } + lexrc >> preview_hashed_labels; break; case RC_PREVIEW_SCALE_FACTOR: - if (lexrc.next()) { - preview_scale_factor = lexrc.getString(); - } + lexrc >> preview_scale_factor; break; case RC_USER_NAME: - if (lexrc.next()) - user_name = lexrc.getString(); + lexrc >> user_name; break; - case RC_USER_EMAIL: - if (lexrc.next()) - user_email = lexrc.getString(); + lexrc >> user_email; break; case RC_PATH_PREFIX: - if (lexrc.next()) - path_prefix = lexrc.getString(); + lexrc >> path_prefix; break; case RC_USE_CONVERTER_CACHE: - if (lexrc.next()) - use_converter_cache = lexrc.getBool(); + lexrc >> use_converter_cache; break; - case RC_CONVERTER_CACHE_MAXAGE: - if (lexrc.next()) - converter_cache_maxage = - convert(lexrc.getString()); + lexrc >> converter_cache_maxage; break; case RC_SORT_LAYOUTS: - if (lexrc.next()) - sort_layouts = lexrc.getBool(); + lexrc >> sort_layouts; + break; + case RC_GROUP_LAYOUTS: + lexrc >> group_layouts; break; case RC_FULL_SCREEN_LIMIT: - if (lexrc.next()) - full_screen_limit = lexrc.getBool(); + lexrc >> full_screen_limit; break; case RC_FULL_SCREEN_TOOLBARS: - if (lexrc.next()) - full_screen_toolbars = lexrc.getBool(); + lexrc >> full_screen_toolbars; break; case RC_FULL_SCREEN_SCROLLBAR: - if (lexrc.next()) - full_screen_scrollbar = lexrc.getBool(); + lexrc >> full_screen_scrollbar; break; case RC_FULL_SCREEN_TABBAR: - if (lexrc.next()) - full_screen_tabbar = lexrc.getBool(); + lexrc >> full_screen_tabbar; break; case RC_FULL_SCREEN_WIDTH: - if (lexrc.next()) - full_screen_width = lexrc.getInteger(); + lexrc >> full_screen_width; + break; + case RC_OPEN_BUFFERS_IN_TABS: + lexrc >> open_buffers_in_tabs; break; - case RC_LAST: break; // this is just a dummy + case RC_LAST: + break; // this is just a dummy } } @@ -1274,6 +1135,17 @@ private: }; +namespace { + + // Escape \ and " so that LyXLex can read the string later + string escapeCommand(string const & str) { + return subst(subst(str , "\\", "\\\\"), + "\"", "\\\""); + } + +} + + void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) const { LyXRCTags tag = RC_LAST; @@ -1285,21 +1157,12 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag == RC_LAST) - os << "### This file is part of\n" - << "### ========================================================\n" - << "### LyX, The Document Processor\n" - << "###\n" - << "### Copyright 1995 Matthias Ettrich\n" - << "### Copyright 1995-2007 The LyX Team.\n" - << "###\n" - << "### ========================================================\n" - << "\n" - << "# This file is written by LyX, if you want to make your own\n" + os << "# This file is written by LyX, if you want to make your own\n" << "# modifications you should do them from inside LyX and save\n" << "\n"; // Why the switch you might ask. It is a trick to ensure that all - // the elements in the LyXRCTags enum is handled. As you can see + // the elements in the LyXRCTags enum are handled. As you can see // there are no breaks at all. So it is just a huge fall-through. // The nice thing is that we will get a warning from the compiler // if we forget an element. @@ -1381,10 +1244,9 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c if (ignore_system_lyxrc || display_graphics != system_lyxrc.display_graphics) { os << "# Display graphics within LyX\n" - << "# monochrome|grayscale|color|none\n" + << "# true|false\n" << "\\display_graphics " - << graphics::displayTranslator().find( - graphics::DisplayType(display_graphics)) + << (display_graphics ? "true" : "false") << '\n'; } if (tag != RC_LAST) @@ -1397,6 +1259,14 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_GROUP_LAYOUTS: + if (ignore_system_lyxrc || + group_layouts != system_lyxrc.group_layouts) { + os << "# Group layouts by their category.\n" + << "\\group_layouts " << convert(group_layouts) << '\n'; + } + if (tag != RC_LAST) + break; case RC_VIEWDVI_PAPEROPTION: if (ignore_system_lyxrc || view_dvi_paper_option @@ -1441,21 +1311,28 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_CHKTEX_COMMAND: if (ignore_system_lyxrc || chktex_command != system_lyxrc.chktex_command) { - os << "\\chktex_command \"" << chktex_command << "\"\n"; + os << "\\chktex_command \"" << escapeCommand(chktex_command) << "\"\n"; } if (tag != RC_LAST) break; case RC_BIBTEX_COMMAND: if (ignore_system_lyxrc || bibtex_command != system_lyxrc.bibtex_command) { - os << "\\bibtex_command \"" << bibtex_command << "\"\n"; + os << "\\bibtex_command \"" << escapeCommand(bibtex_command) << "\"\n"; } if (tag != RC_LAST) break; case RC_INDEX_COMMAND: if (ignore_system_lyxrc || index_command != system_lyxrc.index_command) { - os << "\\index_command \"" << index_command << "\"\n"; + os << "\\index_command \"" << escapeCommand(index_command) << "\"\n"; + } + if (tag != RC_LAST) + break; + case RC_NOMENCL_COMMAND: + if (ignore_system_lyxrc || + nomencl_command != system_lyxrc.nomencl_command) { + os << "\\nomencl_command \"" << escapeCommand(nomencl_command) << "\"\n"; } if (tag != RC_LAST) break; @@ -1632,6 +1509,15 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_MAC_LIKE_WORD_MOVEMENT: + if (ignore_system_lyxrc || + mac_like_word_movement + != system_lyxrc.mac_like_word_movement) { + os << "\\mac_like_word_movement " + << convert(mac_like_word_movement) << '\n'; + } + if (tag != RC_LAST) + break; case RC_MACRO_EDIT_STYLE: if (ignore_system_lyxrc || macro_edit_style @@ -1796,19 +1682,26 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_OPEN_BUFFERS_IN_TABS: + if (ignore_system_lyxrc || + open_buffers_in_tabs != system_lyxrc.open_buffers_in_tabs) { + os << "\\open_buffers_in_tabs " + << convert(open_buffers_in_tabs) + << '\n'; + } + if (tag != RC_LAST) + break; - - os << "\n#\n" - << "# COLOR SECTION ###################################\n" - << "#\n\n"; + os << "\n#\n" + << "# COLOR SECTION ###################################\n" + << "#\n\n"; case RC_SET_COLOR: for (int i = 0; i < Color_ignore; ++i) { ColorCode lc = static_cast(i); - - string const col(lcolor.getX11Name(lc)); - if (ignore_system_lyxrc || - col != system_lcolor.getX11Name(lc)) { + string const col = lcolor.getX11Name(lc); + if (ignore_system_lyxrc + || col != system_lcolor.getX11Name(lc)) { os << "\\set_color \"" << lcolor.getLyXName(lc) << "\" \"" << col << "\"\n"; @@ -1840,7 +1733,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_PRINT_COMMAND: if (ignore_system_lyxrc || print_command != system_lyxrc.print_command) { - os << "\\print_command \"" << print_command << "\"\n"; + os << "\\print_command \"" << escapeCommand(print_command) << "\"\n"; } if (tag != RC_LAST) break; @@ -1855,7 +1748,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_PRINTSPOOL_COMMAND: if (ignore_system_lyxrc || print_spool_command != system_lyxrc.print_spool_command) { - os << "\\print_spool_command \"" << print_spool_command + os << "\\print_spool_command \"" << escapeCommand(print_spool_command) << "\"\n"; } if (tag != RC_LAST) @@ -2041,6 +1934,77 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_COMPLETION_INLINE_DELAY: + if (ignore_system_lyxrc || + completion_inline_delay != system_lyxrc.completion_inline_delay) { + os << "\\completion_inline_delay " << completion_inline_delay << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_INLINE_MATH: + if (ignore_system_lyxrc || + completion_inline_math != system_lyxrc.completion_inline_math) { + os << "\\completion_inline_math " + << convert(completion_inline_math) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_INLINE_TEXT: + if (ignore_system_lyxrc || + completion_inline_text != system_lyxrc.completion_inline_text) { + os << "\\completion_inline_text " + << convert(completion_inline_text) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_INLINE_DOTS: + if (ignore_system_lyxrc || + completion_inline_dots != system_lyxrc.completion_inline_dots) { + os << "\\completion_inline_dots " + << convert(completion_inline_dots) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_DELAY: + if (ignore_system_lyxrc || + completion_popup_delay != system_lyxrc.completion_popup_delay) { + os << "\\completion_popup_delay " << completion_popup_delay << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_MATH: + if (ignore_system_lyxrc || + completion_popup_math != system_lyxrc.completion_popup_math) { + os << "\\completion_popup_math " + << convert(completion_popup_math) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_TEXT: + if (ignore_system_lyxrc || + completion_popup_text != system_lyxrc.completion_popup_text) { + os << "\\completion_popup_text " + << convert(completion_popup_text) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_CURSOR_TEXT: + if (ignore_system_lyxrc || + completion_cursor_text != system_lyxrc.completion_cursor_text) { + os << "\\completion_cursor_text " + << convert(completion_cursor_text) << '\n'; + } + if (tag != RC_LAST) + break; + case RC_COMPLETION_POPUP_AFTER_COMPLETE: + if (ignore_system_lyxrc || + completion_popup_after_complete + != system_lyxrc.completion_popup_after_complete) { + os << "\\completion_popup_after_complete " + << convert(completion_popup_after_complete) << '\n'; + } + if (tag != RC_LAST) + break; case RC_NUMLASTFILES: if (ignore_system_lyxrc || num_lastfiles != system_lyxrc.num_lastfiles) { @@ -2114,7 +2078,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_PLAINTEXT_ROFF_COMMAND: if (ignore_system_lyxrc || plaintext_roff_command != system_lyxrc.plaintext_roff_command) { - os << "\\plaintext_roff_command \"" << plaintext_roff_command + os << "\\plaintext_roff_command \"" << escapeCommand(plaintext_roff_command) << "\"\n"; } if (tag != RC_LAST) @@ -2133,7 +2097,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_SPELL_COMMAND: if (ignore_system_lyxrc || isp_command != system_lyxrc.isp_command) { - os << "\\spell_command \"" << isp_command << "\"\n"; + os << "\\spell_command \"" << escapeCommand(isp_command) << "\"\n"; } if (tag != RC_LAST) break; @@ -2335,6 +2299,13 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c } if (tag != RC_LAST) break; + case RC_GUI_LANGUAGE: + if (ignore_system_lyxrc || + gui_language != system_lyxrc.gui_language) { + os << "\\gui_language " << gui_language << '\n'; + } + if (tag != RC_LAST) + break; os << "\n#\n" << "# FORMATS SECTION ##########################\n" @@ -2358,8 +2329,8 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c << cit->extension() << "\" \"" << cit->prettyname() << "\" \"" << cit->shortcut() << "\" \"" - << cit->viewer() << "\" \"" - << cit->editor() << "\" \""; + << escapeCommand(cit->viewer()) << "\" \"" + << escapeCommand(cit->editor()) << "\" \""; vector flags; if (cit->documentFormat()) flags.push_back("document"); @@ -2399,7 +2370,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c converter->flags != cit->flags) os << "\\converter \"" << cit->from << "\" \"" << cit->to << "\" \"" - << cit->command << "\" \"" + << escapeCommand(cit->command) << "\" \"" << cit->flags << "\"\n"; } @@ -2433,7 +2404,7 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c it->second.command(); os << "\\copier " << fmt - << " \"" << command << "\"\n"; + << " \"" << escapeCommand(command) << "\"\n"; } } if (tag != RC_LAST) @@ -2516,6 +2487,10 @@ string const LyXRC::getDescription(LyXRCTags tag) 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."); break; + case RC_MAC_LIKE_WORD_MOVEMENT: + str = _("Use the Mac OS X conventions for the word-level cursor movement"); + break; + case RC_SHOW_MACRO_LABEL: str = _("Show a small box around a Math Macro with the macro name when the cursor is inside."); break; @@ -2575,6 +2550,10 @@ string const LyXRC::getDescription(LyXRCTags tag) 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\"."); break; + case RC_NOMENCL_COMMAND: + str = _("Define the options of makeindex (cf. man makeindex) to be used for nomenclatures. This might differ from the index processing options."); + break; + case RC_INPUT: break; @@ -2637,10 +2616,46 @@ string const LyXRC::getDescription(LyXRCTags tag) break; case RC_MOUSE_WHEEL_SPEED: - str = bformat(_("The scrolling speed of the mouse wheel. "), + str = bformat(_("The scrolling speed of the mouse wheel."), maxlastfiles); break; + case RC_COMPLETION_POPUP_DELAY: + str = _("The completion popup delay."); + break; + + case RC_COMPLETION_POPUP_MATH: + str = _("Select to display the completion popup in math mode."); + break; + + case RC_COMPLETION_POPUP_TEXT: + str = _("Select to display the completion popup in text mode."); + break; + + case RC_COMPLETION_POPUP_AFTER_COMPLETE: + str = _("Show the completion popup without delay after non-unique completion attempt."); + break; + + case RC_COMPLETION_POPUP_TEXT: + str = _("Show a small triangle on the cursor to indicate that a completion is available."); + break; + + case RC_COMPLETION_POPUP_DELAY: + str = _("The inline completion delay."); + break; + + case RC_COMPLETION_INLINE_MATH: + str = _("Select to display the inline completion in math mode."); + break; + + case RC_COMPLETION_INLINE_TEXT: + str = _("Select to display the inline completion in text mode."); + break; + + case RC_COMPLETION_INLINE_DOTS: + str = _("Use \"...\" to shorten long completions."); + break; + case RC_NUMLASTFILES: str = bformat(_("Maximal number of lastfiles. Up to %1$d can appear in the file menu."), maxlastfiles);