zed/crates
Andrew Lygin 894b39a918
Add tab switcher (#7987)
The Tab Switcher implementation (#7653):
- `ctrl-tab` opens the Tab Switcher and moves selection to the
previously selcted tab. It also cycles selection forward.
- `ctrl-shift-tab` opens the Tab Switcher and moves selection to the
last tab in the list. It also cycles selection backward.
- Tab is selected and the Tab Switcher is closed on the shortcut
modifier key (`ctrl` by default) release.
- List items are in reverse activation history order.
- The list reacts to the item changes in background (new tab, tab
closed, tab title changed etc.)

Intentionally not in scope of this PR:
- File icons
- Close buttons

I will come back to these features. I think they need to be implemented
in separate PRs, and be synchronized with changes in how tabs are
rendered, to reuse the code as it's done in the current implementation.
The Tab Switcher looks usable even without them.

Known Issues:

Tab Switcher doesn't react to mouse click on a list item. It's not a tab
switcher specific problem, it looks like ctrl-clicks are not handled the
same way in Zed as cmd-clicks. For instance, menu items can be activated
with cmd-click, but don't react to ctrl-click. Since the Tab Switcher's
default keybinding is `ctrl-tab`, the user can only click an item with
`ctrl` pushed down, thus preventing `on_click()` from firing.

fixes #7653, #7321

Release Notes:

- Added Tab Switcher which is accessible via `ctrl-tab` and
`ctrl-shift-tab` (#7653) (#7321)

Related issues:

- Unblocks #7356, I hope 😄

How it looks and works (it's only `ctrl-tab`'s and `ctrl-shift-tab`'s,
no `enter`'s or mouse clicks):


https://github.com/zed-industries/zed/assets/2101250/4ad4ec6a-5314-481b-8b35-7ac85e43eb92

---------

Co-authored-by: Conrad Irwin <conrad.irwin@gmail.com>
Co-authored-by: Mikayla Maki <mikayla@zed.dev>
2024-03-27 11:15:08 -07:00
..
activity_indicator Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
assets Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
assistant Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
audio Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
auto_update markdown preview: highlight code blocks (#9087) 2024-03-12 12:54:12 +02:00
breadcrumbs Encode rem values derived from pixels using rems_from_px (#9367) 2024-03-14 16:39:55 -04:00
call Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
channel Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
cli Make the cli crate depend on workspace clap (#9507) 2024-03-18 20:00:37 +01:00
client Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
clock Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
collab Log when events are written to Clickhouse (#9875) 2024-03-27 12:33:34 -04:00
collab_ui Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
collections Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
color Fix hex_to_hsla inside the color crate (#9412) 2024-03-15 16:58:46 -04:00
command_palette Encapsulate CommandPaletteFilter and CommandPaletteInterceptor (#9402) 2024-03-15 12:37:25 -04:00
command_palette_hooks Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
copilot Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
copilot_ui Suppress error logs from CopilotCompletionProvider when Copilot is disabled (#9826) 2024-03-26 15:14:44 -04:00
db Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
diagnostics Add an animation to the LSP checking indicator (#9463) 2024-03-19 10:16:18 -07:00
editor collab ui: Fix notification windows on external monitors (#9817) 2024-03-26 13:07:38 -07:00
extension Look up extensions in the new index when reporting extension events (#9879) 2024-03-27 13:45:19 -04:00
extension_api Fix issues with extension API that come up when moving Svelte into an extension (#9611) 2024-03-22 17:29:06 -07:00
extension_cli Wrap extension schema version in a newtype (#9872) 2024-03-27 12:11:12 -04:00
extensions_ui Extract Astro support into an extension (#9835) 2024-03-26 18:50:08 -04:00
feature_flags Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
feedback Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
file_finder Fix next/prev shortcuts handling in the File Finder (#9785) 2024-03-25 14:06:37 -07:00
fs Windows: implement symlink (#9508) 2024-03-18 14:27:39 -07:00
fsevent Add rs-notify implementation of fs::watch (#9040) 2024-03-08 22:18:44 -08:00
fuzzy Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
git Properly display deleted diff hunks (#9182) 2024-03-11 17:53:45 +02:00
go_to_line Restore --all-targets for clippy (#9346) 2024-03-14 12:39:45 -04:00
google_ai Fix licensing errors 2024-03-20 15:52:02 +01:00
gpui collab ui: Fix notification windows on external monitors (#9817) 2024-03-26 13:07:38 -07:00
gpui_macros Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
image_viewer Image viewer (#9425) 2024-03-19 10:13:10 -07:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal Revert "Revert "chore: Bump Rust version to 1.77 (#9631)"" (#9672) 2024-03-22 11:17:16 +01:00
language Stop reading deserialize_fingerprint (#9668) 2024-03-27 11:24:31 +01:00
language_selector Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
language_tools Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
languages typescript: Highlight variables and enums in completions, add details (#9873) 2024-03-27 17:55:22 +01:00
live_kit_client Add a schema to extensions, to prevent installing extensions on too old of a Zed version (#9599) 2024-03-20 17:33:26 -04:00
live_kit_server Merge prost dependecies (#9522) 2024-03-18 20:33:20 -06:00
lsp lsp: Add partial support for insert/replace completions (#9634) 2024-03-21 16:19:21 +01:00
markdown_preview markdown preview: Handle line breaks in between task list items correctly (#9795) 2024-03-26 12:12:57 +02:00
media Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
menu Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
multi_buffer Enable clippy::never_loop (#9006) 2024-03-14 14:07:50 -04:00
node_runtime Allow extensions to define more of the methods in the LspAdapter trait (#9554) 2024-03-20 12:47:04 -07:00
notifications Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
open_ai Hard code max token counts for supported models (#9675) 2024-03-21 20:30:33 -06:00
outline Restore --all-targets for clippy (#9346) 2024-03-14 12:39:45 -04:00
picker Add tab switcher (#7987) 2024-03-27 11:15:08 -07:00
prettier Fix prettier-plugin-organize-imports plugin removes used imports (#9598) 2024-03-21 08:23:15 +01:00
project Stop reading deserialize_fingerprint (#9668) 2024-03-27 11:24:31 +01:00
project_panel Handle first click on Zed window (#9553) 2024-03-25 10:52:18 -07:00
project_symbols Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
quick_action_bar Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
recent_projects chore: Wrap WorkspaceId in newtype (#9492) 2024-03-18 12:39:03 +01:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
rich_text Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
rope Revert "language: Remove buffer fingerprinting (#9007)" 2024-03-21 14:10:18 -06:00
rpc Consolidate more extension API structs that were duplicated btwn client and server (#9797) 2024-03-25 21:28:18 -07:00
search Support newline and tab literals in regex search-and-replace operations (#9609) 2024-03-25 12:21:04 +01:00
settings Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
snippet Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
sqlez Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
sqlez_macros Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
story Enable clippy::eq_op (#9369) 2024-03-14 17:05:07 -04:00
storybook Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
sum_tree Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
tab_switcher Add tab switcher (#7987) 2024-03-27 11:15:08 -07:00
task Extensions registering tasks (#9572) 2024-03-22 16:18:33 +01:00
tasks_ui Extensions registering tasks (#9572) 2024-03-22 16:18:33 +01:00
telemetry_events Add telemetry events for loading extensions (#9793) 2024-03-25 17:30:48 -04:00
terminal Do not enable venv in terminal for bash-like oneshot task invocations (#8444) 2024-03-21 19:40:33 +02:00
terminal_view Small improvements of the task terminal spawn behavior (#9399) 2024-03-15 18:32:59 +02:00
text Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
theme remoting (#9680) 2024-03-22 08:44:56 -06:00
theme_importer Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
theme_selector Add support for applying theme after extension is installed (#9529) 2024-03-20 11:13:58 -04:00
time_format notification panel: rework time formatting (#8997) 2024-03-12 21:02:04 -06:00
ui Windows: Fullscreen (#9728) 2024-03-26 09:58:16 -07:00
util Add telemetry events for loading extensions (#9793) 2024-03-25 17:30:48 -04:00
vcs_menu Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
vim Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
welcome Allow specifying no base keymap (#9471) 2024-03-20 18:52:17 -06:00
workspace Add tab switcher (#7987) 2024-03-27 11:15:08 -07:00
worktree Stop reading deserialize_fingerprint (#9668) 2024-03-27 11:24:31 +01:00
zed Add tab switcher (#7987) 2024-03-27 11:15:08 -07:00
zed_actions Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00