void (Project project, Editor editor, boolean isWithSelection) { Document document = editor.getDocument(); int selectionStart = editor.getSelectionModel().getLeadSelectionOffset(); PsiFile file = PsiDocumentManager.getInstance(project).getPsiFile(document); if (file == null) return; IdeDocumentHistory.getInstance(project).includeCurrentCommandAsNavigation(); final CodeBlockProvider provider = CodeBlockProviders.INSTANCE.forLanguage(file.getLanguage()); if (provider != null) { final TextRange range = provider.getCodeBlockRange(editor, file); if (range != null) { editor.getCaretModel().moveToOffset(range.getEndOffset()); } } else { final IndentGuideDescriptor guide = editor.getIndentsModel().getCaretIndentGuide(); if (guide != null) { editor.getCaretModel().moveToLogicalPosition(new LogicalPosition(guide.endLine, guide.indentLevel)); } else { int endOffset = calcBlockEndOffset(editor, file); if (endOffset != -1) { editor.getCaretModel().moveToOffset(endOffset); } } } editor.getScrollingModel().scrollToCaret(ScrollType.RELATIVE); if (isWithSelection) { editor.getSelectionModel().setSelection(selectionStart, editor.getCaretModel().getOffset()); } else { editor.getSelectionModel().removeSelection(); } }