diff options
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r-- | src/plugins/cpptools/builtincursorinfo.cpp | 6 | ||||
-rw-r--r-- | src/plugins/cpptools/builtineditordocumentprocessor.cpp | 1 | ||||
-rw-r--r-- | src/plugins/cpptools/cppcanonicalsymbol.cpp | 3 | ||||
-rw-r--r-- | src/plugins/cpptools/cppcompletionassist.cpp | 11 | ||||
-rw-r--r-- | src/plugins/cpptools/cppcompletionassist.h | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cppelementevaluator.cpp | 2 | ||||
-rw-r--r-- | src/plugins/cpptools/cppfollowsymbolundercursor.cpp | 32 |
7 files changed, 29 insertions, 28 deletions
diff --git a/src/plugins/cpptools/builtincursorinfo.cpp b/src/plugins/cpptools/builtincursorinfo.cpp index 4522af15a9..85603ba090 100644 --- a/src/plugins/cpptools/builtincursorinfo.cpp +++ b/src/plugins/cpptools/builtincursorinfo.cpp @@ -184,8 +184,9 @@ private: { CursorInfo result; + // findLocalUses operates with 1-based line and 0-based column const CppTools::SemanticInfo::LocalUseMap localUses - = BuiltinCursorInfo::findLocalUses(m_document, m_line, m_column); + = BuiltinCursorInfo::findLocalUses(m_document, m_line, m_column - 1); result.localUses = localUses; splitLocalUses(localUses, &result.useRanges, &result.unusedVariablesRanges); @@ -216,8 +217,7 @@ private: bool good = false; foreach (const CppTools::SemanticInfo::Use &use, uses) { unsigned l = static_cast<unsigned>(m_line); - // convertCursorPosition() returns a 0-based column number. - unsigned c = static_cast<unsigned>(m_column + 1); + unsigned c = static_cast<unsigned>(m_column); if (l == use.line && c >= use.column && c <= (use.column + use.length)) { good = true; break; diff --git a/src/plugins/cpptools/builtineditordocumentprocessor.cpp b/src/plugins/cpptools/builtineditordocumentprocessor.cpp index 684f765eac..d5bfa51020 100644 --- a/src/plugins/cpptools/builtineditordocumentprocessor.cpp +++ b/src/plugins/cpptools/builtineditordocumentprocessor.cpp @@ -112,7 +112,6 @@ CppTools::CheckSymbols *createHighlighter(const CPlusPlus::Document::Ptr &doc, int line, column; convertPosition(textDocument, macro.utf16CharOffset(), &line, &column); - ++column; //Highlighting starts at (column-1) --> compensate here Result use(line, column, macro.nameToQString().size(), SemanticHighlighter::MacroUse); macroUses.append(use); } diff --git a/src/plugins/cpptools/cppcanonicalsymbol.cpp b/src/plugins/cpptools/cppcanonicalsymbol.cpp index 3f1869de63..fa5d074921 100644 --- a/src/plugins/cpptools/cppcanonicalsymbol.cpp +++ b/src/plugins/cpptools/cppcanonicalsymbol.cpp @@ -60,7 +60,6 @@ Scope *CanonicalSymbol::getScopeAndExpression(const QTextCursor &cursor, QString QTextCursor tc = cursor; int line, column; Utils::Text::convertPosition(cursor.document(), tc.position(), &line, &column); - ++column; // 1-based line and 1-based column int pos = tc.position(); QTextDocument *textDocument = cursor.document(); @@ -74,7 +73,7 @@ Scope *CanonicalSymbol::getScopeAndExpression(const QTextCursor &cursor, QString ExpressionUnderCursor expressionUnderCursor(m_document->languageFeatures()); *code = expressionUnderCursor(tc); - return m_document->scopeAt(line, column); + return m_document->scopeAt(line, column - 1); } Symbol *CanonicalSymbol::operator()(const QTextCursor &cursor) diff --git a/src/plugins/cpptools/cppcompletionassist.cpp b/src/plugins/cpptools/cppcompletionassist.cpp index af4372a458..87bc2df0b4 100644 --- a/src/plugins/cpptools/cppcompletionassist.cpp +++ b/src/plugins/cpptools/cppcompletionassist.cpp @@ -1092,7 +1092,7 @@ int InternalCppCompletionAssistProcessor::startCompletionHelper() int line = 0, column = 0; Utils::Text::convertPosition(m_interface->textDocument(), startOfExpression, &line, &column); const QString fileName = m_interface->fileName(); - return startCompletionInternal(fileName, line, column, expression, endOfExpression); + return startCompletionInternal(fileName, line, column - 1, expression, endOfExpression); } bool InternalCppCompletionAssistProcessor::tryObjCCompletion() @@ -1125,7 +1125,7 @@ bool InternalCppCompletionAssistProcessor::tryObjCCompletion() int line = 0, column = 0; Utils::Text::convertPosition(m_interface->textDocument(), m_interface->position(), &line, &column); - Scope *scope = thisDocument->scopeAt(line, column); + Scope *scope = thisDocument->scopeAt(line, column - 1); if (!scope) return false; @@ -1319,7 +1319,8 @@ bool InternalCppCompletionAssistProcessor::objcKeywordsWanted() const } int InternalCppCompletionAssistProcessor::startCompletionInternal(const QString &fileName, - unsigned line, unsigned column, + unsigned line, + unsigned positionInBlock, const QString &expr, int endOfExpression) { @@ -1331,7 +1332,7 @@ int InternalCppCompletionAssistProcessor::startCompletionInternal(const QString m_model->m_typeOfExpression->init(thisDocument, m_interface->snapshot()); - Scope *scope = thisDocument->scopeAt(line, column); + Scope *scope = thisDocument->scopeAt(line, positionInBlock); QTC_ASSERT(scope != 0, return -1); if (expression.isEmpty()) { @@ -2016,7 +2017,7 @@ bool InternalCppCompletionAssistProcessor::completeConstructorOrFunction(const Q int lineSigned = 0, columnSigned = 0; Utils::Text::convertPosition(m_interface->textDocument(), m_interface->position(), &lineSigned, &columnSigned); - unsigned line = lineSigned, column = columnSigned; + unsigned line = lineSigned, column = columnSigned - 1; // find a scope that encloses the current location, starting from the lastVisibileSymbol // and moving outwards diff --git a/src/plugins/cpptools/cppcompletionassist.h b/src/plugins/cpptools/cppcompletionassist.h index 8e0097b2fa..7bb7776940 100644 --- a/src/plugins/cpptools/cppcompletionassist.h +++ b/src/plugins/cpptools/cppcompletionassist.h @@ -113,7 +113,7 @@ private: bool tryObjCCompletion(); bool objcKeywordsWanted() const; int startCompletionInternal(const QString &fileName, - unsigned line, unsigned column, + unsigned line, unsigned positionInBlock, const QString &expression, int endOfExpression); diff --git a/src/plugins/cpptools/cppelementevaluator.cpp b/src/plugins/cpptools/cppelementevaluator.cpp index 90fb21a34c..afd8944bde 100644 --- a/src/plugins/cpptools/cppelementevaluator.cpp +++ b/src/plugins/cpptools/cppelementevaluator.cpp @@ -373,7 +373,7 @@ void CppElementEvaluator::execute() // Fetch the expression's code ExpressionUnderCursor expressionUnderCursor(doc->languageFeatures()); const QString &expression = expressionUnderCursor(m_tc); - Scope *scope = doc->scopeAt(line, column); + Scope *scope = doc->scopeAt(line, column - 1); TypeOfExpression typeOfExpression; typeOfExpression.init(doc, snapshot); diff --git a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp index 65bfd310a5..a66c357986 100644 --- a/src/plugins/cpptools/cppfollowsymbolundercursor.cpp +++ b/src/plugins/cpptools/cppfollowsymbolundercursor.cpp @@ -491,12 +491,12 @@ void FollowSymbolUnderCursor::findLink( { Link link; - int lineNumber = 0, positionInBlock = 0; + int line = 0; + int column = 0; QTextCursor cursor = data.cursor(); QTextDocument *document = cursor.document(); - Utils::Text::convertPosition(document, cursor.position(), &lineNumber, &positionInBlock); - const unsigned line = lineNumber; - const unsigned column = positionInBlock + 1; + Utils::Text::convertPosition(document, cursor.position(), &line, &column); + const int positionInBlock = column - 1; Snapshot snapshot = theSnapshot; @@ -541,8 +541,8 @@ void FollowSymbolUnderCursor::findLink( for (int i = 0; i < tokens.size(); ++i) { const Token &tk = tokens.at(i); - if (((unsigned) positionInBlock) >= tk.utf16charsBegin() - && ((unsigned) positionInBlock) < tk.utf16charsEnd()) { + if (static_cast<unsigned>(positionInBlock) >= tk.utf16charsBegin() + && static_cast<unsigned>(positionInBlock) < tk.utf16charsEnd()) { int closingParenthesisPos = tokens.size(); if (i >= 2 && tokens.at(i).is(T_IDENTIFIER) && tokens.at(i - 1).is(T_LPAREN) && (tokens.at(i - 2).is(T_SIGNAL) || tokens.at(i - 2).is(T_SLOT))) { @@ -584,8 +584,8 @@ void FollowSymbolUnderCursor::findLink( // In this case we want to look at one token before the current position to recognize // an operator if the cursor is inside the actual operator: operator[$] - if (unsigned(positionInBlock) >= tk.utf16charsBegin() - && unsigned(positionInBlock) <= tk.utf16charsEnd()) { + if (static_cast<unsigned>(positionInBlock) >= tk.utf16charsBegin() + && static_cast<unsigned>(positionInBlock) <= tk.utf16charsEnd()) { cursorRegionReached = true; if (tk.is(T_OPERATOR)) { link = attemptFuncDeclDef(cursor, theSnapshot, @@ -675,7 +675,7 @@ void FollowSymbolUnderCursor::findLink( } // Find the last symbol up to the cursor position - Scope *scope = doc->scopeAt(line, column); + Scope *scope = doc->scopeAt(line, positionInBlock); if (!scope) return processLinkCallback(link); @@ -698,19 +698,21 @@ void FollowSymbolUnderCursor::findLink( if (d->isDeclaration() || d->isFunction()) { const QString fileName = QString::fromUtf8(d->fileName(), d->fileNameLength()); if (data.filePath().toString() == fileName) { - if (unsigned(lineNumber) == d->line() - && unsigned(positionInBlock) >= d->column()) { // TODO: check the end + if (static_cast<unsigned>(line) == d->line() + && static_cast<unsigned>(positionInBlock) >= d->column()) { + // TODO: check the end result = r; // take the symbol under cursor. break; } } } else if (d->isUsingDeclaration()) { - int tokenBeginLineNumber = 0, tokenBeginColumnNumber = 0; + int tokenBeginLineNumber = 0; + int tokenBeginColumnNumber = 0; Utils::Text::convertPosition(document, beginOfToken, &tokenBeginLineNumber, &tokenBeginColumnNumber); - if (unsigned(tokenBeginLineNumber) > d->line() - || (unsigned(tokenBeginLineNumber) == d->line() - && unsigned(tokenBeginColumnNumber) > d->column())) { + if (static_cast<unsigned>(tokenBeginLineNumber) > d->line() + || (static_cast<unsigned>(tokenBeginLineNumber) == d->line() + && static_cast<unsigned>(tokenBeginColumnNumber) >= d->column())) { result = r; // take the symbol under cursor. break; } |