aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs/languageserverprotocol/lsptypes.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/libs/languageserverprotocol/lsptypes.cpp')
-rw-r--r--src/libs/languageserverprotocol/lsptypes.cpp20
1 files changed, 15 insertions, 5 deletions
diff --git a/src/libs/languageserverprotocol/lsptypes.cpp b/src/libs/languageserverprotocol/lsptypes.cpp
index 4bf3f3746e..6f0b57c1e3 100644
--- a/src/libs/languageserverprotocol/lsptypes.cpp
+++ b/src/libs/languageserverprotocol/lsptypes.cpp
@@ -275,7 +275,7 @@ Position Position::withOffset(int offset, const QTextDocument *doc) const
int line;
int character;
Utils::Text::convertPosition(doc, toPositionInDocument(doc) + offset, &line, &character);
- return Position(line - 1, character - 1);
+ return Position(line - 1, character);
}
Range::Range(const Position &start, const Position &end)
@@ -288,13 +288,13 @@ Range::Range(const QTextCursor &cursor)
{
int line, character = 0;
Utils::Text::convertPosition(cursor.document(), cursor.selectionStart(), &line, &character);
- if (line <= 0 || character <= 0)
+ if (line <= 0 || character < 0)
return;
- setStart(Position(line - 1, character - 1));
+ setStart(Position(line - 1, character));
Utils::Text::convertPosition(cursor.document(), cursor.selectionEnd(), &line, &character);
- if (line <= 0 || character <= 0)
+ if (line <= 0 || character < 0)
return;
- setEnd(Position(line - 1, character - 1));
+ setEnd(Position(line - 1, character));
}
bool Range::contains(const Range &other) const
@@ -311,6 +311,16 @@ bool Range::overlaps(const Range &range) const
return !isLeftOf(range) && !range.isLeftOf(*this);
}
+QTextCursor Range::toSelection(QTextDocument *doc) const
+{
+ QTC_ASSERT(doc, return {});
+ if (!isValid())
+ return {};
+ QTextCursor cursor = start().toTextCursor(doc);
+ cursor.setPosition(end().toPositionInDocument(doc), QTextCursor::KeepAnchor);
+ return cursor;
+}
+
QString expressionForGlob(QString globPattern)
{
const QString anySubDir("qtc_anysubdir_id");