forked from qt-creator/qt-creator
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:
@@ -30,7 +30,6 @@
|
||||
#include "clangdquickfixfactory.h"
|
||||
#include "clangeditordocumentprocessor.h"
|
||||
#include "clangdlocatorfilters.h"
|
||||
#include "clangprojectsettings.h"
|
||||
#include "clangutils.h"
|
||||
|
||||
#include <coreplugin/documentmanager.h>
|
||||
@@ -137,19 +136,12 @@ ClangModelManagerSupport::ClangModelManagerSupport()
|
||||
});
|
||||
|
||||
auto *sessionManager = ProjectExplorer::SessionManager::instance();
|
||||
connect(sessionManager, &ProjectExplorer::SessionManager::projectAdded,
|
||||
this, &ClangModelManagerSupport::onProjectAdded);
|
||||
connect(sessionManager, &ProjectExplorer::SessionManager::aboutToRemoveProject,
|
||||
this, &ClangModelManagerSupport::onAboutToRemoveProject);
|
||||
connect(sessionManager, &ProjectExplorer::SessionManager::projectRemoved,
|
||||
this, [this] { claimNonProjectSources(clientForProject(fallbackProject())); });
|
||||
|
||||
CppEditor::ClangdSettings::setDefaultClangdPath(Core::ICore::clangdExecutable(CLANG_BINDIR));
|
||||
connect(&CppEditor::ClangdSettings::instance(), &CppEditor::ClangdSettings::changed,
|
||||
this, &ClangModelManagerSupport::onClangdSettingsChanged);
|
||||
CppEditor::CppCodeModelSettings *settings = CppEditor::codeModelSettings();
|
||||
connect(settings, &CppEditor::CppCodeModelSettings::clangDiagnosticConfigsInvalidated,
|
||||
this, &ClangModelManagerSupport::onDiagnosticConfigsInvalidated);
|
||||
|
||||
if (CppEditor::ClangdSettings::instance().useClangd())
|
||||
createClient(nullptr, {});
|
||||
@@ -160,7 +152,6 @@ ClangModelManagerSupport::ClangModelManagerSupport()
|
||||
|
||||
ClangModelManagerSupport::~ClangModelManagerSupport()
|
||||
{
|
||||
QTC_CHECK(m_projectSettings.isEmpty());
|
||||
m_generatorSynchronizer.waitForFinished();
|
||||
m_instance = nullptr;
|
||||
}
|
||||
@@ -427,11 +418,10 @@ void ClangModelManagerSupport::updateLanguageClient(
|
||||
|
||||
});
|
||||
const Utils::FilePath includeDir = settings.clangdIncludePath();
|
||||
const ClangDiagnosticConfig warningsConfig = warningsConfigForProject(project);
|
||||
auto future = Utils::runAsync(&Internal::generateCompilationDB, projectInfo, jsonDbDir,
|
||||
CompilationDbPurpose::CodeModel,
|
||||
warningsConfig, optionsForProject(project, warningsConfig),
|
||||
includeDir);
|
||||
warningsConfigForProject(project),
|
||||
globalClangOptions(), includeDir);
|
||||
generatorWatcher->setFuture(future);
|
||||
m_generatorSynchronizer.addFuture(future);
|
||||
}
|
||||
@@ -670,42 +660,6 @@ static ClangEditorDocumentProcessors clangProcessors()
|
||||
return result;
|
||||
}
|
||||
|
||||
static ClangEditorDocumentProcessors
|
||||
clangProcessorsWithProject(const ProjectExplorer::Project *project)
|
||||
{
|
||||
return ::Utils::filtered(clangProcessors(), [project](ClangEditorDocumentProcessor *p) {
|
||||
return p->hasProjectPart() && p->projectPart()->belongsToProject(project);
|
||||
});
|
||||
}
|
||||
|
||||
static void updateProcessors(const ClangEditorDocumentProcessors &processors)
|
||||
{
|
||||
CppEditor::CppModelManager *modelManager = cppModelManager();
|
||||
for (ClangEditorDocumentProcessor *processor : processors)
|
||||
modelManager->cppEditorDocument(processor->filePath())->resetProcessor();
|
||||
modelManager->updateCppEditorDocuments(/*projectsUpdated=*/ false);
|
||||
}
|
||||
|
||||
void ClangModelManagerSupport::onProjectAdded(ProjectExplorer::Project *project)
|
||||
{
|
||||
QTC_ASSERT(!m_projectSettings.value(project), return);
|
||||
|
||||
auto *settings = new Internal::ClangProjectSettings(project);
|
||||
connect(settings, &Internal::ClangProjectSettings::changed, [project]() {
|
||||
updateProcessors(clangProcessorsWithProject(project));
|
||||
});
|
||||
|
||||
m_projectSettings.insert(project, settings);
|
||||
}
|
||||
|
||||
void ClangModelManagerSupport::onAboutToRemoveProject(ProjectExplorer::Project *project)
|
||||
{
|
||||
ClangProjectSettings * const settings = m_projectSettings.value(project);
|
||||
QTC_ASSERT(settings, return);
|
||||
m_projectSettings.remove(project);
|
||||
delete settings;
|
||||
}
|
||||
|
||||
void ClangModelManagerSupport::onProjectPartsUpdated(ProjectExplorer::Project *project)
|
||||
{
|
||||
QTC_ASSERT(project, return);
|
||||
@@ -765,19 +719,6 @@ void ClangModelManagerSupport::onClangdSettingsChanged()
|
||||
}
|
||||
}
|
||||
|
||||
static ClangEditorDocumentProcessors clangProcessorsWithDiagnosticConfig(
|
||||
const QVector<::Utils::Id> &configIds)
|
||||
{
|
||||
return ::Utils::filtered(clangProcessors(), [configIds](ClangEditorDocumentProcessor *p) {
|
||||
return configIds.contains(p->diagnosticConfigId());
|
||||
});
|
||||
}
|
||||
|
||||
void ClangModelManagerSupport::onDiagnosticConfigsInvalidated(const QVector<::Utils::Id> &configIds)
|
||||
{
|
||||
updateProcessors(clangProcessorsWithDiagnosticConfig(configIds));
|
||||
}
|
||||
|
||||
static ClangEditorDocumentProcessors
|
||||
clangProcessorsWithProjectParts(const QStringList &projectPartIds)
|
||||
{
|
||||
@@ -805,12 +746,6 @@ QString ClangModelManagerSupport::dummyUiHeaderOnDiskPath(const QString &filePat
|
||||
return m_uiHeaderOnDiskManager.mapPath(filePath);
|
||||
}
|
||||
|
||||
ClangProjectSettings &ClangModelManagerSupport::projectSettings(
|
||||
ProjectExplorer::Project *project) const
|
||||
{
|
||||
return *m_projectSettings.value(project);
|
||||
}
|
||||
|
||||
QString ClangModelManagerSupport::dummyUiHeaderOnDiskDirPath() const
|
||||
{
|
||||
return m_uiHeaderOnDiskManager.directoryPath();
|
||||
|
||||
Reference in New Issue
Block a user