From bf6d09a068152f3b207127cab992bf0cdf5d121b Mon Sep 17 00:00:00 2001 From: Petr Mironychev <9195189+Palm1r@users.noreply.github.com> Date: Wed, 18 Jun 2025 20:00:18 +0200 Subject: [PATCH] fix: Apply part of code suggestion (#203) --- LLMSuggestion.cpp | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/LLMSuggestion.cpp b/LLMSuggestion.cpp index 20e16f9..006453a 100644 --- a/LLMSuggestion.cpp +++ b/LLMSuggestion.cpp @@ -131,16 +131,21 @@ bool LLMSuggestion::applyPart(Part part, TextEditor::TextEditorWidget *widget) return false; } - QTextBlock currentBlock = currentCursor.block(); - QString textAfterCursor = currentBlock.text().mid(currentCursor.positionInBlock()); - if (!subText.contains('\n')) { - QTextCursor deleteCursor = currentCursor; - deleteCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor); - deleteCursor.removeSelectedText(); + currentCursor.insertText(subText); - QString mergedText = mergeWithRightText(subText, textAfterCursor); - currentCursor.insertText(mergedText); + const QString remainingText = text.mid(next); + if (!remainingText.isEmpty()) { + QTextCursor newCursor = widget->textCursor(); + const Utils::Text::Position newStart = Utils::Text::Position::fromPositionInDocument( + newCursor.document(), newCursor.position()); + const Utils::Text::Position + newEnd{newStart.line, newStart.column + int(remainingText.length())}; + const Utils::Text::Range newRange{newStart, newEnd}; + const QList newSuggestion{{newRange, newStart, remainingText}}; + widget->insertSuggestion( + std::make_unique(newSuggestion, widget->document(), 0)); + } } else { currentCursor.insertText(subText);