diff options
author | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2019-02-22 12:01:04 +0100 |
---|---|---|
committer | Ivan Donchevskii <ivan.donchevskii@qt.io> | 2019-02-22 13:02:44 +0000 |
commit | 0a3aa12962e47db2421ad09d149118b920e404c8 (patch) | |
tree | 762b568cc91c1ea54b59c247232572ff261294b3 /src/plugins/clangcodemodel | |
parent | 1886c5e19b8021c7f72e6962b9ef1523aa673585 (diff) |
Clang: Follow symbol with Ctrl+click on invalid cursors
When cursor is invalid try to follow it with built-in
code model and highlight the token in case of success.
Fixes: QTCREATORBUG-21637
Change-Id: I4c765882817fa150a155074c9d71beceb5905af8
Reviewed-by: Nikolai Kosjar <nikolai.kosjar@qt.io>
Diffstat (limited to 'src/plugins/clangcodemodel')
-rw-r--r-- | src/plugins/clangcodemodel/clangfollowsymbol.cpp | 23 |
1 files changed, 17 insertions, 6 deletions
diff --git a/src/plugins/clangcodemodel/clangfollowsymbol.cpp b/src/plugins/clangcodemodel/clangfollowsymbol.cpp index 96df23ab20..f1113de164 100644 --- a/src/plugins/clangcodemodel/clangfollowsymbol.cpp +++ b/src/plugins/clangcodemodel/clangfollowsymbol.cpp @@ -28,6 +28,7 @@ #include <coreplugin/editormanager/editormanager.h> #include <cpptools/cppmodelmanager.h> +#include <cpptools/cppfollowsymbolundercursor.h> #include <texteditor/texteditor.h> #include <clangsupport/tokeninfocontainer.h> @@ -183,12 +184,22 @@ void ClangFollowSymbol::findLink(const CppTools::CursorInEditor &data, return processLinkCallback(Utils::Link()); if (!resolveTarget) { - processLinkCallback(linkAtCursor(cursor, - data.filePath().toString(), - static_cast<uint>(line), - static_cast<uint>(column), - processor)); - return; + Utils::Link link = linkAtCursor(cursor, + data.filePath().toString(), + static_cast<uint>(line), + static_cast<uint>(column), + processor); + if (link == Utils::Link()) { + CppTools::FollowSymbolUnderCursor followSymbol; + return followSymbol.findLink(data, + std::move(processLinkCallback), + false, + snapshot, + documentFromSemanticInfo, + symbolFinder, + inNextSplit); + } + return processLinkCallback(link); } QFuture<CppTools::SymbolInfo> infoFuture |