From a48fcfecd4a858f340f347e56c7734f7584f2aa1 Mon Sep 17 00:00:00 2001 From: Christian Kandeler Date: Tue, 25 Jun 2024 11:45:16 +0200 Subject: [PATCH] ClangCodeModel: Prevent adding an already-present closing quote ... when doing completion for header includes. Fixes: QTCREATORBUG-31103 Change-Id: Ic2d4eb4abce4f6d0f7d08b0ff0f5e0f54669eb65 Reviewed-by: David Schulz --- src/plugins/clangcodemodel/clangdcompletion.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/plugins/clangcodemodel/clangdcompletion.cpp b/src/plugins/clangcodemodel/clangdcompletion.cpp index 44520d324de..b781c564887 100644 --- a/src/plugins/clangcodemodel/clangdcompletion.cpp +++ b/src/plugins/clangcodemodel/clangdcompletion.cpp @@ -359,8 +359,14 @@ void ClangdCompletionItem::apply(TextDocumentManipulatorInterface &manipulator, } // Avoid inserting characters that are already there + // For include file completions, also consider a possibly pre-existing + // closing quote or angle bracket. QTextCursor cursor = manipulator.textCursorAt(rangeStart); cursor.movePosition(QTextCursor::EndOfWord); + if (kind == CompletionItemKind::File && !textToBeInserted.isEmpty() + && textToBeInserted.right(1) == manipulator.textAt(cursor.position(), 1)) { + cursor.setPosition(cursor.position() + 1); + } const QString textAfterCursor = manipulator.textAt(currentPos, cursor.position() - currentPos); if (currentPos < cursor.position() && textToBeInserted != textAfterCursor