public static void expandRegionAtCaret(final Project project, @Nullable final Editor editor) { if (editor == null) return; CodeFoldingManager foldingManager = CodeFoldingManager.getInstance(project); foldingManager.updateFoldRegions(editor); final int line = editor.getCaretModel().getLogicalPosition().line; Runnable processor = new Runnable() { public void run() { FoldRegion region = FoldingUtil.findFoldRegionStartingAtLine(editor, line); if (region != null && !region.isExpanded()) { region.setExpanded(true); } else { int offset = editor.getCaretModel().getOffset(); FoldRegion[] regions = FoldingUtil.getFoldRegionsAtOffset(editor, offset); for (int i = regions.length - 1; i >= 0; i--) { region = regions[i]; if (!region.isExpanded()) { region.setExpanded(true); break; } } } } }; editor.getFoldingModel().runBatchFoldingOperation(processor); }