Add file explorer modal v2#45307
Closed
baldwindavid wants to merge 8 commits intozed-industries:mainfrom
Closed
Conversation
* main: (349 commits) component_preview: Fix license symlink (zed-industries#46379) Do not react on already observed buffer edits' versions (zed-industries#46308) Fix EP CLI output flicker (zed-industries#46313) vim: Fix bug where repeat operator could lead to unrecoverable replaying state (zed-industries#46376) vim: Implement text-based matching bracket logic for Vim '%' motion to correctly find pairs within comments (zed-industries#45559) Improve LSP button error message (zed-industries#46377) agent: Make reject/accept keybindings consistent with restore/stage (zed-industries#46373) Enable test-support features for some dev dependencies (zed-industries#46370) Capture terminal output when thread is interrupted (zed-industries#46306) Inline assistant tools: no more feature flag (zed-industries#46107) Add `ep split` subcommand for dataset splitting (zed-industries#46364) lsp_button: Fix long LSP version label (zed-industries#46359) remote: Introduce a proper mock remote connection (zed-industries#46337) ep: Allow matching patches against files without trailing newlines (zed-industries#46357) docs: Update "Custom Keybindings for Extension-Based Agents section" to include a troubleshooting note for defining an agent name (zed-industries#46144) Fail early if clangd is downloaded on aarch Linux (zed-industries#46346) ep: Handle errored requests in Anthropic batches (zed-industries#46351) settings_ui: Fix settings search missing results when BM25 finds partial matches (zed-industries#46349) workspace: Unpreview active tab when closing other tabs (zed-industries#46294) terminal: Skip SHLVL when loading login shell environment (zed-industries#46273) ...
Contributor
Author
|
Going to hold on this and see how #44530 shakes out and if all pickers move to this sort of design. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #45042
This PR implements a modal file browser as an alternative to the project panel. This addresses the feature request from #45042, which proposed enhancing the existing modal that supports the
workspace::Openaction to be able to function as a general directory explorer.Background
This builds on the discussion from #43961, which proposed a new dedicated file explorer modal. After maintainer feedback preferring enhancement of an existing picker rather than creating another one, this PR extends the existing
OpenPathPromptwith directory navigation capabilities. As noted in #43961, this was the original approach but there were concerns about remote-handling and it perhaps diverging too much from the original intent of the picker.What's New
Adds two new actions:
workspace::Browse:workspace::BrowseFromCurrentDirectory:BrowseBoth actions work for local and remote projects.
Implementation
Core changes:
DirectoryListerModeenum (OpenvsBrowse) to explicitly control picker behaviorDirectoryListerto carry mode and optionalinitial_pathconfirm_update_query()toOpenPathDelegateto navigate into directories instead of opening them as workspacesOpenPathDelegatederives all context fromDirectoryLister(path_style, preselect, browse_mode)UX details:
Other Considerations
Tab behavior on ".." entry:
Currently Tab on ".." moves to the next item (matching the existing
workspace::Openbehavior on "open this directory"). This means that the top entry "skips" while the entries below "autocomplete". It would arguably be more consistent to autocomplete to the parent directory when tabbing this ".." entry, but I tried that and it felt surprising.Keybindings:
There are none set in this PR currently. I know that I would set
-to triggerworkspace::BrowseFromCurrentDirectory(muscle-memory from vim-vinegar) andshift-forworkspace::Browse, but probably too opinionated as a default.Screencasts
workspace::Browseworkspace::BrowseFromCurrentDirectoryRelease Notes:
workspace::Browseaction to browse and open files via modal (starting from the project root)workspace::BrowseFromCurrentDirectoryaction to browse and open files via modal (starting from the current file's directory)