Clangd: Add per-project settings

Users might want to use clangd for certain project, but not for others.

Change-Id: Id29ce3349f0acd359cf7c824ece073b147ed2280
Reviewed-by: David Schulz <david.schulz@qt.io>
This commit is contained in:
Christian Kandeler
2021-06-28 14:55:54 +02:00
parent b3c83b79f7
commit fbb804c442
10 changed files with 286 additions and 94 deletions

View File

@@ -247,7 +247,7 @@ void ClangModelManagerSupport::connectToWidgetsMarkContextMenuRequested(QWidget
void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *project,
const CppTools::ProjectInfo &projectInfo)
{
if (!CppTools::ClangdSettings::useClangd())
if (!CppTools::ClangdProjectSettings(project).settings().useClangd())
return;
const auto getJsonDbDir = [project] {
if (const ProjectExplorer::Target * const target = project->activeTarget()) {
@@ -266,10 +266,10 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
connect(generatorWatcher, &QFutureWatcher<GenerateCompilationDbResult>::finished,
[this, project, projectInfo, getJsonDbDir, jsonDbDir, generatorWatcher] {
generatorWatcher->deleteLater();
if (!CppTools::ClangdSettings::useClangd())
return;
if (!ProjectExplorer::SessionManager::hasProject(project))
return;
if (!CppTools::ClangdProjectSettings(project).settings().useClangd())
return;
if (cppModelManager()->projectInfo(project) != projectInfo)
return;
if (getJsonDbDir() != jsonDbDir)
@@ -286,10 +286,10 @@ void ClangModelManagerSupport::updateLanguageClient(ProjectExplorer::Project *pr
ClangdClient * const client = createClient(project, jsonDbDir);
connect(client, &Client::initialized, this, [client, project, projectInfo, jsonDbDir] {
using namespace ProjectExplorer;
if (!CppTools::ClangdSettings::useClangd())
return;
if (!SessionManager::hasProject(project))
return;
if (!CppTools::ClangdProjectSettings(project).settings().useClangd())
return;
if (cppModelManager()->projectInfo(project) != projectInfo)
return;