Skip to content

Commit 248e048

Browse files
committed
Make server-side search respect Context Lines feature of Search Editor
1 parent da772e5 commit 248e048

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/providers/FileSystemProvider/TextSearchProvider.ts

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,8 +327,10 @@ export class TextSearchProvider implements vscode.TextSearchProvider {
327327
.map((match: SearchMatch) => searchMatchToLine(content, match, file.doc, api.configName))
328328
.filter(notNull);
329329
// Filter out duplicates and compute all matches for each one
330-
[...new Set(lines)].forEach((line) => {
330+
[...new Set(lines)].forEach((line, _index, matchedLines) => {
331331
const text = content[line];
332+
const previewFrom = Math.max(line - options.beforeContext || 0, 0);
333+
const previewTo = Math.min(line + options.afterContext || 0, content.length - 1);
332334
const regex = new RegExp(
333335
query.isRegExp ? query.pattern : query.pattern.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&"),
334336
query.isCaseSensitive ? "g" : "gi"
@@ -344,6 +346,16 @@ export class TextSearchProvider implements vscode.TextSearchProvider {
344346
counter++;
345347
}
346348
if (matchRanges.length && previewRanges.length) {
349+
// Add preceding context lines that aren't result lines
350+
for (let i = previewFrom; i < line; i++) {
351+
if (!matchedLines.includes(i)) {
352+
progress.report({
353+
uri,
354+
text: content[i],
355+
lineNumber: i + 1,
356+
});
357+
}
358+
}
347359
progress.report({
348360
uri,
349361
ranges: matchRanges,
@@ -352,6 +364,16 @@ export class TextSearchProvider implements vscode.TextSearchProvider {
352364
matches: previewRanges,
353365
},
354366
});
367+
// Add following context lines that aren't result lines
368+
for (let i = line + 1; i <= previewTo; i++) {
369+
if (!matchedLines.includes(i)) {
370+
progress.report({
371+
uri,
372+
text: content[i],
373+
lineNumber: i + 1,
374+
});
375+
}
376+
}
355377
}
356378
});
357379
};

0 commit comments

Comments
 (0)