summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools/cpptoolsreuse.cpp
diff options
context:
space:
mode:
authorNikolai Kosjar <nikolai.kosjar@digia.com>2014-06-10 16:05:14 -0400
committerErik Verbruggen <erik.verbruggen@digia.com>2014-08-20 10:24:23 +0200
commitfa4e839bbe9667bec913bf15175237549a5fa55b (patch)
tree1a3e95fcae0a5abd8c009830536edd7fedd29e70 /src/plugins/cpptools/cpptoolsreuse.cpp
parenta87fa1e223e9aca9912fb13400f4fb121f03827b (diff)
downloadqt-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.cpp32
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(&macroCursor).toUtf8();
+ if (macro->name() == name)
+ return macro;
+ } else if (const Document::MacroUse *use = document->findMacroUseAt(cursor.position())) {
+ return &use->macro();
+ }
+
+ return 0;
+}
+
} // CppTools