From 7c93b26792187633816f93f74b0f0ba7ef5d8eb4 Mon Sep 17 00:00:00 2001 From: David Schulz Date: Mon, 27 May 2019 14:19:28 +0200 Subject: [PATCH] LSP: fix lsp position to QTextCursor position conversion If the 'character' part of the lsp position is greater than the block length for the 'line' it defaults to the end of the line (see documentation under https://microsoft.github.io/language-server-protocol/specification ). Change-Id: I3ed6cefd7431e58adbab1dbcf94a12a5e460019a Reviewed-by: Christian Stenger --- src/libs/languageserverprotocol/lsptypes.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/libs/languageserverprotocol/lsptypes.cpp b/src/libs/languageserverprotocol/lsptypes.cpp index 9b1ddc079db..257e6a13a3d 100644 --- a/src/libs/languageserverprotocol/lsptypes.cpp +++ b/src/libs/languageserverprotocol/lsptypes.cpp @@ -324,8 +324,10 @@ Position::Position(const QTextCursor &cursor) int Position::toPositionInDocument(QTextDocument *doc) const { const QTextBlock block = doc->findBlockByNumber(line()); - if (!block.isValid() || block.length() <= character()) + if (!block.isValid()) return -1; + if (block.length() <= character()) + return block.position() + block.length(); return block.position() + character(); }