Code change:
<ins> /*--------------------------------------------------------------------------------------------- *  Copyright (c) Microsoft Corporation. All rights reserved. *  Licensed under the MIT License. See License.txt in the project root for license information. *--------------------------------------------------------------------------------------------*/ import { deepStrictEqual } from 'assert'; import { getLinkSuffix, removeLinkSuffix } from 'vs/workbench/contrib/terminal/browser/links/terminalLinkParsing'; interface ITestLink { link: string; suffix: string | undefined; hasRow: boolean; hasCol: boolean; } const testRow = 339; const testCol = 12; const testLinks: ITestLink[] = [ { link: 'foo', suffix: undefined, hasRow: false, hasCol: false }, { link: 'foo:339', suffix: ':339', hasRow: true, hasCol: false }, { link: 'foo:339:12', suffix: ':339:12', hasRow: true, hasCol: true }, { link: 'foo 339', suffix: ' 339', hasRow: true, hasCol: false }, { link: 'foo 339:12', suffix: ' 339:12', hasRow: true, hasCol: true }, { link: '"foo",339', suffix: '",339', hasRow: true, hasCol: false }, { link: '"foo",339:12', suffix: '",339:12', hasRow: true, hasCol: true }, { link: '"foo", line 339', suffix: '", line 339', hasRow: true, hasCol: false }, { link: '"foo", line 339, col 12', suffix: '", line 339, col 12', hasRow: true, hasCol: true }, { link: '"foo", line 339, column 12', suffix: '", line 339, column 12', hasRow: true, hasCol: true }, { link: '"foo":line 339', suffix: '":line 339', hasRow: true, hasCol: false }, { link: '"foo":line 339, col 12', suffix: '":line 339, col 12', hasRow: true, hasCol: true }, { link: '"foo":line 339, column 12', suffix: '":line 339, column 12', hasRow: true, hasCol: true }, { link: '"foo": line 339', suffix: '": line 339', hasRow: true, hasCol: false }, { link: '"foo": line 339, col 12', suffix: '": line 339, col 12', hasRow: true, hasCol: true }, { link: '"foo": line 339, column 12', suffix: '": line 339, column 12', hasRow: true, hasCol: true }, { link: '"foo" on line 339', suffix: '" on line 339', hasRow: true, hasCol: false }, { link: '"foo" on line 339, col 12', suffix: '" on line 339, col 12', hasRow: true, hasCol: true }, { link: '"foo" on line 339, column 12', suffix: '" on line 339, column 12', hasRow: true, hasCol: true }, { link: 'foo(339)', suffix: '(339)', hasRow: true, hasCol: false }, { link: 'foo(339,12)', suffix: '(339,12)', hasRow: true, hasCol: true }, { link: 'foo(339, 12)', suffix: '(339, 12)', hasRow: true, hasCol: true }, { link: 'foo (339)', suffix: ' (339)', hasRow: true, hasCol: false }, { link: 'foo (339,12)', suffix: ' (339,12)', hasRow: true, hasCol: true }, { link: 'foo (339, 12)', suffix: ' (339, 12)', hasRow: true, hasCol: true }, ]; suite('TerminalLinkParsing', () => { suite('removeLinkSuffix', () => { for (const testLink of testLinks) { test('`' + testLink.link + '`', () => { deepStrictEqual( removeLinkSuffix(testLink.link), testLink.suffix === undefined ? testLink.link : testLink.link.replace(testLink.suffix, '') ); }); } }); suite('getLinkSuffix', () => { for (const testLink of testLinks) { test('`' + testLink.link + '`', () => { deepStrictEqual( getLinkSuffix(testLink.link), testLink.suffix === undefined ? null : { row: testLink.hasRow ? testRow : undefined, col: testLink.hasCol ? testCol : undefined, suffix: { index: testLink.link.length - testLink.suffix.length, text: testLink.suffix } } as ReturnType<typeof getLinkSuffix> ); }); } }); }); </ins>

Related discussion:
text: Originally posted on without success. <!-- Do Not Delete This! bugreporttemplate --<!-- Please read our Rules of Conduct: --<!-- Read our guide about submitting issues: --<!-- Search existing issues to avoid creating duplicates. --<!-- Test using the latest Insiders build to see if your issue has already been fixed: --<!-- Instead of creating your report here, use 'Report Issue' from the 'Help' menu in VS Code to pre-fill useful information. --<!-- Launch with to check. --Does this issue occur when all extensions are disabled?: Yes <!-- If you answered No above, use 'Help: Start Extension Bisect' from Command Palette to try to identify the cause. --<!-- Issues caused by an extension need to be reported directly to the extension publisher. The 'Help Report Issue' dialog can assist with this. --- VS Code Version: 1.69.2 OS Version: linux Steps to Reproduce: project has files like "Bar`1.cs" to represent generic types, as is done in the dotnet SDK build task contains "problemMatcher": { "base": "$msCompile" } When such a file has errors/warnings, I get this: is fine. But I cannot control-click on that filename to open it. The file's path is not underlined as normal - there is a clickable part before the bactick, and after. Someone from SO offered this guess: " probably backticks are not part of the regex that matches the filepath, or backticks are not in the w regex set"
I can reproduce this, it is correctly validating the link, but it then recognizes it as a folder: ! I guess nothing happens if Test doesn't exist? As for the fallback "word links", you can support this type of link if you remove backtick from word separators:
This falls apart when converting the link to a URI in !
And that happens because backticks aren't allowed in the local path regex:
Thanks