From cfd3b561878c6b2559b3fc3db3c1554c67f039f4 Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 23 Jan 2015 13:44:50 +0100 Subject: [PATCH] CppEditor: Move CppEditorWidget::linkToSymbol to CppTools * Cuts direct dependency to CPlusPlus from cppeditor.h, but cppfunctiondecldeflink.h still pulls it in. * Cuts direct dependency to cppeditor.h from cppvirtualfunctionassistprovider.cpp, but it still depends on cppeditorconstants.h. * Cuts direct dependency to cppeditor.h from cppelementevaluator.cpp. The long-term goal is to make the CppEditor independent from concrete code model backends. Change-Id: I291ee0d0da5fc5ed1a839a763fe7be11dcf7a6fb Reviewed-by: Marco Bubke --- src/plugins/cppeditor/cppeditor.cpp | 20 ----------------- src/plugins/cppeditor/cppeditor.h | 5 ----- src/plugins/cppeditor/cppeditoroutline.cpp | 3 ++- src/plugins/cppeditor/cppelementevaluator.cpp | 4 +--- .../cppeditor/cppfollowsymbolundercursor.cpp | 4 ++-- .../cppvirtualfunctionassistprovider.cpp | 8 ++++--- .../cppvirtualfunctionassistprovider.h | 1 - src/plugins/cpptools/cpptoolsreuse.cpp | 22 +++++++++++++++++++ src/plugins/cpptools/cpptoolsreuse.h | 4 ++++ 9 files changed, 36 insertions(+), 35 deletions(-) diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index e01f08c85cb..26ea2038b12 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -592,26 +592,6 @@ void CppEditorWidget::slotCodeStyleSettingsChanged(const QVariant &) formatter.invalidateCache(document()); } -CppEditorWidget::Link CppEditorWidget::linkToSymbol(CPlusPlus::Symbol *symbol) -{ - if (!symbol) - return Link(); - - const QString filename = QString::fromUtf8(symbol->fileName(), - symbol->fileNameLength()); - - unsigned line = symbol->line(); - unsigned column = symbol->column(); - - if (column) - --column; - - if (symbol->isGenerated()) - column = 0; - - return Link(filename, line, column); -} - void CppEditorWidget::updateSemanticInfo(const SemanticInfo &semanticInfo, bool updateUseSelectionSynchronously) { diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 9df8d746c62..96fa9f27d90 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -35,10 +35,8 @@ #include - #include -namespace CPlusPlus { class Symbol; } namespace CppTools { class SemanticInfo; } namespace CppEditor { @@ -62,9 +60,6 @@ class CppEditorWidget : public TextEditor::TextEditorWidget { Q_OBJECT -public: - static Link linkToSymbol(CPlusPlus::Symbol *symbol); - public: CppEditorWidget(); ~CppEditorWidget(); diff --git a/src/plugins/cppeditor/cppeditoroutline.cpp b/src/plugins/cppeditor/cppeditoroutline.cpp index 7b26ac198e4..cf0c654b2c9 100644 --- a/src/plugins/cppeditor/cppeditoroutline.cpp +++ b/src/plugins/cppeditor/cppeditoroutline.cpp @@ -34,6 +34,7 @@ #include "cppeditorplugin.h" #include +#include #include #include @@ -253,7 +254,7 @@ void CppEditorOutline::gotoSymbolInEditor() if (!symbol) return; - const TextEditor::TextEditorWidget::Link &link = CppEditorWidget::linkToSymbol(symbol); + const TextEditor::TextEditorWidget::Link &link = CppTools::linkToSymbol(symbol); if (!link.hasValidTarget()) return; diff --git a/src/plugins/cppeditor/cppelementevaluator.cpp b/src/plugins/cppeditor/cppelementevaluator.cpp index 086e33b3350..55c37722628 100644 --- a/src/plugins/cppeditor/cppelementevaluator.cpp +++ b/src/plugins/cppeditor/cppelementevaluator.cpp @@ -30,8 +30,6 @@ #include "cppelementevaluator.h" -#include "cppeditor.h" - #include #include @@ -302,7 +300,7 @@ CppDeclarableElement::CppDeclarableElement(Symbol *declaration) } tooltip = overview.prettyType(declaration->type(), qualifiedName); - link = CppEditorWidget::linkToSymbol(declaration); + link = CppTools::linkToSymbol(declaration); helpMark = name; } diff --git a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp index ac0600554b6..49bfeb0c1a9 100644 --- a/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp +++ b/src/plugins/cppeditor/cppfollowsymbolundercursor.cpp @@ -366,7 +366,7 @@ CppEditorWidget::Link attemptFuncDeclDef(const QTextCursor &cursor, } if (target) { - result = CppEditorWidget::linkToSymbol(target); + result = CppTools::linkToSymbol(target); unsigned startLine, startColumn, endLine, endColumn; document->translationUnit()->getTokenStartPosition(name->firstToken(), &startLine, @@ -714,7 +714,7 @@ TextEditorWidget::Link FollowSymbolUnderCursor::findLink(const QTextCursor &curs } - link = m_widget->linkToSymbol(def ? def : symbol); + link = CppTools::linkToSymbol(def ? def : symbol); link.linkTextStart = beginOfToken; link.linkTextEnd = endOfToken; return link; diff --git a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp index dbe9a075ec8..3068f91db28 100644 --- a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp +++ b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.cpp @@ -31,7 +31,6 @@ #include "cppvirtualfunctionassistprovider.h" -#include "cppeditor.h" #include "cppeditorconstants.h" #include "cppvirtualfunctionproposalitem.h" @@ -41,6 +40,7 @@ #include #include +#include #include #include #include @@ -132,7 +132,8 @@ public: { QTC_ASSERT(m_params.function, return 0); - AssistProposalItem *hintItem = new VirtualFunctionProposalItem(CppEditorWidget::Link()); + AssistProposalItem *hintItem + = new VirtualFunctionProposalItem(TextEditor::TextEditorWidget::Link()); hintItem->setText(QCoreApplication::translate("VirtualFunctionsAssistProcessor", "...searching overrides")); hintItem->setOrder(-1000); @@ -179,7 +180,8 @@ private: AssistProposalItem *itemFromFunction(Function *func) const { - const CppEditorWidget::Link link = CppEditorWidget::linkToSymbol(maybeDefinitionFor(func)); + const TextEditor::TextEditorWidget::Link link + = CppTools::linkToSymbol(maybeDefinitionFor(func)); QString text = m_overview.prettyName(LookupContext::fullyQualifiedName(func)); if (func->isPureVirtual()) text += QLatin1String(" = 0"); diff --git a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.h b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.h index 5e443adb3ab..dc141d90c94 100644 --- a/src/plugins/cppeditor/cppvirtualfunctionassistprovider.h +++ b/src/plugins/cppeditor/cppvirtualfunctionassistprovider.h @@ -37,7 +37,6 @@ #include #include - #include #include diff --git a/src/plugins/cpptools/cpptoolsreuse.cpp b/src/plugins/cpptools/cpptoolsreuse.cpp index f64a31ffdba..211f8784283 100644 --- a/src/plugins/cpptools/cpptoolsreuse.cpp +++ b/src/plugins/cpptools/cpptoolsreuse.cpp @@ -227,4 +227,26 @@ const Macro *findCanonicalMacro(const QTextCursor &cursor, Document::Ptr documen return 0; } +TextEditor::TextEditorWidget::Link linkToSymbol(Symbol *symbol) +{ + typedef TextEditor::TextEditorWidget::Link Link; + + if (!symbol) + return Link(); + + const QString filename = QString::fromUtf8(symbol->fileName(), + symbol->fileNameLength()); + + unsigned line = symbol->line(); + unsigned column = symbol->column(); + + if (column) + --column; + + if (symbol->isGenerated()) + column = 0; + + return Link(filename, line, column); +} + } // CppTools diff --git a/src/plugins/cpptools/cpptoolsreuse.h b/src/plugins/cpptools/cpptoolsreuse.h index 2041d807cb5..33abdcd4f19 100644 --- a/src/plugins/cpptools/cpptoolsreuse.h +++ b/src/plugins/cpptools/cpptoolsreuse.h @@ -33,6 +33,8 @@ #include "cpptools_global.h" +#include + #include QT_BEGIN_NAMESPACE @@ -59,6 +61,8 @@ bool CPPTOOLS_EXPORT isValidFirstIdentifierChar(const QChar &ch); bool CPPTOOLS_EXPORT isValidIdentifierChar(const QChar &ch); bool CPPTOOLS_EXPORT isValidIdentifier(const QString &s); +TextEditor::TextEditorWidget::Link CPPTOOLS_EXPORT linkToSymbol(CPlusPlus::Symbol *symbol); + QString CPPTOOLS_EXPORT identifierUnderCursor(QTextCursor *cursor); bool CPPTOOLS_EXPORT isOwnershipRAIIType(CPlusPlus::Symbol *symbol,