Move clang diagnostics config settings to clangd settings page

It was confusing to have both "Clang Code Model" and "clangd" project
settings pages, so we merge them.
Along the way, a lot of code dropped off.

Change-Id: I780850b716195c3729403ae59f0794c11b5c556d
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2022-05-19 14:48:09 +02:00
parent c117e3d3c9
commit 760cf632af
26 changed files with 145 additions and 1005 deletions

View File

@@ -26,9 +26,9 @@
#include "cppcodemodelsettingspage.h"
#include "ui_cppcodemodelsettingspage.h"
#include "clangdiagnosticconfigsselectionwidget.h"
#include "clangdiagnosticconfigswidget.h"
#include "cppeditorconstants.h"
#include "cppmodelmanager.h"
#include "cpptoolsreuse.h"
#include <coreplugin/icore.h>
@@ -67,10 +67,8 @@ private:
void apply() final;
void setupGeneralWidgets();
void setupClangCodeModelWidgets();
bool applyGeneralWidgetsToSettings() const;
bool applyClangCodeModelWidgetsToSettings() const;
Ui::CppCodeModelSettingsPage *m_ui = nullptr;
CppCodeModelSettings *m_settings = nullptr;
@@ -84,7 +82,6 @@ CppCodeModelSettingsWidget::CppCodeModelSettingsWidget(CppCodeModelSettings *s)
m_settings = s;
setupGeneralWidgets();
setupClangCodeModelWidgets();
}
CppCodeModelSettingsWidget::~CppCodeModelSettingsWidget()
@@ -94,35 +91,10 @@ CppCodeModelSettingsWidget::~CppCodeModelSettingsWidget()
void CppCodeModelSettingsWidget::apply()
{
bool changed = false;
changed |= applyGeneralWidgetsToSettings();
changed |= applyClangCodeModelWidgetsToSettings();
if (changed)
if (applyGeneralWidgetsToSettings())
m_settings->toSettings(Core::ICore::settings());
}
void CppCodeModelSettingsWidget::setupClangCodeModelWidgets()
{
m_ui->clangDiagnosticConfigsSelectionWidget
->refresh(diagnosticConfigsModel(),
m_settings->clangDiagnosticConfigId(),
[](const ClangDiagnosticConfigs &configs, const Utils::Id &configToSelect) {
return new ClangDiagnosticConfigsWidget(configs, configToSelect);
});
const bool isClangActive = CppModelManager::instance()->isClangCodeModelActive();
m_ui->clangCodeModelIsDisabledHint->setVisible(!isClangActive);
m_ui->clangCodeModelIsEnabledHint->setVisible(isClangActive);
for (int i = 0; i < m_ui->clangDiagnosticConfigsSelectionWidget->layout()->count(); ++i) {
QWidget *widget = m_ui->clangDiagnosticConfigsSelectionWidget->layout()->itemAt(i)->widget();
if (widget)
widget->setEnabled(isClangActive);
}
}
void CppCodeModelSettingsWidget::setupGeneralWidgets()
{
m_ui->interpretAmbiguousHeadersAsCHeaders->setChecked(
@@ -135,28 +107,6 @@ void CppCodeModelSettingsWidget::setupGeneralWidgets()
m_ui->ignorePCHCheckBox->setChecked(ignorePch);
}
bool CppCodeModelSettingsWidget::applyClangCodeModelWidgetsToSettings() const
{
bool changed = false;
const Utils::Id oldConfigId = m_settings->clangDiagnosticConfigId();
const Utils::Id currentConfigId = m_ui->clangDiagnosticConfigsSelectionWidget->currentConfigId();
if (oldConfigId != currentConfigId) {
m_settings->setClangDiagnosticConfigId(currentConfigId);
changed = true;
}
const ClangDiagnosticConfigs oldConfigs = m_settings->clangCustomDiagnosticConfigs();
const ClangDiagnosticConfigs currentConfigs = m_ui->clangDiagnosticConfigsSelectionWidget
->customConfigs();
if (oldConfigs != currentConfigs) {
m_settings->setClangCustomDiagnosticConfigs(currentConfigs);
changed = true;
}
return changed;
}
bool CppCodeModelSettingsWidget::applyGeneralWidgetsToSettings() const
{
bool settingsChanged = false;
@@ -215,6 +165,7 @@ public:
QSpinBox sizeThresholdSpinBox;
Utils::PathChooser clangdChooser;
Utils::InfoLabel versionWarningLabel;
ClangDiagnosticConfigsSelectionWidget *configSelectionWidget = nullptr;
QGroupBox *sessionsGroupBox = nullptr;
QStringListModel sessionsModel;
};
@@ -283,8 +234,15 @@ ClangdSettingsWidget::ClangdSettingsWidget(const ClangdSettings::Data &settingsD
sizeThresholdLayout->addWidget(&d->sizeThresholdSpinBox);
sizeThresholdLayout->addStretch(1);
formLayout->addRow(&d->sizeThresholdCheckBox, sizeThresholdLayout);
layout->addLayout(formLayout);
d->configSelectionWidget = new ClangDiagnosticConfigsSelectionWidget(formLayout);
d->configSelectionWidget->refresh(
diagnosticConfigsModel(settings.customDiagnosticConfigs()),
settings.diagnosticConfigId(),
[](const ClangDiagnosticConfigs &configs, const Utils::Id &configToSelect) {
return new CppEditor::ClangDiagnosticConfigsWidget(configs, configToSelect);
});
layout->addLayout(formLayout);
if (!isForProject) {
d->sessionsModel.setStringList(settingsData.sessionsWithOneClangd);
d->sessionsModel.sort(0);
@@ -427,6 +385,8 @@ ClangdSettingsWidget::ClangdSettingsWidget(const ClangdSettings::Data &settingsD
this, &ClangdSettingsWidget::settingsDataChanged);
connect(&d->clangdChooser, &Utils::PathChooser::pathChanged,
this, &ClangdSettingsWidget::settingsDataChanged);
connect(d->configSelectionWidget, &ClangDiagnosticConfigsSelectionWidget::changed,
this, &ClangdSettingsWidget::settingsDataChanged);
}
ClangdSettingsWidget::~ClangdSettingsWidget()
@@ -446,6 +406,8 @@ ClangdSettings::Data ClangdSettingsWidget::settingsData() const
data.sizeThresholdEnabled = d->sizeThresholdCheckBox.isChecked();
data.sizeThresholdInKb = d->sizeThresholdSpinBox.value();
data.sessionsWithOneClangd = d->sessionsModel.stringList();
data.customDiagnosticConfigs = d->configSelectionWidget->customConfigs();
data.diagnosticConfigId = d->configSelectionWidget->currentConfigId();
return data;
}