diff options
Diffstat (limited to 'platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java')
-rw-r--r-- | platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java | 11 |
1 files changed, 10 insertions, 1 deletions
diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index 605d073945b5..3fce510e725e 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -674,7 +674,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo final Document document = myEditor.getDocument(); final RangeMarker lastProcessedOutput = document.createRangeMarker(document.getTextLength(), document.getTextLength()); final int caretOffset = myEditor.getCaretModel().getOffset(); - final boolean isAtLastLine = document.getLineNumber(caretOffset) >= document.getLineCount() - 1; + final boolean isAtLastLine = isCaretAtLastLine(); CommandProcessor.getInstance().executeCommand(myProject, new Runnable() { @Override @@ -1078,6 +1078,9 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo }; if (immediately) { model.runBatchFoldingOperation(operation); + if (isCaretAtLastLine()) { + EditorUtil.scrollToTheEnd(myEditor); + } } else { model.runBatchFoldingOperationDoNotCollapseCaret(operation); @@ -1092,6 +1095,12 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo } } + private boolean isCaretAtLastLine() { + final Document document = myEditor.getDocument(); + final int caretOffset = myEditor.getCaretModel().getOffset(); + return document.getLineNumber(caretOffset) >= document.getLineCount() - 1; + } + private void addFolding(Document document, CharSequence chars, int line, List<FoldRegion> toAdd) { String commandLinePlaceholder = myCommandLineFolding.getPlaceholder(line); if (commandLinePlaceholder != null) { |