@Override public TextEditorHighlightingPass createHighlightingPass(@NotNull final PsiFile file, @NotNull final Editor editor) { if (ApplicationManager.getApplication().isHeadlessEnvironment()) return null; if (editor.isOneLineMode()) return null; if (!(file instanceof BnfFile)) return null; final VirtualFile virtualFile = file.getVirtualFile(); if (virtualFile == null || !FileEditorManager.getInstance(myProject).isFileOpen(virtualFile)) return null; return new TextEditorHighlightingPass(file.getProject(), editor.getDocument(), false) { List<HighlightInfo> infos = ContainerUtil.newArrayList(); @Override public void doCollectInformation(@NotNull ProgressIndicator progress) { infos.clear(); LivePreviewLanguage previewLanguage = LivePreviewLanguage.findInstance(file); if (previewLanguage == null) return; List<Editor> previewEditors = previewLanguage.getPreviewEditors(myProject); for (Editor e : previewEditors) { if (Boolean.TRUE.equals(GRAMMAR_AT_CARET_KEY.get(e))) { collectHighlighters(myProject, previewEditors.get(0), previewLanguage, infos); } } } @Override public void doApplyInformationToEditor() { Document document = editor.getDocument(); UpdateHighlightersUtil.setHighlightersToEditor(myProject, document, 0, file.getTextLength(), infos, getColorsScheme(), getId()); } }; }