{ "version": 3, "sources": ["../src/extension.ts"], "sourcesContent": ["/*---------------------------------------------------------------------------------------------\n * Copyright (c) Microsoft Corporation. All rights reserved.\n * Licensed under the MIT License. See License.txt in the project root for license information.\n *--------------------------------------------------------------------------------------------*/\n\nimport * as vscode from 'vscode';\nimport * as pathUtils from 'path';\n\nconst FILE_LINE_REGEX = /^(\\S.*):$/;\nconst RESULT_LINE_REGEX = /^(\\s+)(\\d+)(: | )(\\s*)(.*)$/;\nconst ELISION_REGEX = /\u27EA ([0-9]+) characters skipped \u27EB/g;\nconst SEARCH_RESULT_SELECTOR = { language: 'search-result', exclusive: true };\nconst DIRECTIVES = ['# Query:', '# Flags:', '# Including:', '# Excluding:', '# ContextLines:'];\nconst FLAGS = ['RegExp', 'CaseSensitive', 'IgnoreExcludeSettings', 'WordMatch'];\n\nlet cachedLastParse: { version: number; parse: ParsedSearchResults; uri: vscode.Uri } | undefined;\nlet documentChangeListener: vscode.Disposable | undefined;\n\n\nexport function activate(context: vscode.ExtensionContext) {\n\n\tconst contextLineDecorations = vscode.window.createTextEditorDecorationType({ opacity: '0.7' });\n\tconst matchLineDecorations = vscode.window.createTextEditorDecorationType({ fontWeight: 'bold' });\n\n\tconst decorate = (editor: vscode.TextEditor) => {\n\t\tconst parsed = parseSearchResults(editor.document).filter(isResultLine);\n\t\tconst contextRanges = parsed.filter(line => line.isContext).map(line => line.prefixRange);\n\t\tconst matchRanges = parsed.filter(line => !line.isContext).map(line => line.prefixRange);\n\t\teditor.setDecorations(contextLineDecorations, contextRanges);\n\t\teditor.setDecorations(matchLineDecorations, matchRanges);\n\t};\n\n\tif (vscode.window.activeTextEditor && vscode.window.activeTextEditor.document.languageId === 'search-result') {\n\t\tdecorate(vscode.window.activeTextEditor);\n\t}\n\n\tcontext.subscriptions.push(\n\n\t\tvscode.languages.registerDocumentSymbolProvider(SEARCH_RESULT_SELECTOR, {\n\t\t\tprovideDocumentSymbols(document: vscode.TextDocument, token: vscode.CancellationToken): vscode.DocumentSymbol[] {\n\t\t\t\tconst results = parseSearchResults(document, token)\n\t\t\t\t\t.filter(isFileLine)\n\t\t\t\t\t.map(line => new vscode.DocumentSymbol(\n\t\t\t\t\t\tline.path,\n\t\t\t\t\t\t'',\n\t\t\t\t\t\tvscode.SymbolKind.File,\n\t\t\t\t\t\tline.allLocations.map(({ originSelectionRange }) => originSelectionRange!).reduce((p, c) => p.union(c), line.location.originSelectionRange!),\n\t\t\t\t\t\tline.location.originSelectionRange!,\n\t\t\t\t\t));\n\n\t\t\t\treturn results;\n\t\t\t}\n\t\t}),\n\n\t\tvscode.languages.registerCompletionItemProvider(SEARCH_RESULT_SELECTOR, {\n\t\t\tprovideCompletionItems(document: vscode.TextDocument, position: vscode.Position): vscode.CompletionItem[] {\n\n\t\t\t\tconst line = document.lineAt(position.line);\n\t\t\t\tif (position.line > 3) { return []; }\n\t\t\t\tif (position.character === 0 || (position.character === 1 && line.text === '#')) {\n\t\t\t\t\tconst header = Array.from({ length: DIRECTIVES.length }).map((_, i) => document.lineAt(i).text);\n\n\t\t\t\t\treturn DIRECTIVES\n\t\t\t\t\t\t.filter(suggestion => header.every(line => line.indexOf(suggestion) === -1))\n\t\t\t\t\t\t.map(flag => ({ label: flag, insertText: (flag.slice(position.character)) + ' ' }));\n\t\t\t\t}\n\n\t\t\t\tif (line.text.indexOf('# Flags:') === -1) { return []; }\n\n\t\t\t\treturn FLAGS\n\t\t\t\t\t.filter(flag => line.text.indexOf(flag) === -1)\n\t\t\t\t\t.map(flag => ({ label: flag, insertText: flag + ' ' }));\n\t\t\t}\n\t\t}, '#'),\n\n\t\tvscode.languages.registerDefinitionProvider(SEARCH_RESULT_SELECTOR, {\n\t\t\tprovideDefinition(document: vscode.TextDocument, position: vscode.Position, token: vscode.CancellationToken): vscode.DefinitionLink[] {\n\t\t\t\tconst lineResult = parseSearchResults(document, token)[position.line];\n\t\t\t\tif (!lineResult) { return []; }\n\t\t\t\tif (lineResult.type === 'file') {\n\t\t\t\t\treturn lineResult.allLocations.map(l => ({ ...l, originSelectionRange: lineResult.location.originSelectionRange }));\n\t\t\t\t}\n\n\t\t\t\tconst location = lineResult.locations.find(l => l.originSelectionRange.contains(position));\n\t\t\t\tif (!location) {\n\t\t\t\t\treturn [];\n\t\t\t\t}\n\n\t\t\t\tconst targetPos = new vscode.Position(\n\t\t\t\t\tlocation.targetSelectionRange.start.line,\n\t\t\t\t\tlocation.targetSelectionRange.start.character + (position.character - location.originSelectionRange.start.character)\n\t\t\t\t);\n\t\t\t\treturn [{\n\t\t\t\t\t...location,\n\t\t\t\t\ttargetSelectionRange: new vscode.Range(targetPos, targetPos),\n\t\t\t\t}];\n\t\t\t}\n\t\t}),\n\n\t\tvscode.languages.registerDocumentLinkProvider(SEARCH_RESULT_SELECTOR, {\n\t\t\tasync provideDocumentLinks(document: vscode.TextDocument, token: vscode.CancellationToken): Promise {\n\t\t\t\treturn parseSearchResults(document, token)\n\t\t\t\t\t.filter(isFileLine)\n\t\t\t\t\t.map(({ location }) => ({ range: location.originSelectionRange!, target: location.targetUri }));\n\t\t\t}\n\t\t}),\n\n\t\tvscode.window.onDidChangeActiveTextEditor(editor => {\n\t\t\tif (editor?.document.languageId === 'search-result') {\n\t\t\t\t// Clear the parse whenever we open a new editor.\n\t\t\t\t// Conservative because things like the URI might remain constant even if the contents change, and re-parsing even large files is relatively fast.\n\t\t\t\tcachedLastParse = undefined;\n\n\t\t\t\tdocumentChangeListener?.dispose();\n\t\t\t\tdocumentChangeListener = vscode.workspace.onDidChangeTextDocument(doc => {\n\t\t\t\t\tif (doc.document.uri === editor.document.uri) {\n\t\t\t\t\t\tdecorate(editor);\n\t\t\t\t\t}\n\t\t\t\t});\n\n\t\t\t\tdecorate(editor);\n\t\t\t}\n\t\t}),\n\n\t\t{ dispose() { cachedLastParse = undefined; documentChangeListener?.dispose(); } }\n\t);\n}\n\n\nfunction relativePathToUri(path: string, resultsUri: vscode.Uri): vscode.Uri | undefined {\n\n\tconst userDataPrefix = '(Settings) ';\n\tif (path.startsWith(userDataPrefix)) {\n\t\treturn vscode.Uri.file(path.slice(userDataPrefix.length)).with({ scheme: 'vscode-userdata' });\n\t}\n\n\tif (pathUtils.isAbsolute(path)) {\n\t\tif (/^[\\\\\\/]Untitled-\\d*$/.test(path)) {\n\t\t\treturn vscode.Uri.file(path.slice(1)).with({ scheme: 'untitled', path: path.slice(1) });\n\t\t}\n\t\treturn vscode.Uri.file(path);\n\t}\n\n\tif (path.indexOf('~/') === 0) {\n\t\tconst homePath = process.env.HOME || process.env.HOMEPATH || '';\n\t\treturn vscode.Uri.file(pathUtils.join(homePath, path.slice(2)));\n\t}\n\n\tconst uriFromFolderWithPath = (folder: vscode.WorkspaceFolder, path: string): vscode.Uri =>\n\t\tvscode.Uri.joinPath(folder.uri, path);\n\n\tif (vscode.workspace.workspaceFolders) {\n\t\tconst multiRootFormattedPath = /^(.*) \u2022 (.*)$/.exec(path);\n\t\tif (multiRootFormattedPath) {\n\t\t\tconst [, workspaceName, workspacePath] = multiRootFormattedPath;\n\t\t\tconst folder = vscode.workspace.workspaceFolders.filter(wf => wf.name === workspaceName)[0];\n\t\t\tif (folder) {\n\t\t\t\treturn uriFromFolderWithPath(folder, workspacePath);\n\t\t\t}\n\t\t}\n\t\telse if (vscode.workspace.workspaceFolders.length === 1) {\n\t\t\treturn uriFromFolderWithPath(vscode.workspace.workspaceFolders[0], path);\n\t\t} else if (resultsUri.scheme !== 'untitled') {\n\t\t\t// We're in a multi-root workspace, but the path is not multi-root formatted\n\t\t\t// Possibly a saved search from a single root session. Try checking if the search result document's URI is in a current workspace folder.\n\t\t\tconst prefixMatch = vscode.workspace.workspaceFolders.filter(wf => resultsUri.toString().startsWith(wf.uri.toString()))[0];\n\t\t\tif (prefixMatch) {\n\t\t\t\treturn uriFromFolderWithPath(prefixMatch, path);\n\t\t\t}\n\t\t}\n\t}\n\n\tconsole.error(`Unable to resolve path ${path}`);\n\treturn undefined;\n}\n\ntype ParsedSearchFileLine = { type: 'file'; location: vscode.LocationLink; allLocations: vscode.LocationLink[]; path: string };\ntype ParsedSearchResultLine = { type: 'result'; locations: Required[]; isContext: boolean; prefixRange: vscode.Range };\ntype ParsedSearchResults = Array;\nconst isFileLine = (line: ParsedSearchResultLine | ParsedSearchFileLine): line is ParsedSearchFileLine => line.type === 'file';\nconst isResultLine = (line: ParsedSearchResultLine | ParsedSearchFileLine): line is ParsedSearchResultLine => line.type === 'result';\n\n\nfunction parseSearchResults(document: vscode.TextDocument, token?: vscode.CancellationToken): ParsedSearchResults {\n\n\tif (cachedLastParse && cachedLastParse.uri === document.uri && cachedLastParse.version === document.version) {\n\t\treturn cachedLastParse.parse;\n\t}\n\n\tconst lines = document.getText().split(/\\r?\\n/);\n\tconst links: ParsedSearchResults = [];\n\n\tlet currentTarget: vscode.Uri | undefined = undefined;\n\tlet currentTargetLocations: vscode.LocationLink[] | undefined = undefined;\n\n\tfor (let i = 0; i < lines.length; i++) {\n\t\t// TODO: This is probably always false, given we're pegging the thread...\n\t\tif (token?.isCancellationRequested) { return []; }\n\t\tconst line = lines[i];\n\n\t\tconst fileLine = FILE_LINE_REGEX.exec(line);\n\t\tif (fileLine) {\n\t\t\tconst [, path] = fileLine;\n\n\t\t\tcurrentTarget = relativePathToUri(path, document.uri);\n\t\t\tif (!currentTarget) { continue; }\n\t\t\tcurrentTargetLocations = [];\n\n\t\t\tconst location: vscode.LocationLink = {\n\t\t\t\ttargetRange: new vscode.Range(0, 0, 0, 1),\n\t\t\t\ttargetUri: currentTarget,\n\t\t\t\toriginSelectionRange: new vscode.Range(i, 0, i, line.length),\n\t\t\t};\n\n\n\t\t\tlinks[i] = { type: 'file', location, allLocations: currentTargetLocations, path };\n\t\t}\n\n\t\tif (!currentTarget) { continue; }\n\n\t\tconst resultLine = RESULT_LINE_REGEX.exec(line);\n\t\tif (resultLine) {\n\t\t\tconst [, indentation, _lineNumber, separator] = resultLine;\n\t\t\tconst lineNumber = +_lineNumber - 1;\n\t\t\tconst metadataOffset = (indentation + _lineNumber + separator).length;\n\t\t\tconst targetRange = new vscode.Range(Math.max(lineNumber - 3, 0), 0, lineNumber + 3, line.length);\n\n\t\t\tconst locations: Required[] = [];\n\n\t\t\tlet lastEnd = metadataOffset;\n\t\t\tlet offset = 0;\n\t\t\tELISION_REGEX.lastIndex = metadataOffset;\n\t\t\tfor (let match: RegExpExecArray | null; (match = ELISION_REGEX.exec(line));) {\n\t\t\t\tlocations.push({\n\t\t\t\t\ttargetRange,\n\t\t\t\t\ttargetSelectionRange: new vscode.Range(lineNumber, offset, lineNumber, offset),\n\t\t\t\t\ttargetUri: currentTarget,\n\t\t\t\t\toriginSelectionRange: new vscode.Range(i, lastEnd, i, ELISION_REGEX.lastIndex - match[0].length),\n\t\t\t\t});\n\n\t\t\t\toffset += (ELISION_REGEX.lastIndex - lastEnd - match[0].length) + Number(match[1]);\n\t\t\t\tlastEnd = ELISION_REGEX.lastIndex;\n\t\t\t}\n\n\t\t\tif (lastEnd < line.length) {\n\t\t\t\tlocations.push({\n\t\t\t\t\ttargetRange,\n\t\t\t\t\ttargetSelectionRange: new vscode.Range(lineNumber, offset, lineNumber, offset),\n\t\t\t\t\ttargetUri: currentTarget,\n\t\t\t\t\toriginSelectionRange: new vscode.Range(i, lastEnd, i, line.length),\n\t\t\t\t});\n\t\t\t}\n\t\t\t// only show result lines in file-level peek\n\t\t\tif (separator.includes(':')) {\n\t\t\t\tcurrentTargetLocations?.push(...locations);\n\t\t\t}\n\n\t\t\t// Allow line number, indentation, etc to take you to definition as well.\n\t\t\tconst convenienceLocation: Required = {\n\t\t\t\ttargetRange,\n\t\t\t\ttargetSelectionRange: new vscode.Range(lineNumber, 0, lineNumber, 1),\n\t\t\t\ttargetUri: currentTarget,\n\t\t\t\toriginSelectionRange: new vscode.Range(i, 0, i, metadataOffset - 1),\n\t\t\t};\n\t\t\tlocations.push(convenienceLocation);\n\t\t\tlinks[i] = { type: 'result', locations, isContext: separator === ' ', prefixRange: new vscode.Range(i, 0, i, metadataOffset) };\n\t\t}\n\t}\n\n\tcachedLastParse = {\n\t\tversion: document.version,\n\t\tparse: links,\n\t\turi: document.uri\n\t};\n\n\treturn links;\n}\n"], "mappings": "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", "names": ["extension_exports", "__export", "activate", "__toCommonJS", "vscode", "pathUtils", "FILE_LINE_REGEX", "RESULT_LINE_REGEX", "ELISION_REGEX", "SEARCH_RESULT_SELECTOR", "DIRECTIVES", "FLAGS", "cachedLastParse", "documentChangeListener", "context", "contextLineDecorations", "matchLineDecorations", "decorate", "editor", "parsed", "parseSearchResults", "isResultLine", "contextRanges", "line", "matchRanges", "document", "token", "isFileLine", "originSelectionRange", "p", "c", "position", "header", "_", "i", "suggestion", "flag", "lineResult", "l", "location", "targetPos", "doc", "relativePathToUri", "path", "resultsUri", "userDataPrefix", "homePath", "uriFromFolderWithPath", "folder", "multiRootFormattedPath", "workspaceName", "workspacePath", "wf", "prefixMatch", "lines", "links", "currentTarget", "currentTargetLocations", "fileLine", "resultLine", "indentation", "_lineNumber", "separator", "lineNumber", "metadataOffset", "targetRange", "locations", "lastEnd", "offset", "match", "convenienceLocation"] }