summaryrefslogtreecommitdiff
path: root/src/plugins/clangrefactoring
diff options
context:
space:
mode:
authorIvan Donchevskii <ivan.donchevskii@qt.io>2017-10-05 09:54:21 +0200
committerIvan Donchevskii <ivan.donchevskii@qt.io>2017-12-14 14:25:14 +0000
commit7a7123b1bc09c95b10eb1b2412669ed7c66a2e19 (patch)
treeb9d35e29e1bb4398d4e1b78cc4b3522962579566 /src/plugins/clangrefactoring
parentc76080410222685484515bbac86e3852138aa825 (diff)
downloadqt-creator-7a7123b1bc09c95b10eb1b2412669ed7c66a2e19.tar.gz
Clang: add globalFollowSymbol to RefactoringEngine
Allows to follow outside of current TU. Change-Id: Ieea2fd72bfdf6d60a988b40efcf2f41c5a71d045 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangrefactoring')
-rw-r--r--src/plugins/clangrefactoring/refactoringengine.cpp19
-rw-r--r--src/plugins/clangrefactoring/refactoringengine.h7
2 files changed, 26 insertions, 0 deletions
diff --git a/src/plugins/clangrefactoring/refactoringengine.cpp b/src/plugins/clangrefactoring/refactoringengine.cpp
index d76c5d61d6..75f79a7a2b 100644
--- a/src/plugins/clangrefactoring/refactoringengine.cpp
+++ b/src/plugins/clangrefactoring/refactoringengine.cpp
@@ -35,6 +35,7 @@
#include <clangsupport/filepathcachinginterface.h>
+#include <utils/algorithm.h>
#include <utils/textutils.h>
#include <QTextCursor>
@@ -115,6 +116,24 @@ void RefactoringEngine::findUsages(const CppTools::CursorInEditor &data,
showUsagesCallback(locationsAt(data));
}
+RefactoringEngine::Link RefactoringEngine::globalFollowSymbol(const CppTools::CursorInEditor &data,
+ const CPlusPlus::Snapshot &,
+ const CPlusPlus::Document::Ptr &,
+ CppTools::SymbolFinder *,
+ bool) const
+{
+ // TODO: replace that with specific followSymbol query
+ const CppTools::Usages usages = locationsAt(data);
+ CppTools::Usage usage = Utils::findOrDefault(usages, [&data](const CppTools::Usage &usage) {
+ // We've already searched in the current file, skip it.
+ if (usage.path == data.filePath().toString())
+ return false;
+ return true;
+ });
+
+ return Link(usage.path, usage.line, usage.column);
+}
+
bool RefactoringEngine::isRefactoringEngineAvailable() const
{
return m_server.isAvailable();
diff --git a/src/plugins/clangrefactoring/refactoringengine.h b/src/plugins/clangrefactoring/refactoringengine.h
index 9f8450e961..951a18fb53 100644
--- a/src/plugins/clangrefactoring/refactoringengine.h
+++ b/src/plugins/clangrefactoring/refactoringengine.h
@@ -36,6 +36,8 @@ class RefactoringClientInterface;
class RefactoringServerInterface;
}
+namespace CppTools { class SymbolFinder; }
+
namespace ClangRefactoring {
class RefactoringEngine : public CppTools::RefactoringEngineInterface
@@ -55,6 +57,11 @@ public:
const QString &) override;
void findUsages(const CppTools::CursorInEditor &data,
CppTools::UsagesCallback &&showUsagesCallback) const override;
+ Link globalFollowSymbol(const CppTools::CursorInEditor &data,
+ const CPlusPlus::Snapshot &,
+ const CPlusPlus::Document::Ptr &,
+ CppTools::SymbolFinder *,
+ bool) const override;
bool isRefactoringEngineAvailable() const override;
void setRefactoringEngineAvailable(bool isAvailable);