fix: Apply part of code suggestion (#203)

This commit is contained in:
Petr Mironychev
2025-06-18 20:00:18 +02:00
committed by GitHub
parent c3f2011c29
commit bf6d09a068

View File

@ -131,16 +131,21 @@ bool LLMSuggestion::applyPart(Part part, TextEditor::TextEditorWidget *widget)
return false; return false;
} }
QTextBlock currentBlock = currentCursor.block();
QString textAfterCursor = currentBlock.text().mid(currentCursor.positionInBlock());
if (!subText.contains('\n')) { if (!subText.contains('\n')) {
QTextCursor deleteCursor = currentCursor; currentCursor.insertText(subText);
deleteCursor.movePosition(QTextCursor::EndOfBlock, QTextCursor::KeepAnchor);
deleteCursor.removeSelectedText();
QString mergedText = mergeWithRightText(subText, textAfterCursor); const QString remainingText = text.mid(next);
currentCursor.insertText(mergedText); 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<Data> newSuggestion{{newRange, newStart, remainingText}};
widget->insertSuggestion(
std::make_unique<LLMSuggestion>(newSuggestion, widget->document(), 0));
}
} else { } else {
currentCursor.insertText(subText); currentCursor.insertText(subText);