microsoft / microsoft/vscode

Search Editor: Allow choosing whether context lines appear before or after matches

Open
#336,570 1 comment 0 reactions 1 assignee Claimed by @osortega View on GitHub
Dominant language
TypeScript
Stars
193k
Forks
42.4k
PR merge metrics
PR metrics pending

Description

## Problem

The Search Editor allows users to configure the number of context lines displayed around each match. However, the configured number is always shown on both sides of the matching line.

In some cases, only one side contains useful information. For example, a log entry might start with a matching severity line, followed by the relevant message and diagnostic details:

```text
Severity: Error
Message: Failed to connect to the database
Host: example.internal
Retry count: 3
```

When searching for `Severity: Error`, only the lines after the match may be needed. To display three following lines today, the Search Editor also displays up to three unnecessary lines before every match. The reverse situation also occurs when the useful context precedes the matching line.

This produces additional noise, especially when reviewing many matches in a Search Editor.

## Proposal

Allow users to choose the placement of context lines in the Search Editor:

- **Around** — show context before and after the match, preserving the current behavior
- **Before** — show context only before the match
- **After** — show context only after the match

The existing context line count would apply to the selected placement. For example, with a context line count of `3`:

- **Around:** 3 lines before and 3 lines after
- **Before:** 3 lines before
- **After:** 3 lines after

**Around** would remain the default so that existing behavior and saved Search Editors remain compatible.

## Scope

This option would apply only to the Search Editor. It would not change the behavior of the Search view or existing search providers.

## Prototype

I have a prototype implementation ready in my fork.

https://github.com/user-attachments/assets/78bcf4a3-b954-4ffb-aabf-df1588b46023

The prototype:

- Adds a compact context-placement menu next to the existing context controls
- Supports **Around**, **Before**, and **After**
- Persists the selected placement in saved Search Editors
- Supports the placement through Search Editor command arguments
- Preserves **Around** as the default for existing Search Editors
- Keeps the existing search service behavior unchanged and filters the displayed context in the Search Editor

The last point keeps the implementation scoped to the Search Editor. It may retrieve some context lines that are later omitted, but avoids changing the general search service and search-provider contracts.

## Questions

- Would a compact placement menu next to the existing context controls be an appropriate interaction?
- Should this remain a Search Editor-specific presentation option, or should directional context be supported by the underlying search service?

I have a prototype implementation ready in my fork. Would an external contribution for this feature be considered?

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.