Add hard wrap limit option to console#2494
Add hard wrap limit option to console#2494trancexpress wants to merge 1 commit intoeclipse-platform:masterfrom
Conversation
34508dc to
117fa34
Compare
There was a problem hiding this comment.
Pull request overview
Adds a new “hard” long-line limiting feature for Eclipse consoles, allowing console output to be wrapped or truncated before it is appended to the console document (aimed at preventing UI freezes from extremely long lines).
Changes:
- Introduces long-line output modifiers (wrap/truncate) and hooks them into
IOConsolePartitioner/IOConsole. - Adds Debug UI preferences + preference page controls and propagates changes into
ProcessConsole. - Adds unit/integration tests for wrapping/truncation behavior and includes them in the automated test suite.
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePartitioner.java | Applies long-line wrapping/truncation to pending output before document append. |
| debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IConsoleOutputModifier.java | New internal interface for chunk-based output modification. |
| debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleOutputLineWrap.java | Implements chunk-aware hard wrapping at a fixed character limit. |
| debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleOutputLineTruncate.java | Implements chunk-aware truncation with ellipsis at a fixed character limit. |
| debug/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java | Exposes a new public API to configure long-line limiting. |
| debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/console/ProcessConsole.java | Wires Debug UI preferences into the console’s new line-limit API. |
| debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/IDebugPreferenceConstants.java | Adds new preference keys for long-line limiting. |
| debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.properties | Adds UI strings for the new preference controls. |
| debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/DebugPreferencesMessages.java | Adds NLS fields for the new UI strings. |
| debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/preferences/ConsolePreferencePage.java | Adds preference UI controls (enable, wrap vs truncate, length). |
| debug/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/DebugUIPreferenceInitializer.java | Provides default values for the new preferences. |
| debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/IOConsoleTests.java | Adds integration tests verifying line wrap/truncate in the IOConsole pipeline. |
| debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleOutputLineWrapTest.java | Adds parameterized unit tests for wrapping logic across chunk boundaries. |
| debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/console/ConsoleOutputLineTruncateTest.java | Adds parameterized unit tests for truncation logic across chunk boundaries. |
| debug/org.eclipse.debug.tests/src/org/eclipse/debug/tests/AutomatedSuite.java | Registers the new unit tests in the automated suite. |
| debug/org.eclipse.debug.tests/META-INF/MANIFEST.MF | Adds required JUnit params provider import for the new parameterized tests. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePartitioner.java
Outdated
Show resolved
Hide resolved
debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/IOConsolePartitioner.java
Outdated
Show resolved
Hide resolved
debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleOutputLineWrap.java
Outdated
Show resolved
Hide resolved
debug/org.eclipse.ui.console/src/org/eclipse/ui/internal/console/ConsoleOutputLineTruncate.java
Show resolved
Hide resolved
debug/org.eclipse.ui.console/src/org/eclipse/ui/console/IOConsole.java
Outdated
Show resolved
Hide resolved
This change adds the following options to org.eclipse.debug.ui: * Console.limitLongLines (boolean) * Console.limitLongLinesWrap (boolean) * Console.limitLongLinesLength (int) When limitLongLines is set, long console lines will be trimmed or wrapped. If limitLongLinesWrap is set, lines are wrapped. Otherwise lines are trimmed. The length at which long lines are trimmed/wrapped is limitLongLinesLength. The preferences apply to output before its appended to the console document. In contrast, the existing console word wrapping is applied after the output is appended to the console document. Fixes: eclipse-platform#2479
|
From my POV the remaining issue here is:
Applying the console buffer limit asynchronously is something that is likely not noticed. But the trim/wrap added here not applying is noticed immediately: starting Eclipse, launch a program, expected wrap/trim is not seen. Considering that the new preference applies to the input stream itself, not to the document in the console, maybe we should read the preference in So same as before, no idea what to do about this. |
Add hard wrap limit option to console
This change adds the following options to
org.eclipse.debug.ui:Console.limitLongLines(boolean)Console.limitLongLinesWrap(boolean)Console.limitLongLinesLength(int)When
limitLongLinesis set, long console lines will be trimmed or wrapped.If
limitLongLinesWrapis set, lines are wrapped. Otherwise lines are trimmed.The length at which long lines are trimmed/wrapped is
limitLongLinesLength.The preferences apply to output before its appended to the
console document. In contrast, the existing console word wrapping is applied
after the output is appended to the console document.
Fixes: #2479