From ba25f9cd4cec7c9712f37c1f3cedfe5a7c7c9958 Mon Sep 17 00:00:00 2001
From: Copilot <198982749+Copilot@users.noreply.github.com>
Date: Wed, 9 Jul 2025 18:50:18 +0200
Subject: [PATCH] Fix PowerShell terminal link detection for paths with spaces
(#254504)
---
.../links/browser/terminalLocalLinkDetector.ts | 4 ++--
.../links/test/browser/terminalLocalLinkDetector.test.ts | 2 ++
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLocalLinkDetector.ts b/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLocalLinkDetector.ts
index 3cfea79b814..e7b27e43556 100644
--- a/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLocalLinkDetector.ts
+++ b/src/vs/workbench/contrib/terminalContrib/links/browser/terminalLocalLinkDetector.ts
@@ -52,8 +52,8 @@ const fallbackMatchers: RegExp[] = [
// C:\foo/bar baz:339: error ...
// C:\foo/bar baz:339:12: error ... [#178584, Clang]
/^(?(?.+):(?\d+)(?::(?\d+))?) ?:/,
- // Cmd prompt
- /^(?(?.+))>/,
+ // PowerShell and cmd prompt
+ /^(?:PS\s+)?(?(?[^>]+))>/,
// The whole line is the path
/^ *(?(?.+))/
];
diff --git a/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLocalLinkDetector.test.ts b/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLocalLinkDetector.test.ts
index 04d0dfa7415..32d6d384bb8 100644
--- a/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLocalLinkDetector.test.ts
+++ b/src/vs/workbench/contrib/terminalContrib/links/test/browser/terminalLocalLinkDetector.test.ts
@@ -158,6 +158,8 @@ const supportedFallbackLinkFormats: LinkFormatInfo[] = [
{ urlFormat: '{0}:{1}:{2} :', line: '5', column: '3', linkCellEndOffset: -2 },
{ urlFormat: '{0}:{1}:', line: '5', linkCellEndOffset: -1 },
{ urlFormat: '{0}:{1}:{2}:', line: '5', column: '3', linkCellEndOffset: -1 },
+ // PowerShell prompt
+ { urlFormat: 'PS {0}>', linkCellStartOffset: 3, linkCellEndOffset: -1 },
// Cmd prompt
{ urlFormat: '{0}>', linkCellEndOffset: -1 },
// The whole line is the path