diff --git a/src/plugins/cppeditor/cppeditor.cpp b/src/plugins/cppeditor/cppeditor.cpp index d35471b6ddc4ec61329e1ae6c1ddd38e5df32efe..b561467db17f5ab60dd7c886e4e9d8c65f0602d1 100644 --- a/src/plugins/cppeditor/cppeditor.cpp +++ b/src/plugins/cppeditor/cppeditor.cpp @@ -215,7 +215,7 @@ protected: if (member->identifier() != id) continue; else if (member->line() < line || (member->line() == line && member->column() <= column)) { - localUses[member].append(SemanticInfo::Use(ast, line, column, id->size())); + localUses[member].append(SemanticInfo::Use(line, column, id->size())); return true; } } @@ -251,7 +251,7 @@ protected: } Identifier *id = identifier(ast->identifier_token); - externalUses[id].append(SemanticInfo::Use(ast, line, column, id->size())); + externalUses[id].append(SemanticInfo::Use(line, column, id->size())); return false; } @@ -283,7 +283,7 @@ protected: } Identifier *id = identifier(ast->identifier_token); - externalUses[id].append(SemanticInfo::Use(ast, line, column, id->size())); + externalUses[id].append(SemanticInfo::Use(line, column, id->size())); for (TemplateArgumentListAST *arg = ast->template_arguments; arg; arg = arg->next) accept(arg); @@ -902,7 +902,6 @@ void CPPEditor::updateMethodBoxIndex() static void highlightUses(QTextDocument *doc, const QTextCharFormat &format, - TranslationUnit *translationUnit, const QList<SemanticInfo::Use> &uses, QList<QTextEdit::ExtraSelection> *selections) { @@ -910,34 +909,18 @@ static void highlightUses(QTextDocument *doc, return; foreach (const SemanticInfo::Use &use, uses) { - NameAST *name = use.name; - bool generated = false; + QTextEdit::ExtraSelection sel; - for (unsigned tk = name->firstToken(), end = name->lastToken(); tk != end; ++tk) { - if (translationUnit->tokenAt(tk).generated) { - generated = true; - break; - } - } - - if (! generated) { - unsigned startLine, startColumn; - unsigned endLine, endColumn; - - unsigned identifier_token = name->firstToken(); + sel.format = format; + sel.cursor = QTextCursor(doc); - translationUnit->getTokenStartPosition(identifier_token, &startLine, &startColumn); - translationUnit->getTokenEndPosition(identifier_token, &endLine, &endColumn); + const int anchor = doc->findBlockByNumber(use.line - 1).position() + use.column - 1; + const int position = anchor + use.length; - QTextEdit::ExtraSelection sel; - sel.cursor = QTextCursor(doc); - sel.cursor.setPosition(doc->findBlockByNumber(startLine - 1).position() + startColumn - 1); - sel.cursor.setPosition(doc->findBlockByNumber(endLine - 1).position() + endColumn - 1, - QTextCursor::KeepAnchor); - sel.format = format; + sel.cursor.setPosition(anchor); + sel.cursor.setPosition(position, QTextCursor::KeepAnchor); - selections->append(sel); - } + selections->append(sel); } } @@ -1641,8 +1624,6 @@ void CPPEditor::updateSemanticInfo(const SemanticInfo &semanticInfo) QList<QTextEdit::ExtraSelection> selections; - TranslationUnit *translationUnit = semanticInfo.doc->translationUnit(); - SemanticInfo::LocalUseIterator it(semanticInfo.localUses); while (it.hasNext()) { it.next(); @@ -1661,36 +1642,11 @@ void CPPEditor::updateSemanticInfo(const SemanticInfo &semanticInfo) if (! good) continue; - highlightUses(document(), format, translationUnit, uses, &selections); - break; // done - } - -#if 0 - SemanticInfo::ExternalUseIterator it2(semanticInfo.externalUses); - while (it2.hasNext()) { - it2.next(); - const QList<Use> &uses = it2.value(); - - bool good = false; - foreach (const Use &use, uses) { - unsigned l = line; - unsigned c = column + 1; // convertCursorPosition() returns a 0-based column number. - if (l == use.line && c >= use.column && c <= (use.column + use.length)) { - good = true; - break; - } - } - - if (! good) - continue; - - highlightUses(document(), format, translationUnit, uses, &selections); + highlightUses(document(), format, uses, &selections); break; // done } -#endif setExtraSelections(CodeSemanticsSelection, selections); - } SemanticHighlighter::Source CPPEditor::currentSource() diff --git a/src/plugins/cppeditor/cppeditor.h b/src/plugins/cppeditor/cppeditor.h index 4f18b7f7a59afe98ff57b050a4e38a466de87ea7..ddec563a094a39cbe9a61cb676f4259967ee447f 100644 --- a/src/plugins/cppeditor/cppeditor.h +++ b/src/plugins/cppeditor/cppeditor.h @@ -31,7 +31,6 @@ #define CPPEDITOR_H #include "cppeditorenums.h" -#include <ASTfwd.h> #include <cplusplus/CppDocument.h> #include <texteditor/basetexteditor.h> @@ -67,15 +66,15 @@ class SemanticInfo { public: struct Use { - CPlusPlus::NameAST *name; unsigned line; unsigned column; unsigned length; - Use() {} + Use() + : line(0), column(0), length(0) {} - Use(CPlusPlus::NameAST *name, unsigned line, unsigned column, unsigned length) - : name(name), line(line), column(column), length(length) {} + Use(unsigned line, unsigned column, unsigned length) + : line(line), column(column), length(length) {} }; typedef QHash<CPlusPlus::Symbol *, QList<Use> > LocalUseMap;