Skip to content

Add hard wrap limit option to console#2494

Open
trancexpress wants to merge 1 commit intoeclipse-platform:masterfrom
trancexpress:gh2479
Open

Add hard wrap limit option to console#2494
trancexpress wants to merge 1 commit intoeclipse-platform:masterfrom
trancexpress:gh2479

Conversation

@trancexpress
Copy link
Copy Markdown
Contributor

@trancexpress trancexpress commented Mar 1, 2026

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 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: #2479

@github-actions
Copy link
Copy Markdown
Contributor

github-actions bot commented Mar 1, 2026

Test Results

    54 files  ±  0      54 suites  ±0   35m 23s ⏱️ -37s
 4 822 tests +264   4 799 ✅ +265   23 💤 ±0  0 ❌  - 1 
12 414 runs  +144  12 255 ✅ +145  159 💤 ±0  0 ❌  - 1 

Results for commit 70b6a8a. ± Comparison against base commit 0eda9f4.

♻️ This comment has been updated with latest results.

@trancexpress trancexpress force-pushed the gh2479 branch 4 times, most recently from 34508dc to 117fa34 Compare April 11, 2026 14:06
@trancexpress trancexpress marked this pull request as ready for review April 11, 2026 15:56
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

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
@trancexpress
Copy link
Copy Markdown
Contributor Author

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 org.eclipse.ui.internal.console.IOConsolePartitioner and not set it from org.eclipse.debug.internal.ui.views.console.ProcessConsole.init() (which is called in parallel). But then why set any of the preferences in ProcessConsole.init().

So same as before, no idea what to do about this.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add hard wrap limit option to console

2 participants