[LyX/master] Use string value rather than int for \language_package_selection pref
Juergen Spitzmueller <[email protected]> Fri, 24 Apr 2026 11:18:46 +0000
| Newsgroups | gmane.editors.lyx.cvs |
|---|---|
| Message-ID | <[email protected]> |
commit d525f108a1a18023b08acde10ec654cd041340a4 Author: Juergen Spitzmueller <[email protected]> Date: Fri Apr 24 13:17:18 2026 +0200 Use string value rather than int for \language_package_selection pref The int is obscure and bound to result in bugs --- lib/configure.py | 2 +- lib/scripts/prefs2prefs_prefs.py | 24 ++++++++++++++++++++++- src/LaTeXFeatures.cpp | 12 ++++-------- src/LyXRC.cpp | 36 +++++------------------------------ src/LyXRC.h | 9 +-------- src/frontends/qt/GuiPrefs.cpp | 27 ++++++++++++++------------ src/frontends/qt/ui/PrefLanguageUi.ui | 22 +-------------------- 7 files changed, 50 insertions(+), 82 deletions(-) diff --git a/lib/configure.py b/lib/configure.py index 9f0d3eecf4..8561a51b7f 100644 --- a/lib/configure.py +++ b/lib/configure.py @@ -2081,7 +2081,7 @@ if __name__ == '__main__': lyx_check_config = True lyx_kpsewhich = True outfile = 'lyxrc.defaults' - lyxrc_fileformat = 39 + lyxrc_fileformat = 41 rc_entries = '' lyx_keep_temps = False version_suffix = '' diff --git a/lib/scripts/prefs2prefs_prefs.py b/lib/scripts/prefs2prefs_prefs.py index a8e5e3a118..c6807ceb08 100644 --- a/lib/scripts/prefs2prefs_prefs.py +++ b/lib/scripts/prefs2prefs_prefs.py @@ -178,6 +178,9 @@ # Incremented to format 40 # Rename \experimental:bookmarks_visibility to \bookmarks_visibility +# Incremented to format 41, by spitz +# Use proper string values for \language_package_selection + # NOTE: The format should also be updated in LYXRC.cpp and # in configure.py (search for lyxrc_fileformat). @@ -529,6 +532,24 @@ def bookmarks_visibility(line): #################################### +################################# +# Conversions from LyX 2.5 to 2.6 + +def rename_langpack(line): + line = line.lower() + if not line.startswith("\\language_package_selection "): + return no_match + line = line.replace('0', '"auto"') + line = line.replace('1', '"babel"') + line = line.replace('2', '"custom"') + line = line.replace('3', '"none"') + return (True, line) + + +# End conversions for LyX 2.5 to 2.6 +#################################### + + ############################################################ # Format-conversion map. Also add empty format changes here. @@ -578,5 +599,6 @@ conversions = [ [ 37, [remove_fullscreen_widthlimit]], [ 38, []], [ 39, []], - [ 40, [bookmarks_visibility]], + [ 40, [bookmarks_visibility]], + [ 41, [rename_langpack]] ] diff --git a/src/LaTeXFeatures.cpp b/src/LaTeXFeatures.cpp index 4bc7f7af4e..cc61cc5f59 100644 --- a/src/LaTeXFeatures.cpp +++ b/src/LaTeXFeatures.cpp @@ -621,23 +621,19 @@ LaTeXFeatures::LangPackage LaTeXFeatures::langPackage() const } if (local_lp == "default") { - switch (lyxrc.language_package_selection) { - case LyXRC::LP_AUTO: + if (lyxrc.language_package_selection == "auto") { // polyglossia requirement has priority over babel if (polyglossia_required) return LANG_PACK_POLYGLOSSIA; else if (babel_required) return LANG_PACK_BABEL; - break; - case LyXRC::LP_BABEL: + } else if (lyxrc.language_package_selection == "babel") { if (babel_required) return LANG_PACK_BABEL; - break; - case LyXRC::LP_CUSTOM: + } else if (lyxrc.language_package_selection == "custom") return LANG_PACK_CUSTOM; - case LyXRC::LP_NONE: + else if (lyxrc.language_package_selection == "none") return LANG_PACK_NONE; - } } return LANG_PACK_NONE; diff --git a/src/LyXRC.cpp b/src/LyXRC.cpp index 3adc55a119..b26b948139 100644 --- a/src/LyXRC.cpp +++ b/src/LyXRC.cpp @@ -60,7 +60,7 @@ namespace { // The format should also be updated in configure.py, and conversion code // should be added to prefs2prefs_prefs.py. -static unsigned int const LYXRC_FILEFORMAT = 40; // graduate \\experimental:bookmark_visibility and change default +static unsigned int const LYXRC_FILEFORMAT = 41; // Use proper string values for \language_package_selection // when adding something to this array keep it sorted! LexerKeyword lyxrcTags[] = { { "\\accept_compound", LyXRC::RC_ACCEPT_COMPOUND }, @@ -830,22 +830,7 @@ LyXRC::ReturnValues LyXRC::read(Lexer & lexrc, bool check_format) lexrc >> language_global_options; break; case RC_LANGUAGE_PACKAGE_SELECTION: - if (lexrc.next()) { - switch (lexrc.getInteger()) { - case 0: - language_package_selection = LP_AUTO; - break; - case 1: - language_package_selection = LP_BABEL; - break; - case 2: - language_package_selection = LP_CUSTOM; - break; - case 3: - language_package_selection = LP_NONE; - break; - } - } + lexrc >> language_package_selection; break; case RC_LANGUAGE_COMMAND_BEGIN: lexrc >> language_command_begin; @@ -2586,21 +2571,10 @@ void LyXRC::write(ostream & os, bool ignore_system_lyxrc, string const & name) c case RC_LANGUAGE_PACKAGE_SELECTION: if (ignore_system_lyxrc || language_package_selection != system_lyxrc.language_package_selection) { - os << "\\language_package_selection "; - switch (language_package_selection) { - case LP_AUTO: - os << "0\n"; + os << "\\language_package_selection \"" + << language_package_selection + << "\"\n"; break; - case LP_BABEL: - os << "1\n"; - break; - case LP_CUSTOM: - os << "2\n"; - break; - case LP_NONE: - os << "3\n"; - break; - } } if (tag != RC_LAST) break; diff --git a/src/LyXRC.h b/src/LyXRC.h index 01b5e99b52..26776dab46 100644 --- a/src/LyXRC.h +++ b/src/LyXRC.h @@ -406,14 +406,7 @@ public: /// bool language_global_options = true; /// - enum LangPackageSelection { - LP_AUTO = 0, - LP_BABEL, - LP_CUSTOM, - LP_NONE - }; - /// - LangPackageSelection language_package_selection = LP_AUTO; + std::string language_package_selection = "auto"; /// bidi cursor movement: true = visual, false = logical bool visual_cursor = false; /// diff --git a/src/frontends/qt/GuiPrefs.cpp b/src/frontends/qt/GuiPrefs.cpp index f41ade621e..f3dbcb827e 100644 --- a/src/frontends/qt/GuiPrefs.cpp +++ b/src/frontends/qt/GuiPrefs.cpp @@ -3270,6 +3270,15 @@ PrefLanguage::PrefLanguage(GuiPreferences * form) defaultLengthUnitCO->addItem(lyx::qt_(unit_name_gui[Length::CM]), Length::CM); defaultLengthUnitCO->addItem(lyx::qt_(unit_name_gui[Length::IN]), Length::IN); + languagePackageCO->addItem( + qt_("Automatic"), toqstr("auto")); + languagePackageCO->addItem( + qt_("Always Babel"), toqstr("babel")); + languagePackageCO->addItem( + qt_("Custom"), toqstr("custom")); + languagePackageCO->addItem( + qt_("None[[language package]]"), toqstr("none")); + QAbstractItemModel * language_model = guiApp->languageModel(); language_model->sort(0); uiLanguageCO->blockSignals(true); @@ -3332,15 +3341,8 @@ void PrefLanguage::applyRC(LyXRC & rc) const rc.respect_os_kbd_language = respectOSkbdCB->isChecked(); rc.language_auto_begin = !explicitDocLangBeginCB->isChecked(); rc.language_auto_end = !explicitDocLangEndCB->isChecked(); - int const p = languagePackageCO->currentIndex(); - if (p == 0) - rc.language_package_selection = LyXRC::LP_AUTO; - else if (p == 1) - rc.language_package_selection = LyXRC::LP_BABEL; - else if (p == 2) - rc.language_package_selection = LyXRC::LP_CUSTOM; - else if (p == 3) - rc.language_package_selection = LyXRC::LP_NONE; + rc.language_package_selection = + fromqstr(languagePackageCO->itemData(languagePackageCO->currentIndex()).toString()); rc.language_custom_package = fromqstr(languagePackageED->text()); rc.language_global_options = globalCB->isChecked(); rc.language_command_begin = fromqstr(startCommandED->text()); @@ -3365,8 +3367,9 @@ void PrefLanguage::updateRC(LyXRC const & rc) respectOSkbdCB->setChecked(rc.respect_os_kbd_language); explicitDocLangBeginCB->setChecked(!rc.language_auto_begin); explicitDocLangEndCB->setChecked(!rc.language_auto_end); - languagePackageCO->setCurrentIndex(rc.language_package_selection); - if (languagePackageCO->currentIndex() == 2) { + int pos = languagePackageCO->findData(toqstr(rc.language_package_selection)); + languagePackageCO->setCurrentIndex(pos); + if (rc.language_package_selection == "custom") { languagePackageED->setText(toqstr(rc.language_custom_package)); languagePackageED->setEnabled(true); } else { @@ -3385,7 +3388,7 @@ void PrefLanguage::updateRC(LyXRC const & rc) defaultDecimalSepCO->setCurrentIndex(1); defaultDecimalSepED->setText(toqstr(rc.default_decimal_sep)); } - int pos = defaultLengthUnitCO->findData(int(rc.default_length_unit)); + pos = defaultLengthUnitCO->findData(int(rc.default_length_unit)); defaultLengthUnitCO->setCurrentIndex(pos); pos = uiLanguageCO->findData(toqstr(rc.gui_language)); diff --git a/src/frontends/qt/ui/PrefLanguageUi.ui b/src/frontends/qt/ui/PrefLanguageUi.ui index 4bc6e39f60..aa16fd3724 100644 --- a/src/frontends/qt/ui/PrefLanguageUi.ui +++ b/src/frontends/qt/ui/PrefLanguageUi.ui @@ -72,27 +72,7 @@ <property name="toolTip"> <string>Select which (LaTeX) language package documents should use by default</string> </property> - <item> - <property name="text"> - <string>Automatic</string> - </property> - </item> - <item> - <property name="text"> - <string>Always Babel</string> - </property> - </item> - <item> - <property name="text"> - <string>Custom</string> - </property> - </item> - <item> - <property name="text"> - <string>None[[language package]]</string> - </property> - </item> - </widget> + </widget> </item> <item row="0" column="2"> <widget class="QLineEdit" name="languagePackageED"> -- lyx-cvs mailing list [email protected] https://lists.lyx.org/mailman/listinfo/lyx-cvs