From 88b7e5ec2d9f0908aa05aaee2645192372bf330d Mon Sep 17 00:00:00 2001 From: Dennis Ushakov Date: Thu, 12 Feb 2015 12:23:50 +0300 Subject: [PATCH] don't sync when document change is triggered by psi sync --- .../codeInsight/editorActions/XmlTagNameSynchronizer.java | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java index 5cfbc8e5e7b0..0ec2d182cbe8 100644 --- a/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java +++ b/xml/impl/src/com/intellij/codeInsight/editorActions/XmlTagNameSynchronizer.java @@ -43,6 +43,7 @@ import com.intellij.openapi.util.Key; import com.intellij.openapi.util.TextRange; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.impl.PsiDocumentManagerBase; import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil; import com.intellij.util.SmartList; import com.intellij.util.containers.ContainerUtil; @@ -141,7 +142,7 @@ public class XmlTagNameSynchronizer extends CommandAdapter implements Applicatio } private static class TagNameSynchronizer extends DocumentAdapter { - private final PsiDocumentManager myDocumentManager; + private final PsiDocumentManagerBase myDocumentManager; private final Language myLanguage; private enum State {INITIAL, TRACKING, APPLYING} @@ -157,7 +158,7 @@ public class XmlTagNameSynchronizer extends CommandAdapter implements Applicatio final Document document = editor.getDocument(); document.addDocumentListener(this, disposable); document.putUserData(SYNCHRONIZER_KEY, this); - myDocumentManager = PsiDocumentManager.getInstance(project); + myDocumentManager = (PsiDocumentManagerBase)PsiDocumentManager.getInstance(project); } @Override @@ -171,7 +172,7 @@ public class XmlTagNameSynchronizer extends CommandAdapter implements Applicatio final int oldLength = event.getOldLength(); if (myState == State.INITIAL) { final PsiFile file = myDocumentManager.getPsiFile(document); - if (file == null) return; + if (file == null || myDocumentManager.getSynchronizer().isInSynchronization(document)) return; final SmartList leaders = new SmartList(); for (Caret caret : myEditor.getCaretModel().getAllCarets()) {