From f06bde70748f39b773e2e4e26275e74cee85f6d0 Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Wed, 13 Jun 2018 10:03:47 -0700 Subject: [PATCH] don't insert extra ; if it's present --- .../completion/XmlCompletionContributor.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/xml/impl/src/com/intellij/codeInsight/completion/XmlCompletionContributor.java b/xml/impl/src/com/intellij/codeInsight/completion/XmlCompletionContributor.java index 68ade0ccf927..7baa9af42c5b 100644 --- a/xml/impl/src/com/intellij/codeInsight/completion/XmlCompletionContributor.java +++ b/xml/impl/src/com/intellij/codeInsight/completion/XmlCompletionContributor.java @@ -28,6 +28,7 @@ import com.intellij.psi.tree.TokenSet; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.xml.*; import com.intellij.util.ProcessingContext; +import com.intellij.util.text.CharArrayUtil; import com.intellij.xml.Html5SchemaProvider; import com.intellij.xml.XmlBundle; import com.intellij.xml.XmlExtension; @@ -370,9 +371,13 @@ public class XmlCompletionContributor extends CompletionContributor { public void handleInsert(InsertionContext context, LookupElement item) { super.handleInsert(context, item); context.setAddCompletionChar(false); - final CaretModel caretModel = context.getEditor().getCaretModel(); - context.getEditor().getDocument().insertString(caretModel.getOffset(), ";"); - caretModel.moveToOffset(caretModel.getOffset() + 1); + Editor editor = context.getEditor(); + final CaretModel caretModel = editor.getCaretModel(); + int caretOffset = caretModel.getOffset(); + if (!CharArrayUtil.regionMatches(editor.getDocument().getCharsSequence(), caretOffset, ";")) { + editor.getDocument().insertString(caretOffset, ";"); + } + caretModel.moveToOffset(caretOffset + 1); } } }