From e58dd4381f30b0a3bb792cf3d64eea8d4127326c Mon Sep 17 00:00:00 2001 From: David Schulz Date: Fri, 14 Apr 2023 14:15:08 +0200 Subject: [PATCH] Copilot: set the correct suggestion document for inline suggestions Change-Id: Idbccf2eb68b4d1e2bd3751e851310cc74cac2694 Reviewed-by: Marcus Tillmanns Reviewed-by: Artem Sokolovskii Reviewed-by: --- src/plugins/copilot/copilotsuggestion.cpp | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/plugins/copilot/copilotsuggestion.cpp b/src/plugins/copilot/copilotsuggestion.cpp index de5660c02d1..28da286f1f7 100644 --- a/src/plugins/copilot/copilotsuggestion.cpp +++ b/src/plugins/copilot/copilotsuggestion.cpp @@ -9,6 +9,7 @@ using namespace Utils; using namespace TextEditor; +using namespace LanguageServerProtocol; namespace Copilot::Internal { @@ -19,7 +20,14 @@ CopilotSuggestion::CopilotSuggestion(const QList &completions, , m_currentCompletion(currentCompletion) { const Completion completion = completions.value(currentCompletion); - document()->setPlainText(completion.text()); + const Position start = completion.range().start(); + const Position end = completion.range().end(); + QString text = start.toTextCursor(origin).block().text(); + int length = text.length() - start.character(); + if (start.line() == end.line()) + length = end.character() - start.character(); + text.replace(start.character(), length, completion.text()); + document()->setPlainText(text); m_start = completion.position().toTextCursor(origin); m_start.setKeepPositionOnInsert(true); setCurrentPosition(m_start.position());