private void processEditors(FileEditor[] editors, PsiDocumentManager documentManager) { try { for (FileEditor editor : editors) { EditorEx editorEx = getEditorEx(editor); if (editorEx != null) { highlighters.putIfAbsent(editorEx, new HashMap<>()); for (FoldRegion region : editorEx.getFoldingModel().getAllFoldRegions()) { processRegion(region, documentManager, editorEx); } FoldingListener foldingListener = new FoldingListener() { @Override public void onFoldRegionStateChange(@NotNull FoldRegion region) { processRegion(region, documentManager, editorEx); } @Override public void onFoldProcessingEnd() { } }; editorEx.getFoldingModel().addListener(foldingListener, editor); } } } catch (IndexNotReadyException e) { // ignore } }
private DocumentFragment createDocumentFragment(EditorEx editorEx, FoldRegion fold) { final FoldingGroup group = fold.getGroup(); final int foldStart = fold.getStartOffset(); if (group != null) { final int endOffset = ((FoldingModelImpl) editorEx.getFoldingModel()).getEndOffset(group); return new DocumentFragment(editorEx.getDocument(), foldStart, endOffset); } final int oldEnd = fold.getEndOffset(); return new DocumentFragment(editorEx.getDocument(), foldStart, oldEnd); }
TextRange htr = expression.getHighlightedTextRange(); if (htr.contains(offset)) { for (FoldRegion region : editorEx.getFoldingModel().getAllFoldRegions()) { if (htr.getStartOffset() <= region.getStartOffset() && region.getEndOffset() <= htr.getEndOffset() && isHighlightingRegion(region) && !region.isExpanded()) { editorEx.getFoldingModel() .runBatchFoldingOperation(() -> region.setExpanded(true));
TextRange htr = expression.getHighlightedTextRange(); if (htr.contains(offset)) { for (FoldRegion region : editorEx.getFoldingModel().getAllFoldRegions()) { if (htr.getStartOffset() <= region.getStartOffset() && region.getEndOffset() <= htr.getEndOffset()