diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java index 96f318b3e72b..ae6298393bba 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/InjectedLanguageUtil.java @@ -32,6 +32,7 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.util.*; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.impl.DebugUtil; import com.intellij.psi.impl.PsiManagerEx; import com.intellij.psi.impl.PsiParameterizedCachedValue; import com.intellij.psi.impl.source.DummyHolder; @@ -449,7 +450,15 @@ public class InjectedLanguageUtil { VirtualFileWindowImpl virtualFile = (VirtualFileWindowImpl)injected.getVirtualFile(); PsiManagerEx psiManagerEx = (PsiManagerEx)injected.getManager(); if (psiManagerEx.getProject().isDisposed()) return; - psiManagerEx.getFileManager().setViewProvider(virtualFile, null); + + DebugUtil.startPsiModification("injected clearCaches"); + try { + psiManagerEx.getFileManager().setViewProvider(virtualFile, null); + } + finally { + DebugUtil.finishPsiModification(); + } + PsiElement context = InjectedLanguageManager.getInstance(injected.getProject()).getInjectionHost(injected); PsiFile hostFile; if (context != null) { diff --git a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java index 385d053b2de8..25586f5bbf8f 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/source/tree/injected/MultiHostRegistrarImpl.java @@ -445,9 +445,15 @@ public class MultiHostRegistrarImpl implements MultiHostRegistrar, ModificationT oldViewProvider.performNonPhysically(new Runnable() { @Override public void run() { - final DiffLog diffLog = BlockSupportImpl.mergeTrees(oldFile, oldFileNode, injectedNode, new DaemonProgressIndicator(), - oldFileNode.getText()); - DocumentCommitProcessor.doActualPsiChange(oldFile, diffLog); + DebugUtil.startPsiModification("injected tree diff"); + try { + final DiffLog diffLog = BlockSupportImpl.mergeTrees(oldFile, oldFileNode, injectedNode, new DaemonProgressIndicator(), + oldFileNode.getText()); + DocumentCommitProcessor.doActualPsiChange(oldFile, diffLog); + } + finally { + DebugUtil.finishPsiModification(); + } } }); assert shreds.isValid();