@Override public void fileClosed(@NotNull FileEditorManager fileEditorManager, @NotNull VirtualFile virtualFile) { FileEditor[] editors = fileEditorManager.getEditors(virtualFile); for (FileEditor editor : editors) { EditorEx editorEx = getEditorEx(editor); if (editorEx != null) { Map<Expression, RangeHighlighterEx> m = highlighters.remove(editorEx); if (m != null) { m.forEach((expression, highlighter) -> editorEx.getMarkupModel().removeHighlighter(highlighter) ); } } } }
if (highlighter == null) { TextRange htr = expression.getHighlightedTextRange(); highlighter = (RangeHighlighterEx) editorEx.getMarkupModel() .addRangeHighlighter(htr.getStartOffset(), htr.getEndOffset(), HighlighterLayer.WARNING - 1, RangeHighlighterEx __highlighter = m.remove(expression); if (__highlighter != null) { editorEx.getMarkupModel().removeHighlighter(__highlighter);
@Override public void updateView(@NotNull List<NamedTextAttr> namedTextAttrList) { UIUtil.invokeLaterIfNeeded(() -> { if (myEditor.isDisposed()) { return; } myEditor.getMarkupModel().removeAllHighlighters(); myEditor.getSelectionModel().removeSelection(); if (namedTextAttrList.isEmpty()) { ApplicationManager.getApplication().runWriteAction(() -> { myEditor.getDocument().setText(""); }); return; } StringBuilder sb = new StringBuilder(); for (NamedTextAttr namedTextAttr : namedTextAttrList) { sb.append(namedTextAttr.getName()).append("\n"); } ApplicationManager.getApplication().runWriteAction(() -> { myEditor.getDocument().setText(sb.toString()); }); int size = namedTextAttrList.size(); for (int i = 0; i < size; i++) { highlightLine(i, namedTextAttrList.get(i)); } }); }
private void highlightLine(int index, NamedTextAttr namedTextAttr) { UIUtil.invokeAndWaitIfNeeded((Runnable) () -> { try { MarkupModelEx markupModel = myEditor.getMarkupModel(); final Document doc = markupModel.getDocument(); final int lineStartOffset = doc.getLineStartOffset(index); final int lineEndOffset = doc.getLineEndOffset(index); // IDEA-53203: add ERASE_MARKER for manually defined attributes markupModel.addRangeHighlighter(lineStartOffset, lineEndOffset, HighlighterLayer.SELECTION - 1, TextAttributes.ERASE_MARKER, HighlighterTargetArea.EXACT_RANGE); RangeHighlighter rangeHighlight = markupModel.addRangeHighlighter(lineStartOffset, lineEndOffset, HighlighterLayer.SELECTION - 1, namedTextAttr, HighlighterTargetArea.EXACT_RANGE); rangeHighlight.setErrorStripeMarkColor(namedTextAttr.getErrorStripeColor()); rangeHighlight.setErrorStripeTooltip(namedTextAttr.getName()); } catch (Exception e) { throw new RuntimeException(e); } }); }
EditorMarkupModel markupModel = (EditorMarkupModel) myEditor.getMarkupModel(); markupModel.setErrorStripeRenderer(renderer); markupModel.setErrorStripeVisible(true);