From 1dea2f4ae0b29321e349f50092b6d71196a1bea2 Mon Sep 17 00:00:00 2001 From: Gres Date: Sat, 24 May 2025 19:54:51 +0300 Subject: [PATCH] Display full replaced text and add comment about replacement --- LLMSuggestion.cpp | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/LLMSuggestion.cpp b/LLMSuggestion.cpp index 737bac3..c8a77a2 100644 --- a/LLMSuggestion.cpp +++ b/LLMSuggestion.cpp @@ -172,18 +172,31 @@ LLMSuggestion::LLMSuggestion( int cursorPositionInBlock = cursor.positionInBlock(); - QString rightText = blockText.mid(cursorPositionInBlock); - + QString displayText; if (!data.text.contains('\n')) { + QString rightText = blockText.mid(cursorPositionInBlock); QString processedRightText = mergeWithRightText(data.text, rightText); processedRightText = processedRightText.mid(data.text.length()); - QString displayText = blockText.left(cursorPositionInBlock) + data.text - + processedRightText; - replacementDocument()->setPlainText(displayText); + displayText = blockText.left(cursorPositionInBlock) + data.text + processedRightText; } else { - QString displayText = blockText.left(cursorPositionInBlock) + data.text; - replacementDocument()->setPlainText(displayText); + int toReplace = linesToReplace(data.text, cursor); + if (toReplace < 2) { + displayText = blockText.left(cursorPositionInBlock) + data.text; + } else { + QTextCursor lastLineCursor = cursor; + lastLineCursor.movePosition(QTextCursor::Down, QTextCursor::KeepAnchor, toReplace); + lastLineCursor.select(QTextCursor::LineUnderCursor); + QString lastExistingLine = lastLineCursor.selectedText(); + + QString lastSuggestedLine = data.text.mid(data.text.lastIndexOf('\n') + 1); + + QString tail = existingTailToKeep(lastSuggestedLine, lastExistingLine); + + displayText = blockText.left(cursorPositionInBlock) + data.text + tail + + QString("\n(replaces %1 lines)").arg(toReplace); + } } + replacementDocument()->setPlainText(displayText); } bool LLMSuggestion::applyWord(TextEditor::TextEditorWidget *widget)