diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java index bb21eac69ecd..ba4768f73099 100644 --- a/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java +++ b/platform/lang-impl/src/com/intellij/codeInsight/editorActions/TypedHandler.java @@ -148,14 +148,17 @@ public class TypedHandler extends TypedActionHandlerBase { return; } + final PsiDocumentManager psiDocumentManager = PsiDocumentManager.getInstance(project); + final Document originalDocument = originalEditor.getDocument(); originalEditor.getCaretModel().runForEachCaret(new CaretAction() { @Override public void perform(Caret caret) { - PsiDocumentManager.getInstance(project) - .doPostponedOperationsAndUnblockDocument(originalEditor.getDocument()); // to clean up after previous caret processing + if (psiDocumentManager.isDocumentBlockedByPsi(originalDocument)) { + psiDocumentManager.doPostponedOperationsAndUnblockDocument(originalDocument); // to clean up after previous caret processing + } Editor editor = injectedEditorIfCharTypedIsSignificant(charTyped, originalEditor, originalFile); - PsiFile file = editor == originalEditor ? originalFile : PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); + PsiFile file = editor == originalEditor ? originalFile : psiDocumentManager.getPsiFile(editor.getDocument()); final TypedHandlerDelegate[] delegates = Extensions.getExtensions(TypedHandlerDelegate.EP_NAME); |