diff --git a/src/vs/workbench/services/search/node/ripgrepSearchUtils.ts b/src/vs/workbench/services/search/node/ripgrepSearchUtils.ts index f0ffc0484b964f5729977f3d7b7dba529679a158..601d679d55120b239b08f81fd936c02dd7d5ec21 100644 --- a/src/vs/workbench/services/search/node/ripgrepSearchUtils.ts +++ b/src/vs/workbench/services/search/node/ripgrepSearchUtils.ts @@ -5,6 +5,7 @@ import { startsWith } from 'vs/base/common/strings'; import { ILogService } from 'vs/platform/log/common/log'; +import { SearchRange, TextSearchResult } from 'vs/platform/search/common/search'; import * as vscode from 'vscode'; export type Maybe = T | null | undefined; @@ -13,29 +14,23 @@ export function anchorGlob(glob: string): string { return startsWith(glob, '**') || startsWith(glob, '/') ? glob : `/${glob}`; } -export function createTextSearchResult(uri: vscode.Uri, fullText: string, range: Range, previewOptions?: vscode.TextSearchPreviewOptions): vscode.TextSearchResult { - let preview: vscode.TextSearchResultPreview; - if (previewOptions) { - const leadingChars = Math.floor(previewOptions.charsPerLine / 5); - const previewStart = Math.max(range.start.character - leadingChars, 0); - const previewEnd = previewOptions.charsPerLine + previewStart; - const endOfMatchRangeInPreview = Math.min(previewEnd, range.end.character - previewStart); - - preview = { - text: fullText.substring(previewStart, previewEnd), - match: new Range(0, range.start.character - previewStart, 0, endOfMatchRangeInPreview) - }; - } else { - preview = { - text: fullText, - match: new Range(0, range.start.character, 0, range.end.character) - }; - } +export function createTextSearchResult(uri: vscode.Uri, text: string, range: Range, previewOptions?: vscode.TextSearchPreviewOptions): vscode.TextSearchResult { + const searchRange: SearchRange = { + startLineNumber: range.start.line, + startColumn: range.start.character, + endLineNumber: range.end.line, + endColumn: range.end.character, + }; - return { + const internalResult = new TextSearchResult(text, searchRange, previewOptions); + const internalPreviewRange = internalResult.preview.match; + return { + range: new Range(internalResult.range.startLineNumber, internalResult.range.startColumn, internalResult.range.endLineNumber, internalResult.range.endColumn), uri, - range, - preview + preview: { + text: internalResult.preview.text, + match: new Range(internalPreviewRange.startLineNumber, internalPreviewRange.startColumn, internalPreviewRange.endLineNumber, internalPreviewRange.endColumn), + } }; } diff --git a/src/vs/workbench/services/search/node/search.ts b/src/vs/workbench/services/search/node/search.ts index 2145c8699d0fa9d4dbc0f01e7597088c6b3d9c95..f4127ee9fc65ca15d4d4a025b740df39f69860e3 100644 --- a/src/vs/workbench/services/search/node/search.ts +++ b/src/vs/workbench/services/search/node/search.ts @@ -159,7 +159,7 @@ export class QueryGlobTester { this._parsedExcludeExpression = glob.parse(this._excludeExpression); // Empty includeExpression means include nothing, so no {} shortcuts - let includeExpression: glob.IExpression = config.includePattern; + let includeExpression: glob.IExpression | undefined = config.includePattern; if (folderQuery.includePattern) { if (includeExpression) { includeExpression = {