From 3d3323fa0e7715682b1ad40b784b23afd548b2d4 Mon Sep 17 00:00:00 2001 From: Sami Shalayel Date: Thu, 14 Nov 2024 16:06:40 +0100 Subject: [PATCH] qmlls: port old settings to new ones Load the values from the BaseAspect settings (where they were previously stored before the introduction of QmllsClientSettings). if the new qmlls settings do no exist yet. Task-number: QTCREATORBUG-31897 Change-Id: I438f1489671ed1843d2390910f46730a270eac6b Reviewed-by: Fabian Kosmale Reviewed-by: David Schulz --- .../qmljseditor/qmllsclientsettings.cpp | 31 ++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/plugins/qmljseditor/qmllsclientsettings.cpp b/src/plugins/qmljseditor/qmllsclientsettings.cpp index 663ed0ed91c..b0f90f648ee 100644 --- a/src/plugins/qmljseditor/qmllsclientsettings.cpp +++ b/src/plugins/qmljseditor/qmllsclientsettings.cpp @@ -233,7 +233,6 @@ void QmllsClientSettings::fromMap(const Store &map) m_generateQmllsIniFiles = map[generateQmllsIniFilesKey].toBool(); m_ignoreMinimumQmllsVersion = map[ignoreMinimumQmllsVersionKey].toBool(); m_useQmllsSemanticHighlighting = map[useQmllsSemanticHighlightingKey].toBool(); - return; } bool QmllsClientSettings::isEnabledOnProjectFile(const Utils::FilePath &file) const @@ -252,6 +251,34 @@ bool QmllsClientSettings::useQmllsWithBuiltinCodemodelOnProject(const Utils::Fil return isEnabledOnProject(project); } +// first time initialization: port old settings from the QmlJsEditingSettings AspectContainer +static void portFromOldSettings(QmllsClientSettings* qmllsClientSettings) +{ + QtcSettings *settings = BaseAspect::qtcSettings(); + + const Key baseKey = Key{QmlJSEditor::Constants::SETTINGS_CATEGORY_QML} + "/"; + + auto portSetting = [&settings](const Key &key, bool *output) { + if (settings->contains(key)) + *output = settings->value(key).toBool(); + }; + + constexpr char USE_QMLLS[] = "QmlJSEditor.UseQmlls"; + constexpr char USE_LATEST_QMLLS[] = "QmlJSEditor.UseLatestQmlls"; + constexpr char DISABLE_BUILTIN_CODEMODEL[] = "QmlJSEditor.DisableBuiltinCodemodel"; + constexpr char GENERATE_QMLLS_INI_FILES[] = "QmlJSEditor.GenerateQmllsIniFiles"; + constexpr char IGNORE_MINIMUM_QMLLS_VERSION[] = "QmlJSEditor.IgnoreMinimumQmllsVersion"; + constexpr char USE_QMLLS_SEMANTIC_HIGHLIGHTING[] + = "QmlJSEditor.EnableQmllsSemanticHighlighting"; + + portSetting(baseKey + USE_QMLLS, &qmllsClientSettings->m_enabled); + portSetting(baseKey + USE_LATEST_QMLLS, &qmllsClientSettings->m_useLatestQmlls); + portSetting(baseKey + DISABLE_BUILTIN_CODEMODEL, &qmllsClientSettings->m_disableBuiltinCodemodel); + portSetting(baseKey + GENERATE_QMLLS_INI_FILES, &qmllsClientSettings->m_generateQmllsIniFiles); + portSetting(baseKey + IGNORE_MINIMUM_QMLLS_VERSION, &qmllsClientSettings->m_ignoreMinimumQmllsVersion); + portSetting(baseKey + USE_QMLLS_SEMANTIC_HIGHLIGHTING, &qmllsClientSettings->m_useQmllsSemanticHighlighting); +} + void setupQmllsClientSettings() { using namespace LanguageClient; @@ -267,6 +294,8 @@ void setupQmllsClientSettings() if (!savedSettings.isEmpty()) clientSettings->fromMap(savedSettings.first()); + else + portFromOldSettings(clientSettings); LanguageClientManager::registerClientSettings(clientSettings); LanguageClientSettings::registerClientType(type);