From 60e72cd783e21b028ba5f648f734f9fc87f2cbb7 Mon Sep 17 00:00:00 2001 From: peter Date: Wed, 27 Aug 2014 21:20:19 +0200 Subject: [PATCH] IDEA-129066 Console auto scroll does not work properly with foldings --- .../com/intellij/execution/impl/ConsoleViewImpl.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) 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 toAdd) { String commandLinePlaceholder = myCommandLineFolding.getPlaceholder(line); if (commandLinePlaceholder != null) {