Skip to content

Add preview to pickers and make them resizable - #59604

Merged
yara-blue merged 165 commits into
mainfrom
pickers-with-preview
Jun 19, 2026
Merged

Add preview to pickers and make them resizable#59604
yara-blue merged 165 commits into
mainfrom
pickers-with-preview

Conversation

@yara-blue

@yara-blue yara-blue commented Jun 19, 2026

Copy link
Copy Markdown
Contributor

Overhauls Zed's pickers to make them resizable and give them a preview.

Closes #8279

Tracking issue: #56037

Background

The most requested Zed feature has the last year has been a Telescope like search box discussion. To understand why this is so popular we need to understand search can serve thee goals:

  • Navigation: fuzzy search is faster & easier then clicking in a file tree
  • Exploration: example, find a function by a word in its doc comment
  • Collecting: example, getting a list of functions to change

The project search which shows results in a multibuffer is the perfect way to operate on a list of items. Navigation and Exploration need a lot of context around each result and offer fast navigation between them. For both of these live searching is also critical.

The telescope UI is a picker with a preview to the right or below. It's offered in various editors and IDE's most famously Neovim (through the Telescope plugin), IntelliJ (natively), Helix (natively) and of course VScode (plugins) and it's many forks.

While having a UI like that for text search (our project search) is most requested the UX pattern is applied widely, from find_all_references to bookmarks. It enhances most pickers. Note that we have over 50 different picker modals!

The community has tried to build something like this for Zed:

These all became huge PR's that we could not merge for various reasons. This is a really hard feature to integrate in Zed!
This PR got started as #46478 and supercedes that.

Design

  • Extend pickers to support an optional preview with minimal changes to the pickers themselves.
  • Make pickers resizable.
  • Complement the existing search do not replace it by having both UI's share the underlying search and allow freely switching between them.
  • Allow extending the preview to things other then files.
  • Maintain a clean design on all the pickers.

Heigh level Implementation overview

  • Adds an Option<Preview> to Picker
  • Gives PickerDelegate a method to communicate a preview to the Picker
  • Overhaul the way pickers are drawn to allow for resizing them. Implemented on the Shape and SizeBouds structs.
  • Adds a high level way to draw the footer and editor so we do not need to change much to the pickers.
  • Adds a new text finder Picker
  • Adds a way to take a running search from project search and hand it to the text finder Picker and the other way round
  • Give the file finder a preview

Next steps

A more detailed list and how to help out will be added to the tracking issue for Pickes with previews

  • Add more previews to more pickers!
  • Enable selectioning multiple items in pickers and performing actions on those
  • Open selected items in a multibuffer
  • Add a way to restore the last picker
  • Make popovers (picker attached to some menu) resizable as well

Self-Review Checklist:

  • I've reviewed my own diff for quality, security, and reliability
  • Unsafe blocks (if any) have justifying comments
  • The content adheres to Zed's UI standards (UX/UI and icon guidelines)
  • Tests cover the new/changed behavior
  • Performance impact has been considered and is acceptable

Showcase

TODO (will be done post merge)


Release Notes:

  • Added resizing via dragging to all picker modals.
  • Added a preview to the File finder, the preview can be to the right or below.
  • Added a Text finder picker with a preview as alternative project search UI. The search is shared and allowes switch between UIs while running.

@yara-blue
yara-blue enabled auto-merge June 19, 2026 15:30
@zed-industries-bot

zed-industries-bot commented Jun 19, 2026

Copy link
Copy Markdown
Contributor
Messages
📖

This PR includes links to the following GitHub Issues: #56037, #8279
If this PR aims to close an issue, please include a Closes #ISSUE line at the top of the PR body.

Generated by 🚫 dangerJS against 85656ab

@yara-blue
yara-blue force-pushed the pickers-with-preview branch from 95c7636 to 8bc8aa6 Compare June 19, 2026 15:34
@yara-blue
yara-blue force-pushed the pickers-with-preview branch 3 times, most recently from b1fbd0b to 1c2cf05 Compare June 19, 2026 15:48
@yara-blue
yara-blue force-pushed the pickers-with-preview branch from 1c2cf05 to 23f53e1 Compare June 19, 2026 17:03
@yara-blue
yara-blue force-pushed the pickers-with-preview branch from bcc40dc to 85656ab Compare June 19, 2026 17:32
@yara-blue
yara-blue added this pull request to the merge queue Jun 19, 2026
Merged via the queue into main with commit ccf4058 Jun 19, 2026
34 checks passed
@yara-blue
yara-blue deleted the pickers-with-preview branch June 19, 2026 17:46
saranblock3 pushed a commit to saranblock3/zed that referenced this pull request Jun 23, 2026
Overhauls Zed's pickers to make them resizable and give them a preview.

