forked from qt-creator/qt-creator
qmlls: add checkbox for generating qmlls ini files
Add a checkbox to the qmljseditingsettingspage that generates qmlls ini files by default for new projects. If this checkbox is checked, then initial CMake configurations (when enabling a kit for a project) and reconfigurations (when pressing the "Re-configure with Initial parameters"-button) will set QT_QML_GENERATE_QMLLS_INI to ON if QT_QML_GENERATE_QMLLS_INI was not set yet. Fixes: QTCREATORBUG-30394 Change-Id: I58f89558d25ef107e501bd67702f26554bd6aeaa Reviewed-by: hjk <hjk@qt.io> Reviewed-by: David Schulz <david.schulz@qt.io> Reviewed-by: Cristian Adam <cristian.adam@qt.io>
This commit is contained in:
@@ -94,6 +94,7 @@ const char CMAKE_BUILD_TYPE[] = "CMake.Build.Type";
|
||||
const char CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "CMake.Configure.ClearSystemEnvironment";
|
||||
const char USER_ENVIRONMENT_CHANGES_KEY[] = "CMake.Configure.UserEnvironmentChanges";
|
||||
const char BASE_ENVIRONMENT_KEY[] = "CMake.Configure.BaseEnvironment";
|
||||
const char GENERATE_QMLLS_INI_SETTING[] = "J.QtQuick/QmlJSEditor.GenerateQmllsIniFiles";
|
||||
|
||||
namespace Internal {
|
||||
|
||||
@@ -606,6 +607,18 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments()
|
||||
{
|
||||
CMakeConfig initialList = m_buildConfig->initialCMakeArguments.cmakeConfiguration();
|
||||
|
||||
// set QT_QML_GENERATE_QMLLS_INI if it is enabled via the settings checkbox and if its not part
|
||||
// of the initial CMake arguments yet
|
||||
if (Core::ICore::settings()->value(GENERATE_QMLLS_INI_SETTING).toBool()) {
|
||||
if (std::none_of(
|
||||
initialList.constBegin(), initialList.constEnd(), [](const CMakeConfigItem &item) {
|
||||
return item.key == "QT_QML_GENERATE_QMLLS_INI";
|
||||
})) {
|
||||
initialList.append(
|
||||
CMakeConfigItem("QT_QML_GENERATE_QMLLS_INI", CMakeConfigItem::BOOL, "ON"));
|
||||
}
|
||||
}
|
||||
|
||||
for (const CMakeConfigItem &ci : m_buildConfig->cmakeBuildSystem()->configurationChanges()) {
|
||||
if (!ci.isInitial)
|
||||
continue;
|
||||
@@ -1544,6 +1557,11 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
|
||||
if (qt && qt->isQmlDebuggingSupported())
|
||||
cmd.addArg("-DCMAKE_CXX_FLAGS_INIT:STRING=%{" + QLatin1String(QT_QML_DEBUG_FLAG) + "}");
|
||||
|
||||
// QT_QML_GENERATE_QMLLS_INI, if enabled via the settings checkbox:
|
||||
if (Core::ICore::settings()->value(GENERATE_QMLLS_INI_SETTING).toBool()) {
|
||||
cmd.addArg("-DQT_QML_GENERATE_QMLLS_INI:BOOL=ON");
|
||||
}
|
||||
|
||||
CMakeProject *cmakeProject = static_cast<CMakeProject *>(target->project());
|
||||
configureEnv.setUserEnvironmentChanges(
|
||||
getEnvironmentItemsFromCMakeConfigurePreset(cmakeProject, k));
|
||||
|
||||
@@ -35,6 +35,7 @@ const char FOLD_AUX_DATA[] = "QmlJSEditor.FoldAuxData";
|
||||
const char USE_QMLLS[] = "QmlJSEditor.UseQmlls";
|
||||
const char USE_LATEST_QMLLS[] = "QmlJSEditor.UseLatestQmlls";
|
||||
const char DISABLE_BUILTIN_CODEMODEL[] = "QmlJSEditor.DisableBuiltinCodemodel";
|
||||
const char GENERATE_QMLLS_INI_FILES[] = "QmlJSEditor.GenerateQmllsIniFiles";
|
||||
const char UIQML_OPEN_MODE[] = "QmlJSEditor.openUiQmlMode";
|
||||
const char FORMAT_COMMAND[] = "QmlJSEditor.formatCommand";
|
||||
const char FORMAT_COMMAND_OPTIONS[] = "QmlJSEditor.formatCommandOptions";
|
||||
@@ -107,6 +108,8 @@ void QmlJsEditingSettings::fromSettings(QtcSettings *settings)
|
||||
m_qmllsSettings.useLatestQmlls = settings->value(USE_LATEST_QMLLS, QVariant(false)).toBool();
|
||||
m_qmllsSettings.disableBuiltinCodemodel
|
||||
= settings->value(DISABLE_BUILTIN_CODEMODEL, QVariant(false)).toBool();
|
||||
m_qmllsSettings.generateQmllsIniFiles
|
||||
= settings->value(GENERATE_QMLLS_INI_FILES, QVariant(false)).toBool();
|
||||
m_formatCommand = settings->value(FORMAT_COMMAND, {}).toString();
|
||||
m_formatCommandOptions = settings->value(FORMAT_COMMAND_OPTIONS, {}).toString();
|
||||
m_useCustomFormatCommand = settings->value(CUSTOM_COMMAND, QVariant(false)).toBool();
|
||||
@@ -135,6 +138,7 @@ void QmlJsEditingSettings::toSettings(QtcSettings *settings) const
|
||||
settings->setValue(USE_QMLLS, m_qmllsSettings.useQmlls);
|
||||
settings->setValue(USE_LATEST_QMLLS, m_qmllsSettings.useLatestQmlls);
|
||||
settings->setValue(DISABLE_BUILTIN_CODEMODEL, m_qmllsSettings.disableBuiltinCodemodel);
|
||||
settings->setValue(GENERATE_QMLLS_INI_FILES, m_qmllsSettings.generateQmllsIniFiles);
|
||||
settings->setValueWithDefault(FORMAT_COMMAND, m_formatCommand, {});
|
||||
settings->setValueWithDefault(FORMAT_COMMAND_OPTIONS, m_formatCommandOptions, {});
|
||||
settings->setValueWithDefault(CUSTOM_COMMAND, m_useCustomFormatCommand, false);
|
||||
@@ -402,9 +406,14 @@ public:
|
||||
useLatestQmlls = new QCheckBox(Tr::tr("Use QML Language Server from latest Qt version"));
|
||||
useLatestQmlls->setChecked(s.qmllsSettings().useLatestQmlls);
|
||||
useLatestQmlls->setEnabled(s.qmllsSettings().useQmlls);
|
||||
generateQmllsIniFiles = new QCheckBox(
|
||||
Tr::tr("Generate QML Language Server .qmlls.ini configurations for new projects."));
|
||||
generateQmllsIniFiles->setChecked(s.qmllsSettings().generateQmllsIniFiles);
|
||||
generateQmllsIniFiles->setEnabled(s.qmllsSettings().useQmlls);
|
||||
QObject::connect(useQmlls, &QCheckBox::stateChanged, this, [this](int checked) {
|
||||
useLatestQmlls->setEnabled(checked != Qt::Unchecked);
|
||||
disableBuiltInCodemodel->setEnabled(checked != Qt::Unchecked);
|
||||
generateQmllsIniFiles->setEnabled(checked != Qt::Unchecked);
|
||||
});
|
||||
|
||||
useCustomAnalyzer = new QCheckBox(Tr::tr("Use customized static analyzer"));
|
||||
@@ -457,7 +466,7 @@ public:
|
||||
},
|
||||
Group{
|
||||
title(Tr::tr("QML Language Server")),
|
||||
Column{useQmlls, disableBuiltInCodemodel , useLatestQmlls},
|
||||
Column{useQmlls, disableBuiltInCodemodel , useLatestQmlls, generateQmllsIniFiles},
|
||||
},
|
||||
Group {
|
||||
title(Tr::tr("Static Analyzer")),
|
||||
@@ -503,6 +512,7 @@ public:
|
||||
s.qmllsSettings().useQmlls = useQmlls->isChecked();
|
||||
s.qmllsSettings().disableBuiltinCodemodel = disableBuiltInCodemodel->isChecked();
|
||||
s.qmllsSettings().useLatestQmlls = useLatestQmlls->isChecked();
|
||||
s.qmllsSettings().generateQmllsIniFiles = generateQmllsIniFiles->isChecked();
|
||||
s.setUseCustomAnalyzer(useCustomAnalyzer->isChecked());
|
||||
QSet<int> disabled;
|
||||
QSet<int> disabledForNonQuickUi;
|
||||
@@ -561,6 +571,7 @@ private:
|
||||
QCheckBox *useQmlls;
|
||||
QCheckBox *useLatestQmlls;
|
||||
QCheckBox *disableBuiltInCodemodel;
|
||||
QCheckBox *generateQmllsIniFiles;
|
||||
QComboBox *uiQmlOpenComboBox;
|
||||
QCheckBox *useCustomAnalyzer;
|
||||
QTreeView *analyzerMessagesView;
|
||||
|
||||
@@ -16,11 +16,13 @@ struct QmllsSettings
|
||||
bool useQmlls = true;
|
||||
bool useLatestQmlls = false;
|
||||
bool disableBuiltinCodemodel = false;
|
||||
bool generateQmllsIniFiles = false;
|
||||
|
||||
friend bool operator==(const QmllsSettings &s1, const QmllsSettings &s2)
|
||||
{
|
||||
return s1.useQmlls == s2.useQmlls && s1.useLatestQmlls == s2.useLatestQmlls
|
||||
&& s1.disableBuiltinCodemodel == s2.disableBuiltinCodemodel;
|
||||
&& s1.disableBuiltinCodemodel == s2.disableBuiltinCodemodel
|
||||
&& s1.generateQmllsIniFiles == s2.generateQmllsIniFiles;
|
||||
}
|
||||
friend bool operator!=(const QmllsSettings &s1, const QmllsSettings &s2) { return !(s1 == s2); }
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user