diff options
Diffstat (limited to 'src/plugins/clangcodemodel/clangdcompletion.cpp')
-rw-r--r-- | src/plugins/clangcodemodel/clangdcompletion.cpp | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/src/plugins/clangcodemodel/clangdcompletion.cpp b/src/plugins/clangcodemodel/clangdcompletion.cpp index 0f0f716eab0..bc7b19a8ea5 100644 --- a/src/plugins/clangcodemodel/clangdcompletion.cpp +++ b/src/plugins/clangcodemodel/clangdcompletion.cpp @@ -288,7 +288,7 @@ void ClangdCompletionItem::apply(TextDocumentManipulator &manipulator, int cursorOffset = 0; bool setAutoCompleteSkipPos = false; int currentPos = manipulator.currentPosition(); - const QTextDocument * const doc = manipulator.textCursorAt(currentPos).document(); + const QTextDocument * const doc = manipulator.document(); const Range range = edit->range(); const int rangeStart = range.start().toPositionInDocument(doc); if (isFunctionLike && completionSettings.m_autoInsertBrackets) { @@ -383,13 +383,14 @@ void ClangdCompletionItem::apply(TextDocumentManipulator &manipulator, textToBeInserted += extraCharacters; const int length = currentPos - rangeStart + extraLength; - const bool isReplaced = manipulator.replace(rangeStart, length, textToBeInserted); + const int oldRevision = manipulator.document()->revision(); + manipulator.replace(rangeStart, length, textToBeInserted); manipulator.setCursorPosition(rangeStart + textToBeInserted.length()); - if (isReplaced) { + if (manipulator.document()->revision() != oldRevision) { if (cursorOffset) manipulator.setCursorPosition(manipulator.currentPosition() + cursorOffset); if (setAutoCompleteSkipPos) - manipulator.setAutoCompleteSkipPosition(manipulator.currentPosition()); + manipulator.addAutoCompleteSkipPosition(); } if (auto additionalEdits = item.additionalTextEdits()) { |