mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
apply the new settings after 'fold lines like this' action invocation
This commit is contained in:
+6
-2
@@ -1,5 +1,6 @@
|
||||
package com.intellij.execution.console;
|
||||
|
||||
import com.intellij.execution.impl.ConsoleViewImpl;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
@@ -14,12 +15,14 @@ import org.jetbrains.annotations.Nullable;
|
||||
/**
|
||||
* @author peter
|
||||
*/
|
||||
public class FoldLinesWithSubstring extends DumbAwareAction {
|
||||
public class FoldLinesLikeThis extends DumbAwareAction {
|
||||
private final Editor myEditor;
|
||||
private final ConsoleViewImpl myConsole;
|
||||
|
||||
public FoldLinesWithSubstring(Editor editor) {
|
||||
public FoldLinesLikeThis(Editor editor, ConsoleViewImpl console) {
|
||||
super("Fold lines like this");
|
||||
myEditor = editor;
|
||||
myConsole = console;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -71,5 +74,6 @@ public class FoldLinesWithSubstring extends DumbAwareAction {
|
||||
}, ModalityState.stateForComponent(createComponent()));
|
||||
}
|
||||
});
|
||||
myConsole.foldImmediately();
|
||||
}
|
||||
}
|
||||
@@ -19,7 +19,7 @@ package com.intellij.execution.impl;
|
||||
import com.intellij.codeInsight.navigation.IncrementalSearchHandler;
|
||||
import com.intellij.execution.ConsoleFolding;
|
||||
import com.intellij.execution.ExecutionBundle;
|
||||
import com.intellij.execution.console.FoldLinesWithSubstring;
|
||||
import com.intellij.execution.console.FoldLinesLikeThis;
|
||||
import com.intellij.execution.filters.*;
|
||||
import com.intellij.execution.process.ProcessHandler;
|
||||
import com.intellij.execution.ui.ConsoleView;
|
||||
@@ -146,6 +146,23 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
|
||||
myEditor.getCaretModel().moveToOffset(myEditor.getDocument().getTextLength());
|
||||
}
|
||||
|
||||
public void foldImmediately() {
|
||||
ApplicationManager.getApplication().assertIsDispatchThread();
|
||||
myFoldingAlarm.cancelAllRequests();
|
||||
|
||||
myPendingFoldRegions.clear();
|
||||
final FoldingModel model = myEditor.getFoldingModel();
|
||||
model.runBatchFoldingOperation(new Runnable() {
|
||||
public void run() {
|
||||
for (FoldRegion region : model.getAllFoldRegions()) {
|
||||
model.removeFoldRegion(region);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
updateFoldings(0, myEditor.getDocument().getLineCount() - 1, true);
|
||||
}
|
||||
|
||||
private static class TokenInfo{
|
||||
private final ConsoleViewContentType contentType;
|
||||
private int startOffset;
|
||||
@@ -763,7 +780,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
|
||||
final DefaultActionGroup group = new DefaultActionGroup();
|
||||
group.add(new ClearAllAction());
|
||||
group.add(new CopyAction());
|
||||
group.add(new FoldLinesWithSubstring(myEditor));
|
||||
group.add(new FoldLinesLikeThis(myEditor, this));
|
||||
group.addSeparator();
|
||||
final ActionManager actionManager = ActionManager.getInstance();
|
||||
group.add(actionManager.getAction(DiffActions.COMPARE_WITH_CLIPBOARD));
|
||||
@@ -832,10 +849,10 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
|
||||
ApplicationManager.getApplication().assertIsDispatchThread();
|
||||
PsiDocumentManager.getInstance(myProject).commitAllDocuments();
|
||||
highlightHyperlinks(myEditor, myHyperlinks, myCustomFilter, myPredefinedMessageFilter, line1, endLine);
|
||||
updateFoldings(line1, endLine);
|
||||
updateFoldings(line1, endLine, false);
|
||||
}
|
||||
|
||||
private void updateFoldings(final int line1, final int endLine) {
|
||||
private void updateFoldings(final int line1, final int endLine, boolean immediately) {
|
||||
final Document document = myEditor.getDocument();
|
||||
final CharSequence chars = document.getCharsSequence();
|
||||
final int startLine = Math.max(0, line1);
|
||||
@@ -844,7 +861,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
|
||||
addFolding(document, chars, line, toAdd);
|
||||
}
|
||||
if (!toAdd.isEmpty()) {
|
||||
doUpdateFolding(toAdd);
|
||||
doUpdateFolding(toAdd, immediately);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -878,7 +895,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
|
||||
}
|
||||
}
|
||||
|
||||
private void doUpdateFolding(final List<FoldRegion> toAdd) {
|
||||
private void doUpdateFolding(final List<FoldRegion> toAdd, final boolean immediately) {
|
||||
assertIsDispatchThread();
|
||||
myPendingFoldRegions.addAll(toAdd);
|
||||
|
||||
@@ -887,7 +904,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
|
||||
public void run() {
|
||||
assertIsDispatchThread();
|
||||
final FoldingModel model = myEditor.getFoldingModel();
|
||||
model.runBatchFoldingOperationDoNotCollapseCaret(new Runnable() {
|
||||
final Runnable operation = new Runnable() {
|
||||
public void run() {
|
||||
assertIsDispatchThread();
|
||||
for (FoldRegion region : myPendingFoldRegions) {
|
||||
@@ -896,10 +913,15 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
|
||||
}
|
||||
myPendingFoldRegions.clear();
|
||||
}
|
||||
});
|
||||
};
|
||||
if (immediately) {
|
||||
model.runBatchFoldingOperation(operation);
|
||||
} else {
|
||||
model.runBatchFoldingOperationDoNotCollapseCaret(operation);
|
||||
}
|
||||
}
|
||||
};
|
||||
if (myPendingFoldRegions.size() > 100) {
|
||||
if (immediately || myPendingFoldRegions.size() > 100) {
|
||||
runnable.run();
|
||||
} else {
|
||||
myFoldingAlarm.addRequest(runnable, 50);
|
||||
|
||||
Reference in New Issue
Block a user