Closes zed-industries#8279 

### Background
The most requested Zed feature has the last year has been a [Telescope
like search box](zed-industries#8279)
[discussion](zed-industries#22581).
To understand why this is so popular we need to understand search can
serve thee goals:
- Navigation: fuzzy search is faster & easier then clicking in a file
tree
- Exploration: example, find a function by a word in its doc comment
- Collecting: example, getting a list of functions to change

The project search which shows results in a multibuffer is the perfect
way to operate on a list of items. Navigation and Exploration need a lot
of context around each result and offer fast navigation between them.
For both of these live searching is also critical.

The `telescope UI` is a picker with a preview to the right or below.
It's offered in various editors and IDE's most famously Neovim (through
the Telescope plugin), IntelliJ (natively), Helix (natively) and of
course VScode (plugins) and it's _many_ forks.

While having a UI like that for text search (our project search) is most
requested the UX pattern is applied widely, from `find_all_references`
to `bookmarks`. It enhances most pickers. Note that we have over 50
different picker modals!

The community has tried to build something like this for Zed:
- zed-industries#44530
- zed-industries#45307
- zed-industries#46478
- zed-industries#43790

These all became huge PR's that we could not merge for various reasons.
This is a really hard feature to integrate in Zed!
This PR got started as zed-industries#46478
and supercedes that.

### Design
- Extend pickers to support an optional preview with minimal changes to
the pickers themselves.
- Make pickers resizable.
- Complement the existing search do not replace it by having both UI's
share the underlying search and allow freely switching between them.
- Allow extending the preview to things other then files.
- Maintain a clean design on all the pickers.

### Heigh level Implementation overview
- Adds an `Option<Preview>` to `Picker`
- Gives `PickerDelegate` a method to communicate a preview to the Picker
- Overhaul the way pickers are drawn to allow for resizing them.
Implemented on the `Shape` and `SizeBouds` structs.
- Adds a high level way to draw the `footer` and `editor` so we do not
need to change much to the pickers.
- Adds a new text finder Picker
- Adds a way to take a running search from project search and hand it to
the text finder Picker and the other way round
- Give the file finder a preview

### Next steps
A more detailed list and how to help out will be added to the tracking
issue for [Pickes with
previews](zed-industries#56037)
- Add more previews to more pickers!
- Enable selectioning multiple items in pickers and performing actions
on those
- Open selected items in a multibuffer
- Add a way to restore the last picker
- Make popovers (picker attached to some menu) resizable as well

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Showcase
TODO (will be done post merge)

---

Release Notes:
- Added resizing via dragging to all picker modals. 
- Added a preview to the File finder, the preview can be to the right or
below.
- Added a Text finder picker with a preview as alternative project
search UI. The search is shared and allowes switch between UIs while
running.

---------

Co-authored-by: ozacod <47009516+ozacod@users.noreply.github.com>
Co-authored-by: ozacod <ozacod@users.noreply.github.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
@palmerovicdev

Copy link
Copy Markdown

Is this functionality available in the editor? I mean the Telescope-like search box.

@stamengeorgiev

Copy link
Copy Markdown

Is this functionality available in the editor? I mean the Telescope-like search box.

Seems so (in the 1.9.0 preview).
As far as I understand the code changes, you need to press cmd-alt-ponce the file picker is shown (ctrl if you are on linux/windows).

weihuoya pushed a commit to weihuoya/zed that referenced this pull request Jun 25, 2026
Overhauls Zed's pickers to make them resizable and give them a preview.

Closes zed-industries#8279 

### Background
The most requested Zed feature has the last year has been a [Telescope
like search box](zed-industries#8279)
[discussion](zed-industries#22581).
To understand why this is so popular we need to understand search can
serve thee goals:
- Navigation: fuzzy search is faster & easier then clicking in a file
tree
- Exploration: example, find a function by a word in its doc comment
- Collecting: example, getting a list of functions to change

The project search which shows results in a multibuffer is the perfect
way to operate on a list of items. Navigation and Exploration need a lot
of context around each result and offer fast navigation between them.
For both of these live searching is also critical.

The `telescope UI` is a picker with a preview to the right or below.
It's offered in various editors and IDE's most famously Neovim (through
the Telescope plugin), IntelliJ (natively), Helix (natively) and of
course VScode (plugins) and it's _many_ forks.

While having a UI like that for text search (our project search) is most
requested the UX pattern is applied widely, from `find_all_references`
to `bookmarks`. It enhances most pickers. Note that we have over 50
different picker modals!

The community has tried to build something like this for Zed:
- zed-industries#44530
- zed-industries#45307
- zed-industries#46478
- zed-industries#43790

These all became huge PR's that we could not merge for various reasons.
This is a really hard feature to integrate in Zed!
This PR got started as zed-industries#46478
and supercedes that.

### Design
- Extend pickers to support an optional preview with minimal changes to
the pickers themselves.
- Make pickers resizable.
- Complement the existing search do not replace it by having both UI's
share the underlying search and allow freely switching between them.
- Allow extending the preview to things other then files.
- Maintain a clean design on all the pickers.

### Heigh level Implementation overview
- Adds an `Option<Preview>` to `Picker`
- Gives `PickerDelegate` a method to communicate a preview to the Picker
- Overhaul the way pickers are drawn to allow for resizing them.
Implemented on the `Shape` and `SizeBouds` structs.
- Adds a high level way to draw the `footer` and `editor` so we do not
need to change much to the pickers.
- Adds a new text finder Picker
- Adds a way to take a running search from project search and hand it to
the text finder Picker and the other way round
- Give the file finder a preview

### Next steps
A more detailed list and how to help out will be added to the tracking
issue for [Pickes with
previews](zed-industries#56037)
- Add more previews to more pickers!
- Enable selectioning multiple items in pickers and performing actions
on those
- Open selected items in a multibuffer
- Add a way to restore the last picker
- Make popovers (picker attached to some menu) resizable as well

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Showcase
TODO (will be done post merge)

---

Release Notes:
- Added resizing via dragging to all picker modals. 
- Added a preview to the File finder, the preview can be to the right or
below.
- Added a Text finder picker with a preview as alternative project
search UI. The search is shared and allowes switch between UIs while
running.

---------

Co-authored-by: ozacod <47009516+ozacod@users.noreply.github.com>
Co-authored-by: ozacod <ozacod@users.noreply.github.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
ilavisharma pushed a commit to ilavisharma/zed that referenced this pull request Jun 30, 2026
…ed-industries#60114)

Follow-up to zed-industries#59604

Build stats changes for `cargo clean && RUSTC_WRAPPER=
CARGO_BUILD_RUSTC_WRAPPER= cargo build --timings -p zed`:
```
===== BASE (441de84) =====
total schedule end: 161.5s   units compiled: 1671
crate                          start     dur     end
editor                         121.3    19.6   140.9
picker                         131.6     2.3   133.9
picker_preview              (absent)
command_palette                133.8     2.2   136.0
dev_container                  133.8     5.4   139.2
onboarding                     137.4     2.5   139.8
settings_profile_selector      136.1     1.8   137.8
theme_selector                 134.0     2.3   136.3

===== HEAD (PR) =====
total schedule end: 158.5s   units compiled: 1672
crate                          start     dur     end
editor                         120.5    18.4   138.8
picker                         119.5     1.7   121.2
picker_preview                 131.2     1.7   132.9
command_palette                121.1     1.9   122.9
dev_container                  121.0     3.3   124.3
onboarding                     121.1     2.2   123.3
settings_profile_selector      121.2     1.7   122.9
theme_selector                 121.2     2.0   123.2
```

Release Notes:

- N/A
@TroySigX

TroySigX commented Jul 2, 2026

Copy link
Copy Markdown

Is there an auto-preview setting?

@elramus

elramus commented Jul 2, 2026

Copy link
Copy Markdown

Is there an auto-preview setting?

#56037 (comment)

jolutz pushed a commit to jolutz/zed that referenced this pull request Aug 8, 2026
Overhauls Zed's pickers to make them resizable and give them a preview.

Closes zed-industries#8279 

### Background
The most requested Zed feature has the last year has been a [Telescope
like search box](zed-industries#8279)
[discussion](zed-industries#22581).
To understand why this is so popular we need to understand search can
serve thee goals:
- Navigation: fuzzy search is faster & easier then clicking in a file
tree
- Exploration: example, find a function by a word in its doc comment
- Collecting: example, getting a list of functions to change

The project search which shows results in a multibuffer is the perfect
way to operate on a list of items. Navigation and Exploration need a lot
of context around each result and offer fast navigation between them.
For both of these live searching is also critical.

The `telescope UI` is a picker with a preview to the right or below.
It's offered in various editors and IDE's most famously Neovim (through
the Telescope plugin), IntelliJ (natively), Helix (natively) and of
course VScode (plugins) and it's _many_ forks.

While having a UI like that for text search (our project search) is most
requested the UX pattern is applied widely, from `find_all_references`
to `bookmarks`. It enhances most pickers. Note that we have over 50
different picker modals!

The community has tried to build something like this for Zed:
- zed-industries#44530
- zed-industries#45307
- zed-industries#46478
- zed-industries#43790

These all became huge PR's that we could not merge for various reasons.
This is a really hard feature to integrate in Zed!
This PR got started as zed-industries#46478
and supercedes that.

### Design
- Extend pickers to support an optional preview with minimal changes to
the pickers themselves.
- Make pickers resizable.
- Complement the existing search do not replace it by having both UI's
share the underlying search and allow freely switching between them.
- Allow extending the preview to things other then files.
- Maintain a clean design on all the pickers.

### Heigh level Implementation overview
- Adds an `Option<Preview>` to `Picker`
- Gives `PickerDelegate` a method to communicate a preview to the Picker
- Overhaul the way pickers are drawn to allow for resizing them.
Implemented on the `Shape` and `SizeBouds` structs.
- Adds a high level way to draw the `footer` and `editor` so we do not
need to change much to the pickers.
- Adds a new text finder Picker
- Adds a way to take a running search from project search and hand it to
the text finder Picker and the other way round
- Give the file finder a preview

### Next steps
A more detailed list and how to help out will be added to the tracking
issue for [Pickes with
previews](zed-industries#56037)
- Add more previews to more pickers!
- Enable selectioning multiple items in pickers and performing actions
on those
- Open selected items in a multibuffer
- Add a way to restore the last picker
- Make popovers (picker attached to some menu) resizable as well

## Self-Review Checklist:

- [x] I've reviewed my own diff for quality, security, and reliability
- [x] Unsafe blocks (if any) have justifying comments
- [x] The content adheres to Zed's UI standards
([UX/UI](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist)
and
[icon](https://github.com/zed-industries/zed/blob/main/crates/icons/README.md)
guidelines)
- [x] Tests cover the new/changed behavior
- [x] Performance impact has been considered and is acceptable

## Showcase
TODO (will be done post merge)

---

Release Notes:
- Added resizing via dragging to all picker modals. 
- Added a preview to the File finder, the preview can be to the right or
below.
- Added a Text finder picker with a preview as alternative project
search UI. The search is shared and allowes switch between UIs while
running.

---------

Co-authored-by: ozacod <47009516+ozacod@users.noreply.github.com>
Co-authored-by: ozacod <ozacod@users.noreply.github.com>
Co-authored-by: Danilo Leal <daniloleal09@gmail.com>
jolutz pushed a commit to jolutz/zed that referenced this pull request Aug 8, 2026
…ed-industries#60114)

Follow-up to zed-industries#59604

Build stats changes for `cargo clean && RUSTC_WRAPPER=
CARGO_BUILD_RUSTC_WRAPPER= cargo build --timings -p zed`:
```
===== BASE (b3a48e3) =====
total schedule end: 161.5s   units compiled: 1671
crate                          start     dur     end
editor                         121.3    19.6   140.9
picker                         131.6     2.3   133.9
picker_preview              (absent)
command_palette                133.8     2.2   136.0
dev_container                  133.8     5.4   139.2
onboarding                     137.4     2.5   139.8
settings_profile_selector      136.1     1.8   137.8
theme_selector                 134.0     2.3   136.3

===== HEAD (PR) =====
total schedule end: 158.5s   units compiled: 1672
crate                          start     dur     end
editor                         120.5    18.4   138.8
picker                         119.5     1.7   121.2
picker_preview                 131.2     1.7   132.9
command_palette                121.1     1.9   122.9
dev_container                  121.0     3.3   124.3
onboarding                     121.1     2.2   123.3
settings_profile_selector      121.2     1.7   122.9
theme_selector                 121.2     2.0   123.2
```

Release Notes:

- N/A
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cla-signed The user has signed the Contributor License Agreement staff Pull requests authored by a current member of Zed staff

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Telescope-style search box

9 participants