332
333
if (previewOptions && previewOptions.matchLines === 1 && isSingleLineRangeList(rangesArr)) {
335
>
text = getNLines(text, previewOptions.matchLines);
336
>
337
>
let result = '';
338
>
let shift = 0;
339
>
let lastEnd = 0;
340
>
const leadingChars = Math.floor(previewOptions.charsPerLine / 5);
341
>
for (const range of rangesArr) {
342
>
const previewStart = Math.max(range.startColumn - leadingChars, 0);
343
>
const previewEnd = range.startColumn + previewOptions.charsPerLine;
344
>
if (previewStart > lastEnd + leadingChars + SEARCH_ELIDED_MIN_LEN) {
345
const elision = SEARCH_ELIDED_PREFIX + (previewStart - lastEnd) + SEARCH_ELIDED_SUFFIX;
346
result += elision + text.slice(previewStart, previewEnd);
347
shift += previewStart - (lastEnd + elision.length);
349
>
result += text.slice(lastEnd, previewEnd);
350
>
}
351
>
352
>
lastEnd = previewEnd;
353
>
this.rangeLocations.push({
354
>
source: range,
355
>
preview: new OneLineRange(0, range.startColumn - shift, range.endColumn - shift)
356
>
});
357
>
358
>
}
359
>
360
>
this.previewText = result;
361
} else {
362
const firstMatchLine = Array.isArray(ranges) ? ranges[0].startLineNumber : ranges.startLineNumber;