summaryrefslogtreecommitdiff
path: root/src/plugins/cpptools
diff options
context:
space:
mode:
Diffstat (limited to 'src/plugins/cpptools')
-rw-r--r--src/plugins/cpptools/builtincursorinfo.cpp6
-rw-r--r--src/plugins/cpptools/builtineditordocumentprocessor.cpp1
-rw-r--r--src/plugins/cpptools/cppcanonicalsymbol.cpp3
-rw-r--r--src/plugins/cpptools/cppcompletionassist.cpp11
-rw-r--r--src/plugins/cpptools/cppcompletionassist.h2
-rw-r--r--src/plugins/cpptools/cppelementevaluator.cpp2
-rw-r--r--src/plugins/cpptools/cppfollowsymbolundercursor.cpp32
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;
}