TextEditor: support inline suggestions

Change-Id: I70924a37f9078c5b33c1703e099fc9ddc0b1ae9a
Reviewed-by: Marcus Tillmanns <marcus.tillmanns@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: <github-actions-qt-creator@cristianadam.eu>
This commit is contained in:
David Schulz
2023-03-13 15:11:50 +01:00
parent 15a39259e9
commit 7cb585af87
6 changed files with 144 additions and 44 deletions

View File

@@ -373,10 +373,16 @@ QAction *TextDocument::createDiffAgainstCurrentFileAction(
return diffAction;
}
void TextDocument::insertSuggestion(const QString &text, const QTextBlock &block)
void TextDocument::insertSuggestion(const QString &text, const QTextCursor &cursor)
{
TextDocumentLayout::userData(block)->setReplacement(block.text() + text);
TextDocumentLayout::updateReplacmentFormats(block, fontSettings());
const QTextBlock block = cursor.block();
const QString blockText = block.text();
QString replacement = blockText.left(cursor.positionInBlock()) + text;
if (!text.contains('\n'))
replacement.append(blockText.mid(cursor.positionInBlock()));
TextDocumentLayout::userData(block)->setReplacement(replacement);
TextDocumentLayout::userData(block)->setReplacementPosition(cursor.positionInBlock());
TextDocumentLayout::updateReplacementFormats(block, fontSettings());
updateLayout();
}
@@ -428,7 +434,7 @@ void TextDocument::applyFontSettings()
d->m_fontSettingsNeedsApply = false;
QTextBlock block = document()->firstBlock();
while (block.isValid()) {
TextDocumentLayout::updateReplacmentFormats(block, fontSettings());
TextDocumentLayout::updateReplacementFormats(block, fontSettings());
block = block.next();
}
updateLayout();