From f7f5c24786ad7667a039c2e5906857f05a13d400 Mon Sep 17 00:00:00 2001 From: Peter Steinberger Date: Sat, 14 Mar 2026 00:53:35 +0000 Subject: [PATCH] refactor: share terminal note wrapping --- src/terminal/note.ts | 41 +++++++++++++++++++++++++++++------------ 1 file changed, 29 insertions(+), 12 deletions(-) diff --git a/src/terminal/note.ts b/src/terminal/note.ts index 5b5ccb4a9ce..086e99e9435 100644 --- a/src/terminal/note.ts +++ b/src/terminal/note.ts @@ -54,6 +54,21 @@ function isCopySensitiveToken(word: string): boolean { return word.includes("_") && FILE_LIKE_RE.test(word); } +function pushWrappedWordSegments(params: { + word: string; + available: number; + firstPrefix: string; + continuationPrefix: string; + lines: string[]; +}) { + const parts = splitLongWord(params.word, params.available); + const first = parts.shift() ?? ""; + params.lines.push(params.firstPrefix + first); + for (const part of parts) { + params.lines.push(params.continuationPrefix + part); + } +} + function wrapLine(line: string, maxWidth: number): string[] { if (line.trim().length === 0) { return [line]; @@ -80,14 +95,15 @@ function wrapLine(line: string, maxWidth: number): string[] { current = word; continue; } - const parts = splitLongWord(word, available); - const first = parts.shift() ?? ""; - lines.push(prefix + first); + pushWrappedWordSegments({ + word, + available, + firstPrefix: prefix, + continuationPrefix: nextPrefix, + lines, + }); prefix = nextPrefix; available = nextWidth; - for (const part of parts) { - lines.push(prefix + part); - } continue; } current = word; @@ -109,12 +125,13 @@ function wrapLine(line: string, maxWidth: number): string[] { current = word; continue; } - const parts = splitLongWord(word, available); - const first = parts.shift() ?? ""; - lines.push(prefix + first); - for (const part of parts) { - lines.push(prefix + part); - } + pushWrappedWordSegments({ + word, + available, + firstPrefix: prefix, + continuationPrefix: prefix, + lines, + }); current = ""; continue; }