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 CLEAR_SYSTEM_ENVIRONMENT_KEY[] = "CMake.Configure.ClearSystemEnvironment";
|
||||||
const char USER_ENVIRONMENT_CHANGES_KEY[] = "CMake.Configure.UserEnvironmentChanges";
|
const char USER_ENVIRONMENT_CHANGES_KEY[] = "CMake.Configure.UserEnvironmentChanges";
|
||||||
const char BASE_ENVIRONMENT_KEY[] = "CMake.Configure.BaseEnvironment";
|
const char BASE_ENVIRONMENT_KEY[] = "CMake.Configure.BaseEnvironment";
|
||||||
|
const char GENERATE_QMLLS_INI_SETTING[] = "J.QtQuick/QmlJSEditor.GenerateQmllsIniFiles";
|
||||||
|
|
||||||
namespace Internal {
|
namespace Internal {
|
||||||
|
|
||||||
@@ -606,6 +607,18 @@ void CMakeBuildSettingsWidget::updateInitialCMakeArguments()
|
|||||||
{
|
{
|
||||||
CMakeConfig initialList = m_buildConfig->initialCMakeArguments.cmakeConfiguration();
|
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()) {
|
for (const CMakeConfigItem &ci : m_buildConfig->cmakeBuildSystem()->configurationChanges()) {
|
||||||
if (!ci.isInitial)
|
if (!ci.isInitial)
|
||||||
continue;
|
continue;
|
||||||
@@ -1544,6 +1557,11 @@ CMakeBuildConfiguration::CMakeBuildConfiguration(Target *target, Id id)
|
|||||||
if (qt && qt->isQmlDebuggingSupported())
|
if (qt && qt->isQmlDebuggingSupported())
|
||||||
cmd.addArg("-DCMAKE_CXX_FLAGS_INIT:STRING=%{" + QLatin1String(QT_QML_DEBUG_FLAG) + "}");
|
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());
|
CMakeProject *cmakeProject = static_cast<CMakeProject *>(target->project());
|
||||||
configureEnv.setUserEnvironmentChanges(
|
configureEnv.setUserEnvironmentChanges(
|
||||||
getEnvironmentItemsFromCMakeConfigurePreset(cmakeProject, k));
|
getEnvironmentItemsFromCMakeConfigurePreset(cmakeProject, k));
|
||||||
|
|||||||
@@ -35,6 +35,7 @@ const char FOLD_AUX_DATA[] = "QmlJSEditor.FoldAuxData";
|
|||||||
const char USE_QMLLS[] = "QmlJSEditor.UseQmlls";
|
const char USE_QMLLS[] = "QmlJSEditor.UseQmlls";
|
||||||
const char USE_LATEST_QMLLS[] = "QmlJSEditor.UseLatestQmlls";
|
const char USE_LATEST_QMLLS[] = "QmlJSEditor.UseLatestQmlls";
|
||||||
const char DISABLE_BUILTIN_CODEMODEL[] = "QmlJSEditor.DisableBuiltinCodemodel";
|
const char DISABLE_BUILTIN_CODEMODEL[] = "QmlJSEditor.DisableBuiltinCodemodel";
|
||||||
|
const char GENERATE_QMLLS_INI_FILES[] = "QmlJSEditor.GenerateQmllsIniFiles";
|
||||||
const char UIQML_OPEN_MODE[] = "QmlJSEditor.openUiQmlMode";
|
const char UIQML_OPEN_MODE[] = "QmlJSEditor.openUiQmlMode";
|
||||||
const char FORMAT_COMMAND[] = "QmlJSEditor.formatCommand";
|
const char FORMAT_COMMAND[] = "QmlJSEditor.formatCommand";
|
||||||
const char FORMAT_COMMAND_OPTIONS[] = "QmlJSEditor.formatCommandOptions";
|
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.useLatestQmlls = settings->value(USE_LATEST_QMLLS, QVariant(false)).toBool();
|
||||||
m_qmllsSettings.disableBuiltinCodemodel
|
m_qmllsSettings.disableBuiltinCodemodel
|
||||||
= settings->value(DISABLE_BUILTIN_CODEMODEL, QVariant(false)).toBool();
|
= 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_formatCommand = settings->value(FORMAT_COMMAND, {}).toString();
|
||||||
m_formatCommandOptions = settings->value(FORMAT_COMMAND_OPTIONS, {}).toString();
|
m_formatCommandOptions = settings->value(FORMAT_COMMAND_OPTIONS, {}).toString();
|
||||||
m_useCustomFormatCommand = settings->value(CUSTOM_COMMAND, QVariant(false)).toBool();
|
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_QMLLS, m_qmllsSettings.useQmlls);
|
||||||
settings->setValue(USE_LATEST_QMLLS, m_qmllsSettings.useLatestQmlls);
|
settings->setValue(USE_LATEST_QMLLS, m_qmllsSettings.useLatestQmlls);
|
||||||
settings->setValue(DISABLE_BUILTIN_CODEMODEL, m_qmllsSettings.disableBuiltinCodemodel);
|
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, m_formatCommand, {});
|
||||||
settings->setValueWithDefault(FORMAT_COMMAND_OPTIONS, m_formatCommandOptions, {});
|
settings->setValueWithDefault(FORMAT_COMMAND_OPTIONS, m_formatCommandOptions, {});
|
||||||
settings->setValueWithDefault(CUSTOM_COMMAND, m_useCustomFormatCommand, false);
|
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 = new QCheckBox(Tr::tr("Use QML Language Server from latest Qt version"));
|
||||||
useLatestQmlls->setChecked(s.qmllsSettings().useLatestQmlls);
|
useLatestQmlls->setChecked(s.qmllsSettings().useLatestQmlls);
|
||||||
useLatestQmlls->setEnabled(s.qmllsSettings().useQmlls);
|
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) {
|
QObject::connect(useQmlls, &QCheckBox::stateChanged, this, [this](int checked) {
|
||||||
useLatestQmlls->setEnabled(checked != Qt::Unchecked);
|
useLatestQmlls->setEnabled(checked != Qt::Unchecked);
|
||||||
disableBuiltInCodemodel->setEnabled(checked != Qt::Unchecked);
|
disableBuiltInCodemodel->setEnabled(checked != Qt::Unchecked);
|
||||||
|
generateQmllsIniFiles->setEnabled(checked != Qt::Unchecked);
|
||||||
});
|
});
|
||||||
|
|
||||||
useCustomAnalyzer = new QCheckBox(Tr::tr("Use customized static analyzer"));
|
useCustomAnalyzer = new QCheckBox(Tr::tr("Use customized static analyzer"));
|
||||||
@@ -457,7 +466,7 @@ public:
|
|||||||
},
|
},
|
||||||
Group{
|
Group{
|
||||||
title(Tr::tr("QML Language Server")),
|
title(Tr::tr("QML Language Server")),
|
||||||
Column{useQmlls, disableBuiltInCodemodel , useLatestQmlls},
|
Column{useQmlls, disableBuiltInCodemodel , useLatestQmlls, generateQmllsIniFiles},
|
||||||
},
|
},
|
||||||
Group {
|
Group {
|
||||||
title(Tr::tr("Static Analyzer")),
|
title(Tr::tr("Static Analyzer")),
|
||||||
@@ -503,6 +512,7 @@ public:
|
|||||||
s.qmllsSettings().useQmlls = useQmlls->isChecked();
|
s.qmllsSettings().useQmlls = useQmlls->isChecked();
|
||||||
s.qmllsSettings().disableBuiltinCodemodel = disableBuiltInCodemodel->isChecked();
|
s.qmllsSettings().disableBuiltinCodemodel = disableBuiltInCodemodel->isChecked();
|
||||||
s.qmllsSettings().useLatestQmlls = useLatestQmlls->isChecked();
|
s.qmllsSettings().useLatestQmlls = useLatestQmlls->isChecked();
|
||||||
|
s.qmllsSettings().generateQmllsIniFiles = generateQmllsIniFiles->isChecked();
|
||||||
s.setUseCustomAnalyzer(useCustomAnalyzer->isChecked());
|
s.setUseCustomAnalyzer(useCustomAnalyzer->isChecked());
|
||||||
QSet<int> disabled;
|
QSet<int> disabled;
|
||||||
QSet<int> disabledForNonQuickUi;
|
QSet<int> disabledForNonQuickUi;
|
||||||
@@ -561,6 +571,7 @@ private:
|
|||||||
QCheckBox *useQmlls;
|
QCheckBox *useQmlls;
|
||||||
QCheckBox *useLatestQmlls;
|
QCheckBox *useLatestQmlls;
|
||||||
QCheckBox *disableBuiltInCodemodel;
|
QCheckBox *disableBuiltInCodemodel;
|
||||||
|
QCheckBox *generateQmllsIniFiles;
|
||||||
QComboBox *uiQmlOpenComboBox;
|
QComboBox *uiQmlOpenComboBox;
|
||||||
QCheckBox *useCustomAnalyzer;
|
QCheckBox *useCustomAnalyzer;
|
||||||
QTreeView *analyzerMessagesView;
|
QTreeView *analyzerMessagesView;
|
||||||
|
|||||||
@@ -16,11 +16,13 @@ struct QmllsSettings
|
|||||||
bool useQmlls = true;
|
bool useQmlls = true;
|
||||||
bool useLatestQmlls = false;
|
bool useLatestQmlls = false;
|
||||||
bool disableBuiltinCodemodel = false;
|
bool disableBuiltinCodemodel = false;
|
||||||
|
bool generateQmllsIniFiles = false;
|
||||||
|
|
||||||
friend bool operator==(const QmllsSettings &s1, const QmllsSettings &s2)
|
friend bool operator==(const QmllsSettings &s1, const QmllsSettings &s2)
|
||||||
{
|
{
|
||||||
return s1.useQmlls == s2.useQmlls && s1.useLatestQmlls == s2.useLatestQmlls
|
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); }
|
friend bool operator!=(const QmllsSettings &s1, const QmllsSettings &s2) { return !(s1 == s2); }
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user