diff options
author | Nikolai Kosjar <nikolai.kosjar@digia.com> | 2014-06-10 16:05:14 -0400 |
---|---|---|
committer | Erik Verbruggen <erik.verbruggen@digia.com> | 2014-08-20 10:24:23 +0200 |
commit | fa4e839bbe9667bec913bf15175237549a5fa55b (patch) | |
tree | 1a3e95fcae0a5abd8c009830536edd7fedd29e70 /src/plugins/cpptools/cpptoolsreuse.cpp | |
parent | a87fa1e223e9aca9912fb13400f4fb121f03827b (diff) | |
download | qt-creator-fa4e839bbe9667bec913bf15175237549a5fa55b.tar.gz |
CppEditor: Move two functions to cpptoolsreuse.{h,cpp}
They do not really depend on CppEditorWidget and will be re-used in a
follow-up change.
CppEditorWidget::identifierUnderCursor()
CppEditorWidget::findCanonicalMacro()
Change-Id: I553bb68694fb4b5f1baa331debf33ae234e3dedf
Reviewed-by: Erik Verbruggen <erik.verbruggen@digia.com>
Diffstat (limited to 'src/plugins/cpptools/cpptoolsreuse.cpp')
-rw-r--r-- | src/plugins/cpptools/cpptoolsreuse.cpp | 32 |
1 files changed, 29 insertions, 3 deletions
diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index bb2d52c401..ce8b73c4bc 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -30,16 +30,16 @@ #include "cpptoolsreuse.h" #include <coreplugin/editormanager/editormanager.h> +#include <texteditor/convenience.h> #include <cplusplus/Overview.h> #include <cplusplus/LookupContext.h> #include <utils/qtcassert.h> #include <QSet> -#include <QTextDocument> -#include <QTextCursor> #include <QStringRef> - +#include <QTextCursor> +#include <QTextDocument> using namespace CPlusPlus; @@ -200,4 +200,30 @@ void switchHeaderSource() Core::EditorManager::openEditor(otherFile); } +QString identifierUnderCursor(QTextCursor *cursor) +{ + cursor->movePosition(QTextCursor::StartOfWord); + cursor->movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor); + return cursor->selectedText(); +} + +const Macro *findCanonicalMacro(const QTextCursor &cursor, Document::Ptr document) +{ + QTC_ASSERT(document, return 0); + + int line, column; + TextEditor::Convenience::convertPosition(cursor.document(), cursor.position(), &line, &column); + + if (const Macro *macro = document->findMacroDefinitionAt(line)) { + QTextCursor macroCursor = cursor; + const QByteArray name = CppTools::identifierUnderCursor(¯oCursor).toUtf8(); + if (macro->name() == name) + return macro; + } else if (const Document::MacroUse *use = document->findMacroUseAt(cursor.position())) { + return &use->macro(); + } + + return 0; +} + } // CppTools |