diff --git a/extensions/search-result/src/extension.ts b/extensions/search-result/src/extension.ts index fee71869dea..fb3a7edb110 100644 --- a/extensions/search-result/src/extension.ts +++ b/extensions/search-result/src/extension.ts @@ -7,7 +7,7 @@ import * as vscode from 'vscode'; import * as pathUtils from 'path'; const FILE_LINE_REGEX = /^(\S.*):$/; -const RESULT_LINE_REGEX = /^(\s+)(\d+)(:| )(\s+)(.*)$/; +const RESULT_LINE_REGEX = /^(\s+)(\d+)(: | )(\s*)(.*)$/; const ELISION_REGEX = /⟪ ([0-9]+) characters skipped ⟫/g; const SEARCH_RESULT_SELECTOR = { language: 'search-result', exclusive: true }; const DIRECTIVES = ['# Query:', '# Flags:', '# Including:', '# Excluding:', '# ContextLines:']; @@ -220,10 +220,9 @@ function parseSearchResults(document: vscode.TextDocument, token?: vscode.Cancel const resultLine = RESULT_LINE_REGEX.exec(line); if (resultLine) { - const [, indentation, _lineNumber, seperator, resultIndentation] = resultLine; + const [, indentation, _lineNumber, separator] = resultLine; const lineNumber = +_lineNumber - 1; - const resultStart = (indentation + _lineNumber + seperator + resultIndentation).length; - const metadataOffset = (indentation + _lineNumber + seperator).length; + const metadataOffset = (indentation + _lineNumber + separator).length; const targetRange = new vscode.Range(Math.max(lineNumber - 3, 0), 0, lineNumber + 3, line.length); let locations: Required[] = []; @@ -233,12 +232,12 @@ function parseSearchResults(document: vscode.TextDocument, token?: vscode.Cancel targetRange, targetSelectionRange: new vscode.Range(lineNumber, 0, lineNumber, 1), targetUri: currentTarget, - originSelectionRange: new vscode.Range(i, 0, i, resultStart), + originSelectionRange: new vscode.Range(i, 0, i, metadataOffset - 1), }); - let lastEnd = resultStart; + let lastEnd = metadataOffset; let offset = 0; - ELISION_REGEX.lastIndex = resultStart; + ELISION_REGEX.lastIndex = metadataOffset; for (let match: RegExpExecArray | null; (match = ELISION_REGEX.exec(line));) { locations.push({ targetRange, @@ -261,7 +260,7 @@ function parseSearchResults(document: vscode.TextDocument, token?: vscode.Cancel } currentTargetLocations?.push(...locations); - links[i] = { type: 'result', locations, isContext: seperator === ' ', prefixRange: new vscode.Range(i, 0, i, metadataOffset) }; + links[i] = { type: 'result', locations, isContext: separator === ' ', prefixRange: new vscode.Range(i, 0, i, metadataOffset) }; } } diff --git a/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts b/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts index 46593a76525..53900aff56a 100644 --- a/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts +++ b/src/vs/workbench/contrib/searchEditor/browser/searchEditor.ts @@ -62,7 +62,7 @@ import { renderSearchMessage } from 'vs/workbench/contrib/search/browser/searchM import { EditorExtensionsRegistry, IEditorContributionDescription } from 'vs/editor/browser/editorExtensions'; import { UnusualLineTerminatorsDetector } from 'vs/editor/contrib/unusualLineTerminators/unusualLineTerminators'; -const RESULT_LINE_REGEX = /^(\s+)(\d+)(:| )(\s+)(.*)$/; +const RESULT_LINE_REGEX = /^(\s+)(\d+)(: | )(\s*)(.*)$/; const FILE_LINE_REGEX = /^(\S.*):$/; type SearchEditorViewState = ICodeEditorViewState & { focused: 'input' | 'editor' };