From eb0bbc3f8ae233cc2f66fba8359af149949dccfc Mon Sep 17 00:00:00 2001 From: Mickael Istria Date: Wed, 20 Sep 2023 15:19:57 +0200 Subject: [PATCH] Fix completion In case where the additionalTextEdits adds longer text then document.length() - offset. Do not shift offset because of additionalTextEdit until we're done reading interesting bits of this document at the target location (eg indentation information) --- .../lsp4e/operations/completion/LSCompletionProposal.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java index 0e8652347..63a55f46a 100644 --- a/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java +++ b/org.eclipse.lsp4e/src/org/eclipse/lsp4e/operations/completion/LSCompletionProposal.java @@ -482,10 +482,10 @@ protected void apply(IDocument document, char trigger, int stateMask, int offset insertText = textEdit.getNewText(); final var regions = new LinkedHashMap>(); int insertionOffset = LSPEclipseUtils.toOffset(textEdit.getRange().getStart(), document); - insertionOffset = computeNewOffset(item.getAdditionalTextEdits(), insertionOffset, document); if (item.getInsertTextMode() == InsertTextMode.AdjustIndentation) { insertText = adjustIndentation(document, insertText, insertionOffset); } + insertionOffset = computeNewOffset(item.getAdditionalTextEdits(), insertionOffset, document); if (item.getInsertTextFormat() == InsertTextFormat.Snippet) { insertText = substituteVariables(insertText); // next is for tabstops, placeholders and linked edition