Change:
open a file open an empty group to the side and focus it open quick open for files type a typescript file name add @ to enable symbol search :bug: the editor in group 1 changes, not the active group
Caused by , TIL about adding @ after a filename
I had seen your PR and actually thought you would fix an issue associated with that feature
I was fixing specifically in a folder/file name before a line/col match
To clarify the feature: typing in a file search allows to ad-hoc flip into a "go to symbol" without having to first open the file. I think I limit this to having at the end of the thing you search for. I.e. if you paste a path with a somewhere it would not trigger. I wonder why I am not doing this when you type for goto line
before it was only checking for the existence of @ and disabling line/col filter extraction if so
I am more arguing that when you search for a file and then type for a line/col pattern, we should automatically open the file in the background and initiate "Go to line", same as we do now for when you type for symbols.
that would be awesome . This was just a drive by fix from me, not sure if is tracking this

Discussion:
} export function extractRangeFromFilter(filter: string, unless?: string[]): IFilterAndRange | undefined { <del> if (!filter || unless?.some(value => filter.indexOf(value) === 0)) { </del> <ins> // Ignore when the unless character not the first character or is before the line colon pattern if (!filter || unless?.some(value => { const unlessCharPos = filter.indexOf(value); return unlessCharPos === 0 || unlessCharPos > 0 && !LINE_COLON_PATTERN.test(filter.substring(unlessCharPos + 1)); })) { </ins> return undefined; }

assert.ok(!extractRangeFromFilter('')); assert.ok(!extractRangeFromFilter('/some/path')); assert.ok(!extractRangeFromFilter('/some/path/file.txt')); <del> assert.ok(!extractRangeFromFilter('/some/@path'), 'paths like as /node_modules/@types/ should be supported'); </del> for (const lineSep of [':', '#', '(', ':line ']) { for (const colSep of [':', '#', ',']) {

assert.strictEqual(res?.range.startColumn, 20); }); <del> test('unless', async function () { const res = extractRangeFromFilter('@/some/path/file.txt (19,20)', ['@']); assert.ok(!res); </del> <ins> suite('unless', async function () { const testSpecs = [ // alpha-only symbol after unless { filter: '/some/path/file.txt@alphasymbol', unless: ['@'], result: undefined }, // unless as first char { filter: '@/some/path/file.txt (19,20)', unless: ['@'], result: undefined }, // unless as last char { filter: '/some/path/file.txt (19,20)@', unless: ['@'], result: undefined }, // unless before , { filter: '/some/@path/file.txt (19,20)', unless: ['@'], result: { filter: '/some/@path/file.txt', range: { endColumn: 20, endLineNumber: 19, startColumn: 20, startLineNumber: 19 } } }, // unless before : { filter: '/some/@path/file.txt:19:20', unless: ['@'], result: { filter: '/some/@path/file.txt', range: { endColumn: 20, endLineNumber: 19, startColumn: 20, startLineNumber: 19 } } }, // unless before # { filter: '/some/@path/file.txt#19', unless: ['@'], result: { filter: '/some/@path/file.txt', range: { endColumn: 1, endLineNumber: 19, startColumn: 1, startLineNumber: 19 } } }, ]; for (const { filter, unless, result } of testSpecs) { test(`${filter} - ${JSON.stringify(unless)}`, () => { assert.deepStrictEqual(extractRangeFromFilter(filter, unless), result); }); } </ins> }); });