From fe0bdf8314efd461ae53d70c989bec8cd8178975 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Wed, 19 May 2021 13:08:01 +0200 Subject: [PATCH] ClangCodeModel: Add helper for retrieving ClangdClient for source file Change-Id: I0a379e146abe65a144efb307696852de75fa14a6 Reviewed-by: David Schulz --- .../clangcodemodel/clangmodelmanagersupport.cpp | 5 +++++ .../clangcodemodel/clangmodelmanagersupport.h | 1 + .../clangcodemodel/clangrefactoringengine.cpp | 16 ++++++---------- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp index 32b5b31585e..d2fb17d64de 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.cpp @@ -353,6 +353,11 @@ ClangdClient *ClangModelManagerSupport::clientForProject( return clients.empty() ? nullptr : qobject_cast(clients.first()); } +ClangdClient *ClangModelManagerSupport::clientForFile(const Utils::FilePath &file) +{ + return clientForProject(ProjectExplorer::SessionManager::projectForFile(file)); +} + ClangdClient *ClangModelManagerSupport::createClient(ProjectExplorer::Project *project, const Utils::FilePath &jsonDbDir) { diff --git a/src/plugins/clangcodemodel/clangmodelmanagersupport.h b/src/plugins/clangcodemodel/clangmodelmanagersupport.h index 21da8e1aea5..1c7724b5d50 100644 --- a/src/plugins/clangcodemodel/clangmodelmanagersupport.h +++ b/src/plugins/clangcodemodel/clangmodelmanagersupport.h @@ -80,6 +80,7 @@ public: ClangProjectSettings &projectSettings(ProjectExplorer::Project *project) const; ClangdClient *clientForProject(const ProjectExplorer::Project *project); + ClangdClient *clientForFile(const Utils::FilePath &file); static ClangModelManagerSupport *instance(); diff --git a/src/plugins/clangcodemodel/clangrefactoringengine.cpp b/src/plugins/clangcodemodel/clangrefactoringengine.cpp index 3ef8a56f759..f42cf79a610 100644 --- a/src/plugins/clangcodemodel/clangrefactoringengine.cpp +++ b/src/plugins/clangcodemodel/clangrefactoringengine.cpp @@ -31,7 +31,6 @@ #include #include -#include #include #include @@ -90,9 +89,8 @@ void RefactoringEngine::globalRename(const CppTools::CursorInEditor &cursor, CppTools::UsagesCallback &&callback, const QString &replacement) { - ProjectExplorer::Project * const project - = ProjectExplorer::SessionManager::projectForFile(cursor.filePath()); - ClangdClient * const client = ClangModelManagerSupport::instance()->clientForProject(project); + ClangdClient * const client + = ClangModelManagerSupport::instance()->clientForFile(cursor.filePath()); if (!client || !client->isFullyIndexed()) { CppTools::CppModelManager::builtinRefactoringEngine() ->globalRename(cursor, std::move(callback), replacement); @@ -106,9 +104,8 @@ void RefactoringEngine::globalRename(const CppTools::CursorInEditor &cursor, void RefactoringEngine::findUsages(const CppTools::CursorInEditor &cursor, CppTools::UsagesCallback &&callback) const { - ProjectExplorer::Project * const project - = ProjectExplorer::SessionManager::projectForFile(cursor.filePath()); - ClangdClient * const client = ClangModelManagerSupport::instance()->clientForProject(project); + ClangdClient * const client + = ClangModelManagerSupport::instance()->clientForFile(cursor.filePath()); if (!client || !client->isFullyIndexed()) { CppTools::CppModelManager::builtinRefactoringEngine() ->findUsages(cursor, std::move(callback)); @@ -127,9 +124,8 @@ void RefactoringEngine::globalFollowSymbol( CppTools::SymbolFinder *symbolFinder, bool inNextSplit) const { - ProjectExplorer::Project * const project - = ProjectExplorer::SessionManager::projectForFile(cursor.filePath()); - ClangdClient * const client = ClangModelManagerSupport::instance()->clientForProject(project); + ClangdClient * const client + = ClangModelManagerSupport::instance()->clientForFile(cursor.filePath()); if (!client || !client->isFullyIndexed()) { CppTools::CppModelManager::builtinRefactoringEngine() ->globalFollowSymbol(cursor, std::move(callback), snapshot, doc, symbolFinder,