diff --git a/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts b/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts index 16047707ea72705977fd7be9e5ef2a37689f3fbf..c4ca9ad2726cdf68596e256c626c0a3e9d38ab75 100644 --- a/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts +++ b/src/vs/workbench/parts/terminal/electron-browser/terminalLinkHandler.ts @@ -35,7 +35,7 @@ replacing space with nonBreakningSpace or space ASCII code - 32. */ const lineAndColumnClause = [ '((\\S*) on line ((\\d+)(, column (\\d+))?))', // (file path) on line 8, column 13 '((\\S*):line ((\\d+)(, column (\\d+))?))', // (file path):line 8, column 13 - '(([^\\s\\(\\)]*)(\\s?\\((\\d+)(,(\\d+))?)\\))', // (file path)(45), (file path) (45), (file path)(45,18), (file path) (45,18) + '(([^\\s\\(\\)]*)(\\s?[\\(\\[](\\d+)(,(\\d+))?)[\\)\\]])', // (file path)(45), (file path) (45), (file path)(45,18), (file path) (45,18) '(([^:\\s\\(\\)<>\'\"\\[\\]]*)(:(\\d+))?(:(\\d+))?)' // (file path):336, (file path):336:9 ].join('|').replace(/ /g, `[${'\u00A0'} ]`); @@ -71,7 +71,6 @@ export class TerminalLinkHandler { const baseLocalLinkClause = _platform === platform.Platform.Windows ? winLocalLinkClause : unixLocalLinkClause; // Append line and column number regex this._localLinkPattern = new RegExp(`${baseLocalLinkClause}(${lineAndColumnClause})`); - this._xterm.setHypertextLinkHandler(this._wrapLinkHandler(() => true)); this._xterm.setHypertextValidationCallback((uri: string, element: HTMLElement, callback: (isValid: boolean) => void) => { this._validateWebLink(uri, element, callback); diff --git a/src/vs/workbench/parts/terminal/test/electron-browser/terminalLinkHandler.test.ts b/src/vs/workbench/parts/terminal/test/electron-browser/terminalLinkHandler.test.ts index 81cd2677aa381866f3961a5f13b21f7a8323511a..f01eedf7f5482e28c91330f8c3f041b74ad0c67f 100644 --- a/src/vs/workbench/parts/terminal/test/electron-browser/terminalLinkHandler.test.ts +++ b/src/vs/workbench/parts/terminal/test/electron-browser/terminalLinkHandler.test.ts @@ -97,7 +97,11 @@ suite('Workbench - TerminalLinkHandler', () => { { urlFormat: '{0}({1},{2})', line: '5', column: '3' }, { urlFormat: '{0} ({1},{2})', line: '5', column: '3' }, { urlFormat: '{0}:{1}', line: '5' }, - { urlFormat: '{0}:{1}:{2}', line: '5', column: '3' } + { urlFormat: '{0}:{1}:{2}', line: '5', column: '3' }, + { urlFormat: '{0}[{1}]', line: '5' }, + { urlFormat: '{0} [{1}]', line: '5' }, + { urlFormat: '{0}[{1},{2}]', line: '5', column: '3' }, + { urlFormat: '{0} [{1},{2}]', line: '5', column: '3' } ]; linkUrls.forEach(linkUrl => { @@ -154,7 +158,11 @@ suite('Workbench - TerminalLinkHandler', () => { { urlFormat: '{0}({1},{2})', line: '5', column: '3' }, { urlFormat: '{0} ({1},{2})', line: '5', column: '3' }, { urlFormat: '{0}:{1}', line: '5' }, - { urlFormat: '{0}:{1}:{2}', line: '5', column: '3' } + { urlFormat: '{0}:{1}:{2}', line: '5', column: '3' }, + { urlFormat: '{0}[{1}]', line: '5' }, + { urlFormat: '{0} [{1}]', line: '5' }, + { urlFormat: '{0}[{1},{2}]', line: '5', column: '3' }, + { urlFormat: '{0} [{1},{2}]', line: '5', column: '3' } ]; linkUrls.forEach(linkUrl => {