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 a1f5e3ca5392..481f9deeff9c 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -64,6 +64,7 @@ import com.intellij.openapi.project.DumbAwareAction; import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.*; +import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.tree.IElementType; @@ -137,6 +138,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo // Should be accessed in EDT only. @SuppressWarnings("FieldAccessedSynchronizedAndUnsynchronized") private boolean myDocumentClearing; + private int consoleTooMuchTextBufferRatio; public Editor getEditor() { return myEditor; @@ -321,6 +323,8 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo myInputMessageFilter = null; } + consoleTooMuchTextBufferRatio = Registry.intValue("console.too.much.text.buffer.ratio"); + project.getMessageBus().connect(this).subscribe(DumbService.DUMB_MODE, new DumbService.DumbModeListener() { private long myLastStamp; @@ -782,6 +786,10 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo return myLastStickingToEnd; } + private boolean isTheAmountOfTextTooBig(final int textLength) { + return myBuffer.isUseCyclicBuffer() && textLength > myBuffer.getCyclicBufferSize() / consoleTooMuchTextBufferRatio; + } + private void clearHyperlinkAndFoldings() { myEditor.getMarkupModel().removeAllHighlighters(); diff --git a/platform/util/resources/misc/registry.properties b/platform/util/resources/misc/registry.properties index c16b7ab19e68..1f9776422690 100644 --- a/platform/util/resources/misc/registry.properties +++ b/platform/util/resources/misc/registry.properties @@ -610,6 +610,12 @@ emmet.segments.limit=50 emmet.template.length.limit.kilobytes=15 command.line.execution.timeout=30 +console.ui.cycle.buffer.size=Default +console.too.much.text.buffer.ratio=10 +console.too.much.text.buffer.ratio.description=Used for disabling of console processing (console filters for highlights, foldings...),\n\ + when there is too much text to process.\n\ + The ratio is used against the console cycle buffer size (idea.cycle.buffer.size/theRatio=maxTextLength). + ide.settings.keymap.input.method.enabled=false ide.settings.keymap.input.method.enabled.description=Use input method instead of simple key event to enter shortcuts.