From f8b115947e789395ebb05f3ae8b7f281435b0edc Mon Sep 17 00:00:00 2001 From: Rob Lourens Date: Fri, 3 May 2024 03:33:24 +0000 Subject: [PATCH] Fix removeAnsiEscapeCodes for escape sequence after : (#211886) * Fix removeAnsiEscapeCodes for escape sequence after : Fix #209937 * And in debug-server-ready --- extensions/debug-server-ready/src/extension.ts | 4 ++-- src/vs/base/common/strings.ts | 2 +- src/vs/base/test/common/strings.test.ts | 5 +++++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/extensions/debug-server-ready/src/extension.ts b/extensions/debug-server-ready/src/extension.ts index b3525281111..22a8ff836d3 100644 --- a/extensions/debug-server-ready/src/extension.ts +++ b/extensions/debug-server-ready/src/extension.ts @@ -22,8 +22,8 @@ interface ServerReadyAction { killOnServerStop?: boolean; } -// Escape codes, compiled from https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ -const CSI_SEQUENCE = /(:?\x1b\[|\x9B)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~]/g; +// From src/vs/base/common/strings.ts +const CSI_SEQUENCE = /(?:(?:\x1b\[|\x9B)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~])|(:?\x1b\].*?\x07)/g; /** * Froms vs/base/common/strings.ts in core diff --git a/src/vs/base/common/strings.ts b/src/vs/base/common/strings.ts index 2636d667674..79d22ee0e6d 100644 --- a/src/vs/base/common/strings.ts +++ b/src/vs/base/common/strings.ts @@ -766,7 +766,7 @@ export function lcut(text: string, n: number, prefix = '') { // Escape codes, compiled from https://invisible-island.net/xterm/ctlseqs/ctlseqs.html#h3-Functions-using-CSI-_-ordered-by-the-final-character_s_ // Plus additional markers for custom `\x1b]...\x07` instructions. -const CSI_SEQUENCE = /(:?(:?\x1b\[|\x9B)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~])|(:?\x1b\].*?\x07)/g; +const CSI_SEQUENCE = /(?:(?:\x1b\[|\x9B)[=?>!]?[\d;:]*["$#'* ]?[a-zA-Z@^`{}|~])|(:?\x1b\].*?\x07)/g; /** Iterates over parts of a string with CSI sequences */ export function* forAnsiStringParts(str: string) { diff --git a/src/vs/base/test/common/strings.test.ts b/src/vs/base/test/common/strings.test.ts index c75f9e992d7..bb9e5db1d51 100644 --- a/src/vs/base/test/common/strings.test.ts +++ b/src/vs/base/test/common/strings.test.ts @@ -536,6 +536,11 @@ suite('Strings', () => { `expect to forAnsiStringParts ${JSON.stringify(sequence)}` ); } + + // #209937 + assert.strictEqual( + strings.removeAnsiEscapeCodes(`localhost:\x1b[31m1234`), + 'localhost:1234',); }); test('removeAnsiEscapeCodesFromPrompt', () => {