void (final @NotNull Project project, final Editor editor) { if (editor == null) return; //final PsiFile psiFile = PsiDocumentManager.getInstance(project).getPsiFile(editor.getDocument()); final PsiFile psiFile = PsiUtilBase.getPsiFileInEditor(editor, project); if (psiFile == null) return; final CodeInsightActionHandler handler = getHandler(); PsiElement elementToMakeWritable = handler.getElementToMakeWritable(psiFile); if (elementToMakeWritable != null && !(EditorModificationUtil.checkModificationAllowed(editor) && FileModificationService.getInstance().preparePsiElementsForWrite(elementToMakeWritable))) { return; } if (elementToMakeWritable instanceof PsiCompiledElement) { return; } CommandProcessor.getInstance().executeCommand(project, () -> { final Runnable action = () -> { if (!UIUtil.isShowing(editor.getContentComponent())) return; handler.invoke(project, editor, psiFile); }; if (handler.startInWriteAction()) { ApplicationManager.getApplication().runWriteAction(action); } else { action.run(); } }, getCommandName(), DocCommandGroupId.noneGroupId(editor.getDocument()), editor.getDocument()); }