diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 0516221b6e0849ab631c021d020050be99aaf728..ba2afc46317462e1873370b8669a0a326d80b242 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -45,22 +45,22 @@ "ctrl-alt-z": "edit_prediction::RatePredictions", "ctrl-alt-shift-i": "edit_prediction::ToggleMenu", "ctrl-alt-l": "lsp_tool::ToggleMenu", - "ctrl-alt-shift-s": "workspace::ToggleWorktreeSecurity", - }, + "ctrl-alt-shift-s": "workspace::ToggleWorktreeSecurity" + } }, { "context": "Picker || menu", "bindings": { "up": "menu::SelectPrevious", - "down": "menu::SelectNext", - }, + "down": "menu::SelectNext" + } }, { "context": "menu", "bindings": { "right": "menu::SelectChild", - "left": "menu::SelectParent", - }, + "left": "menu::SelectParent" + } }, { "context": "Editor", @@ -133,8 +133,8 @@ "shift-f10": "editor::OpenContextMenu", "ctrl-alt-shift-e": "editor::ToggleEditPrediction", "f9": "editor::ToggleBreakpoint", - "shift-f9": "editor::EditLogBreakpoint", - }, + "shift-f9": "editor::EditLogBreakpoint" + } }, { "context": "Editor && mode == full", @@ -153,44 +153,44 @@ "ctrl-alt-e": "editor::SelectEnclosingSymbol", "ctrl-shift-backspace": "editor::GoToPreviousChange", "ctrl-shift-alt-backspace": "editor::GoToNextChange", - "alt-enter": "editor::OpenSelectionsInMultibuffer", - }, + "alt-enter": "editor::OpenSelectionsInMultibuffer" + } }, { "context": "Editor && mode == full && edit_prediction", "bindings": { "alt-]": "editor::NextEditPrediction", - "alt-[": "editor::PreviousEditPrediction", - }, + "alt-[": "editor::PreviousEditPrediction" + } }, { "context": "Editor && !edit_prediction", "bindings": { - "alt-\\": "editor::ShowEditPrediction", - }, + "alt-\\": "editor::ShowEditPrediction" + } }, { "context": "Editor && mode == auto_height", "bindings": { "ctrl-enter": "editor::Newline", "shift-enter": "editor::Newline", - "ctrl-shift-enter": "editor::NewlineBelow", - }, + "ctrl-shift-enter": "editor::NewlineBelow" + } }, { "context": "Markdown", "bindings": { "copy": "markdown::Copy", "ctrl-insert": "markdown::Copy", - "ctrl-c": "markdown::Copy", - }, + "ctrl-c": "markdown::Copy" + } }, { "context": "Editor && jupyter && !ContextEditor", "bindings": { "ctrl-shift-enter": "repl::Run", - "ctrl-alt-enter": "repl::RunInPlace", - }, + "ctrl-alt-enter": "repl::RunInPlace" + } }, { "context": "Editor && !agent_diff", @@ -198,8 +198,8 @@ "ctrl-k ctrl-r": "git::Restore", "ctrl-alt-y": "git::ToggleStaged", "alt-y": "git::StageAndNext", - "alt-shift-y": "git::UnstageAndNext", - }, + "alt-shift-y": "git::UnstageAndNext" + } }, { "context": "Editor && editor_agent_diff", @@ -209,8 +209,8 @@ "ctrl-alt-z": "agent::Reject", "shift-alt-y": "agent::KeepAll", "shift-alt-z": "agent::RejectAll", - "shift-ctrl-r": "agent::OpenAgentDiff", - }, + "shift-ctrl-r": "agent::OpenAgentDiff" + } }, { "context": "AgentDiff", @@ -219,8 +219,8 @@ "ctrl-alt-y": "agent::Keep", "ctrl-alt-z": "agent::Reject", "shift-alt-y": "agent::KeepAll", - "shift-alt-z": "agent::RejectAll", - }, + "shift-alt-z": "agent::RejectAll" + } }, { "context": "ContextEditor > Editor", @@ -237,8 +237,8 @@ "ctrl-g": "search::SelectNextMatch", "ctrl-shift-g": "search::SelectPreviousMatch", "ctrl-k l": "agent::OpenRulesLibrary", - "ctrl-shift-v": "agent::PasteRaw", - }, + "ctrl-shift-v": "agent::PasteRaw" + } }, { "context": "AgentPanel", @@ -265,51 +265,51 @@ "ctrl-shift-enter": "agent::ContinueThread", "ctrl-y": "agent::AllowOnce", "ctrl-alt-a": "agent::OpenPermissionDropdown", - "ctrl-alt-z": "agent::RejectOnce", - }, + "ctrl-alt-z": "agent::RejectOnce" + } }, { "context": "AgentPanel > Markdown", "bindings": { "copy": "markdown::CopyAsMarkdown", "ctrl-insert": "markdown::CopyAsMarkdown", - "ctrl-c": "markdown::CopyAsMarkdown", - }, + "ctrl-c": "markdown::CopyAsMarkdown" + } }, { "context": "AgentPanel && text_thread", "bindings": { "ctrl-n": "agent::NewTextThread", - "ctrl-alt-t": "agent::NewThread", - }, + "ctrl-alt-t": "agent::NewThread" + } }, { "context": "AgentPanel && acp_thread", "use_key_equivalents": true, "bindings": { "ctrl-n": "agent::NewExternalAgentThread", - "ctrl-alt-t": "agent::NewThread", - }, + "ctrl-alt-t": "agent::NewThread" + } }, { "context": "AgentFeedbackMessageEditor > Editor", "bindings": { "escape": "menu::Cancel", "enter": "menu::Confirm", - "alt-enter": "editor::Newline", - }, + "alt-enter": "editor::Newline" + } }, { "context": "AcpThread > ModeSelector", "bindings": { - "ctrl-enter": "menu::Confirm", - }, + "ctrl-enter": "menu::Confirm" + } }, { "context": "AcpThread", "bindings": { - "ctrl--": "pane::GoBack", - }, + "ctrl--": "pane::GoBack" + } }, { "context": "AcpThread > Editor", @@ -336,29 +336,29 @@ "ctrl-alt-k": "agent::ToggleThinkingMode", "ctrl-alt-'": "agent::ToggleThinkingEffortMenu", "ctrl-'": "agent::CycleThinkingEffort", - "ctrl-alt-.": "agent::ToggleFastMode", - }, + "ctrl-alt-.": "agent::ToggleFastMode" + } }, { "context": "AcpThread > Editor && !use_modifier_to_send", "use_key_equivalents": true, "bindings": { - "enter": "agent::Chat", - }, + "enter": "agent::Chat" + } }, { "context": "AcpThread > Editor && use_modifier_to_send", "use_key_equivalents": true, "bindings": { "ctrl-enter": "agent::Chat", - "enter": "editor::Newline", - }, + "enter": "editor::Newline" + } }, { "context": "ThreadHistory", "bindings": { - "backspace": "agent::RemoveSelectedThread", - }, + "backspace": "agent::RemoveSelectedThread" + } }, { "context": "RulesLibrary", @@ -366,8 +366,8 @@ "new": "rules_library::NewRule", "ctrl-n": "rules_library::NewRule", "ctrl-shift-s": "rules_library::ToggleDefaultRule", - "ctrl-w": "workspace::CloseWindow", - }, + "ctrl-w": "workspace::CloseWindow" + } }, { "context": "BufferSearchBar", @@ -381,22 +381,22 @@ "find": "search::FocusSearch", "ctrl-f": "search::FocusSearch", "ctrl-h": "search::ToggleReplace", - "ctrl-l": "search::ToggleSelection", - }, + "ctrl-l": "search::ToggleSelection" + } }, { "context": "BufferSearchBar && in_replace > Editor", "bindings": { "enter": "search::ReplaceNext", - "ctrl-enter": "search::ReplaceAll", - }, + "ctrl-enter": "search::ReplaceAll" + } }, { "context": "BufferSearchBar && !in_replace > Editor", "bindings": { "up": "search::PreviousHistoryQuery", - "down": "search::NextHistoryQuery", - }, + "down": "search::NextHistoryQuery" + } }, { "context": "ProjectSearchBar", @@ -407,22 +407,22 @@ "ctrl-shift-f": "search::FocusSearch", "ctrl-shift-h": "search::ToggleReplace", "alt-ctrl-g": "search::ToggleRegex", - "alt-ctrl-x": "search::ToggleRegex", - }, + "alt-ctrl-x": "search::ToggleRegex" + } }, { "context": "ProjectSearchBar > Editor", "bindings": { "up": "search::PreviousHistoryQuery", - "down": "search::NextHistoryQuery", - }, + "down": "search::NextHistoryQuery" + } }, { "context": "ProjectSearchBar && in_replace > Editor", "bindings": { "enter": "search::ReplaceNext", - "ctrl-alt-enter": "search::ReplaceAll", - }, + "ctrl-alt-enter": "search::ReplaceAll" + } }, { "context": "ProjectSearchView", @@ -430,8 +430,8 @@ "escape": "project_search::ToggleFocus", "ctrl-shift-h": "search::ToggleReplace", "alt-ctrl-g": "search::ToggleRegex", - "alt-ctrl-x": "search::ToggleRegex", - }, + "alt-ctrl-x": "search::ToggleRegex" + } }, { "context": "Pane", @@ -480,8 +480,8 @@ "ctrl-alt-shift-r": "search::ToggleRegex", "ctrl-alt-shift-x": "search::ToggleRegex", "alt-r": "search::ToggleRegex", - "ctrl-k shift-enter": "pane::TogglePinTab", - }, + "ctrl-k shift-enter": "pane::TogglePinTab" + } }, // Bindings from VS Code { @@ -545,31 +545,31 @@ "ctrl-\\": "pane::SplitRight", "ctrl-alt-shift-c": "editor::DisplayCursorNames", "alt-.": "editor::GoToHunk", - "alt-,": "editor::GoToPreviousHunk", - }, + "alt-,": "editor::GoToPreviousHunk" + } }, { "context": "Editor && extension == md", "use_key_equivalents": true, "bindings": { "ctrl-k v": "markdown::OpenPreviewToTheSide", - "ctrl-shift-v": "markdown::OpenPreview", - }, + "ctrl-shift-v": "markdown::OpenPreview" + } }, { "context": "Editor && extension == svg", "use_key_equivalents": true, "bindings": { "ctrl-k v": "svg::OpenPreviewToTheSide", - "ctrl-shift-v": "svg::OpenPreview", - }, + "ctrl-shift-v": "svg::OpenPreview" + } }, { "context": "Editor && mode == full", "bindings": { "ctrl-shift-o": "outline::Toggle", - "ctrl-g": "go_to_line::Toggle", - }, + "ctrl-g": "go_to_line::Toggle" + } }, { "context": "Workspace", @@ -608,7 +608,7 @@ "ctrl-alt-b": "workspace::ToggleRightDock", "ctrl-b": "workspace::ToggleLeftDock", "ctrl-j": "workspace::ToggleBottomDock", - "ctrl-alt-j": "multi_workspace::ToggleWorkspaceSidebar", + "ctrl-alt-j": "agent::ToggleThreadsSidebar", "ctrl-alt-;": "multi_workspace::FocusWorkspaceSidebar", "ctrl-alt-y": "workspace::ToggleAllDocks", "ctrl-alt-0": "workspace::ResetActiveDockSize", @@ -638,7 +638,7 @@ "ctrl-shift-b": "outline_panel::ToggleFocus", "ctrl-shift-g": "git_panel::ToggleFocus", "ctrl-shift-d": "debug_panel::ToggleFocus", - "ctrl-?": "agent::ToggleFocus", + "ctrl-?": "agent::ToggleAgentDrawer", "alt-save": "workspace::SaveAll", "ctrl-alt-s": "workspace::SaveAll", "ctrl-k n": "encoding_selector::Toggle", @@ -667,8 +667,8 @@ // "foo-bar": ["task::Spawn", { "task_tag": "MyTag" }], "f5": "debugger::Rerun", "ctrl-f4": "workspace::CloseActiveDock", - "ctrl-w": "workspace::CloseActiveDock", - }, + "ctrl-w": "workspace::CloseActiveDock" + } }, { "context": "WorkspaceSidebar", @@ -677,28 +677,28 @@ "ctrl-n": "multi_workspace::NewWorkspaceInWindow", "left": "agents_sidebar::CollapseSelectedEntry", "right": "agents_sidebar::ExpandSelectedEntry", - "enter": "menu::Confirm", - }, + "enter": "menu::Confirm" + } }, { "context": "Workspace && debugger_running", "bindings": { - "f5": "zed::NoAction", - }, + "f5": "zed::NoAction" + } }, { "context": "Workspace && debugger_stopped", "bindings": { - "f5": "debugger::Continue", - }, + "f5": "debugger::Continue" + } }, { "context": "ApplicationMenu", "bindings": { "f10": "menu::Cancel", "left": "app_menu::ActivateMenuLeft", - "right": "app_menu::ActivateMenuRight", - }, + "right": "app_menu::ActivateMenuRight" + } }, // Bindings from Sublime Text { @@ -716,8 +716,8 @@ "ctrl-alt-shift-left": "editor::SelectToPreviousSubwordStart", "ctrl-alt-shift-b": "editor::SelectToPreviousSubwordStart", "ctrl-alt-shift-right": "editor::SelectToNextSubwordEnd", - "ctrl-alt-shift-f": "editor::SelectToNextSubwordEnd", - }, + "ctrl-alt-shift-f": "editor::SelectToNextSubwordEnd" + } }, // Bindings from Atom { @@ -726,37 +726,37 @@ "ctrl-k up": "pane::SplitUp", "ctrl-k down": "pane::SplitDown", "ctrl-k left": "pane::SplitLeft", - "ctrl-k right": "pane::SplitRight", - }, + "ctrl-k right": "pane::SplitRight" + } }, // Bindings that should be unified with bindings for more general actions { "context": "Editor && renaming", "bindings": { - "enter": "editor::ConfirmRename", - }, + "enter": "editor::ConfirmRename" + } }, { "context": "Editor && showing_completions", "bindings": { "enter": "editor::ConfirmCompletion", "shift-enter": "editor::ConfirmCompletionReplace", - "tab": "editor::ComposeCompletion", - }, + "tab": "editor::ComposeCompletion" + } }, { "context": "Editor && in_snippet && has_next_tabstop && !showing_completions", "use_key_equivalents": true, "bindings": { - "tab": "editor::NextSnippetTabstop", - }, + "tab": "editor::NextSnippetTabstop" + } }, { "context": "Editor && in_snippet && has_previous_tabstop && !showing_completions", "use_key_equivalents": true, "bindings": { - "shift-tab": "editor::PreviousSnippetTabstop", - }, + "shift-tab": "editor::PreviousSnippetTabstop" + } }, // Bindings for accepting edit predictions // @@ -769,8 +769,8 @@ "alt-l": "editor::AcceptEditPrediction", "tab": "editor::AcceptEditPrediction", "alt-k": "editor::AcceptNextWordEditPrediction", - "alt-j": "editor::AcceptNextLineEditPrediction", - }, + "alt-j": "editor::AcceptNextLineEditPrediction" + } }, { "context": "Editor && edit_prediction_conflict", @@ -778,14 +778,14 @@ "alt-tab": "editor::AcceptEditPrediction", "alt-l": "editor::AcceptEditPrediction", "alt-k": "editor::AcceptNextWordEditPrediction", - "alt-j": "editor::AcceptNextLineEditPrediction", - }, + "alt-j": "editor::AcceptNextLineEditPrediction" + } }, { "context": "Editor && showing_code_actions", "bindings": { - "enter": "editor::ConfirmCodeAction", - }, + "enter": "editor::ConfirmCodeAction" + } }, { "context": "Editor && (showing_code_actions || showing_completions)", @@ -795,29 +795,29 @@ "ctrl-n": "editor::ContextMenuNext", "down": "editor::ContextMenuNext", "pageup": "editor::ContextMenuFirst", - "pagedown": "editor::ContextMenuLast", - }, + "pagedown": "editor::ContextMenuLast" + } }, { "context": "Editor && showing_signature_help && !showing_completions", "bindings": { "up": "editor::SignatureHelpPrevious", - "down": "editor::SignatureHelpNext", - }, + "down": "editor::SignatureHelpNext" + } }, // Custom bindings { "bindings": { "ctrl-alt-shift-f": "workspace::FollowNextCollaborator", // Only available in debug builds: opens an element inspector for development. - "ctrl-alt-i": "dev::ToggleInspector", - }, + "ctrl-alt-i": "dev::ToggleInspector" + } }, { "context": "!Terminal", "bindings": { - "ctrl-shift-c": "collab_panel::ToggleFocus", - }, + "ctrl-shift-c": "collab_panel::ToggleFocus" + } }, { "context": "!ContextEditor && !AcpThread > Editor && mode == full", @@ -829,8 +829,8 @@ "ctrl-f8": "editor::GoToHunk", "ctrl-shift-f8": "editor::GoToPreviousHunk", "ctrl-enter": "assistant::InlineAssist", - "ctrl-:": "editor::ToggleInlayHints", - }, + "ctrl-:": "editor::ToggleInlayHints" + } }, { "context": "InlineAssistant", @@ -838,8 +838,8 @@ "ctrl-[": "agent::CyclePreviousInlineAssist", "ctrl-]": "agent::CycleNextInlineAssist", "ctrl-shift-enter": "inline_assistant::ThumbsUpResult", - "ctrl-shift-backspace": "inline_assistant::ThumbsDownResult", - }, + "ctrl-shift-backspace": "inline_assistant::ThumbsDownResult" + } }, { "context": "Prompt", @@ -847,14 +847,14 @@ "left": "menu::SelectPrevious", "right": "menu::SelectNext", "h": "menu::SelectPrevious", - "l": "menu::SelectNext", - }, + "l": "menu::SelectNext" + } }, { "context": "ProjectSearchBar && !in_replace", "bindings": { - "ctrl-enter": "project_search::SearchInNew", - }, + "ctrl-enter": "project_search::SearchInNew" + } }, { "context": "OutlinePanel && not_editing", @@ -871,8 +871,8 @@ "shift-down": "menu::SelectNext", "shift-up": "menu::SelectPrevious", "alt-enter": "editor::OpenExcerpts", - "ctrl-alt-enter": "editor::OpenExcerptsSplit", - }, + "ctrl-alt-enter": "editor::OpenExcerptsSplit" + } }, { "context": "ProjectPanel", @@ -910,14 +910,14 @@ "ctrl-alt-shift-f": "project_panel::NewSearchInDirectory", "shift-down": "menu::SelectNext", "shift-up": "menu::SelectPrevious", - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "ProjectPanel && not_editing", "bindings": { - "space": "project_panel::Open", - }, + "space": "project_panel::Open" + } }, { "context": "GitPanel && ChangesList", @@ -940,15 +940,15 @@ "backspace": ["git::RestoreFile", { "skip_prompt": false }], "shift-delete": ["git::RestoreFile", { "skip_prompt": false }], "ctrl-backspace": ["git::RestoreFile", { "skip_prompt": false }], - "ctrl-delete": ["git::RestoreFile", { "skip_prompt": false }], - }, + "ctrl-delete": ["git::RestoreFile", { "skip_prompt": false }] + } }, { "context": "GitPanel && CommitEditor", "use_key_equivalents": true, "bindings": { - "escape": "git::Cancel", - }, + "escape": "git::Cancel" + } }, { "context": "GitCommit > Editor", @@ -957,8 +957,8 @@ "enter": "editor::Newline", "ctrl-enter": "git::Commit", "ctrl-shift-enter": "git::Amend", - "alt-l": "git::GenerateCommitMessage", - }, + "alt-l": "git::GenerateCommitMessage" + } }, { "context": "GitPanel", @@ -974,8 +974,8 @@ "ctrl-space": "git::StageAll", "ctrl-shift-space": "git::UnstageAll", "ctrl-enter": "git::Commit", - "ctrl-shift-enter": "git::Amend", - }, + "ctrl-shift-enter": "git::Amend" + } }, { "context": "GitDiff > Editor", @@ -984,14 +984,14 @@ "ctrl-shift-enter": "git::Amend", "ctrl-space": "git::StageAll", "ctrl-shift-space": "git::UnstageAll", - "ctrl-k ctrl-r": "git::RestoreAndNext", - }, + "ctrl-k ctrl-r": "git::RestoreAndNext" + } }, { "context": "AskPass > Editor", "bindings": { - "enter": "menu::Confirm", - }, + "enter": "menu::Confirm" + } }, { "context": "CommitEditor > Editor", @@ -1003,16 +1003,16 @@ "ctrl-enter": "git::Commit", "ctrl-shift-enter": "git::Amend", "alt-up": "git_panel::FocusChanges", - "alt-l": "git::GenerateCommitMessage", - }, + "alt-l": "git::GenerateCommitMessage" + } }, { "context": "DebugPanel", "bindings": { "ctrl-t": "debugger::ToggleThreadPicker", "ctrl-i": "debugger::ToggleSessionPicker", - "shift-alt-escape": "debugger::ToggleExpandItem", - }, + "shift-alt-escape": "debugger::ToggleExpandItem" + } }, { "context": "VariableList", @@ -1024,8 +1024,8 @@ "ctrl-alt-c": "variable_list::CopyVariableName", "delete": "variable_list::RemoveWatch", "backspace": "variable_list::RemoveWatch", - "alt-enter": "variable_list::AddWatch", - }, + "alt-enter": "variable_list::AddWatch" + } }, { "context": "BreakpointList", @@ -1033,35 +1033,35 @@ "space": "debugger::ToggleEnableBreakpoint", "backspace": "debugger::UnsetBreakpoint", "left": "debugger::PreviousBreakpointProperty", - "right": "debugger::NextBreakpointProperty", - }, + "right": "debugger::NextBreakpointProperty" + } }, { "context": "CollabPanel && not_editing", "bindings": { "ctrl-backspace": "collab_panel::Remove", - "space": "menu::Confirm", - }, + "space": "menu::Confirm" + } }, { "context": "CollabPanel", "bindings": { "alt-up": "collab_panel::MoveChannelUp", "alt-down": "collab_panel::MoveChannelDown", - "alt-enter": "collab_panel::OpenSelectedChannelNotes", - }, + "alt-enter": "collab_panel::OpenSelectedChannelNotes" + } }, { "context": "(CollabPanel && editing) > Editor", "bindings": { - "space": "collab_panel::InsertSpace", - }, + "space": "collab_panel::InsertSpace" + } }, { "context": "ChannelModal", "bindings": { - "tab": "channel_modal::ToggleMode", - }, + "tab": "channel_modal::ToggleMode" + } }, { "context": "Picker > Editor", @@ -1070,29 +1070,29 @@ "up": "menu::SelectPrevious", "down": "menu::SelectNext", "tab": "picker::ConfirmCompletion", - "alt-enter": ["picker::ConfirmInput", { "secondary": false }], - }, + "alt-enter": ["picker::ConfirmInput", { "secondary": false }] + } }, { "context": "ChannelModal > Picker > Editor", "bindings": { - "tab": "channel_modal::ToggleMode", - }, + "tab": "channel_modal::ToggleMode" + } }, { "context": "ToolchainSelector", "use_key_equivalents": true, "bindings": { - "ctrl-shift-a": "toolchain::AddToolchain", - }, + "ctrl-shift-a": "toolchain::AddToolchain" + } }, { "context": "FileFinder || (FileFinder > Picker > Editor)", "bindings": { "ctrl-p": "file_finder::Toggle", "ctrl-shift-a": "file_finder::ToggleSplitMenu", - "ctrl-shift-i": "file_finder::ToggleFilterMenu", - }, + "ctrl-shift-i": "file_finder::ToggleFilterMenu" + } }, { "context": "FileFinder || (FileFinder > Picker > Editor) || (FileFinder > Picker > menu)", @@ -1101,15 +1101,15 @@ "ctrl-j": "pane::SplitDown", "ctrl-k": "pane::SplitUp", "ctrl-h": "pane::SplitLeft", - "ctrl-l": "pane::SplitRight", - }, + "ctrl-l": "pane::SplitRight" + } }, { "context": "RecentProjects || (RecentProjects > Picker > Editor)", "bindings": { "ctrl-k": "recent_projects::ToggleActionsMenu", - "ctrl-shift-a": "workspace::AddFolderToProject", - }, + "ctrl-shift-a": "workspace::AddFolderToProject" + } }, { "context": "TabSwitcher", @@ -1117,15 +1117,15 @@ "ctrl-shift-tab": "menu::SelectPrevious", "ctrl-up": "menu::SelectPrevious", "ctrl-down": "menu::SelectNext", - "ctrl-backspace": "tab_switcher::CloseSelectedItem", - }, + "ctrl-backspace": "tab_switcher::CloseSelectedItem" + } }, { "context": "StashList || (StashList > Picker > Editor)", "bindings": { "ctrl-shift-backspace": "stash_picker::DropStashItem", - "ctrl-shift-v": "stash_picker::ShowStashItem", - }, + "ctrl-shift-v": "stash_picker::ShowStashItem" + } }, { "context": "Terminal", @@ -1171,58 +1171,58 @@ "ctrl-alt-r": "terminal::RerunTask", "alt-t": "terminal::RerunTask", "ctrl-shift-5": "pane::SplitRight", - "ctrl->": "agent::AddSelectionToThread", - }, + "ctrl->": "agent::AddSelectionToThread" + } }, { "context": "ZedPredictModal", "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "ConfigureContextServerModal > Editor", "bindings": { "escape": "menu::Cancel", "enter": "editor::Newline", - "ctrl-enter": "menu::Confirm", - }, + "ctrl-enter": "menu::Confirm" + } }, { "context": "ContextServerToolsModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "OnboardingAiConfigurationModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "Diagnostics", "use_key_equivalents": true, "bindings": { - "ctrl-r": "diagnostics::ToggleDiagnosticsRefresh", - }, + "ctrl-r": "diagnostics::ToggleDiagnosticsRefresh" + } }, { "context": "DebugConsole > Editor", "use_key_equivalents": true, "bindings": { "enter": "menu::Confirm", - "alt-enter": "console::WatchExpression", - }, + "alt-enter": "console::WatchExpression" + } }, { "context": "RunModal", "bindings": { "ctrl-tab": "pane::ActivateNextItem", - "ctrl-shift-tab": "pane::ActivatePreviousItem", - }, + "ctrl-shift-tab": "pane::ActivatePreviousItem" + } }, { "context": "MarkdownPreview", @@ -1232,8 +1232,8 @@ "up": "markdown::ScrollUp", "down": "markdown::ScrollDown", "alt-up": "markdown::ScrollUpByItem", - "alt-down": "markdown::ScrollDownByItem", - }, + "alt-down": "markdown::ScrollDownByItem" + } }, { "context": "KeymapEditor", @@ -1249,8 +1249,8 @@ "ctrl-c": "keymap_editor::CopyAction", "ctrl-shift-c": "keymap_editor::CopyContext", "ctrl-t": "keymap_editor::ShowMatchingKeybinds", - "ctrl-e": "zed::OpenKeymapFile", - }, + "ctrl-e": "zed::OpenKeymapFile" + } }, { "context": "KeystrokeInput", @@ -1258,24 +1258,24 @@ "bindings": { "enter": "keystroke_input::StartRecording", "escape escape escape": "keystroke_input::StopRecording", - "delete": "keystroke_input::ClearKeystrokes", - }, + "delete": "keystroke_input::ClearKeystrokes" + } }, { "context": "KeybindEditorModal", "use_key_equivalents": true, "bindings": { "ctrl-enter": "menu::Confirm", - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "KeybindEditorModal > Editor", "use_key_equivalents": true, "bindings": { "up": "menu::SelectPrevious", - "down": "menu::SelectNext", - }, + "down": "menu::SelectNext" + } }, { "context": "Onboarding", @@ -1287,8 +1287,8 @@ "ctrl-0": ["zed::ResetUiFontSize", { "persist": false }], "ctrl-enter": "onboarding::Finish", "alt-shift-l": "onboarding::SignIn", - "alt-shift-a": "onboarding::OpenAccount", - }, + "alt-shift-a": "onboarding::OpenAccount" + } }, { "context": "Welcome", @@ -1302,15 +1302,15 @@ "ctrl-2": ["welcome::OpenRecentProject", 1], "ctrl-3": ["welcome::OpenRecentProject", 2], "ctrl-4": ["welcome::OpenRecentProject", 3], - "ctrl-5": ["welcome::OpenRecentProject", 4], - }, + "ctrl-5": ["welcome::OpenRecentProject", 4] + } }, { "context": "InvalidBuffer", "use_key_equivalents": true, "bindings": { - "ctrl-shift-enter": "workspace::OpenWithSystem", - }, + "ctrl-shift-enter": "workspace::OpenWithSystem" + } }, { "context": "GitWorktreeSelector || (GitWorktreeSelector > Picker > Editor)", @@ -1318,8 +1318,8 @@ "bindings": { "ctrl-shift-space": "git::WorktreeFromDefaultOnWindow", "ctrl-space": "git::WorktreeFromDefault", - "ctrl-shift-backspace": "git::DeleteWorktree", - }, + "ctrl-shift-backspace": "git::DeleteWorktree" + } }, { "context": "SettingsWindow", @@ -1344,16 +1344,16 @@ "ctrl-9": ["settings_editor::FocusFile", 8], "ctrl-0": ["settings_editor::FocusFile", 9], "ctrl-pageup": "settings_editor::FocusPreviousFile", - "ctrl-pagedown": "settings_editor::FocusNextFile", - }, + "ctrl-pagedown": "settings_editor::FocusNextFile" + } }, { "context": "StashDiff > Editor", "bindings": { "ctrl-space": "git::ApplyCurrentStash", "ctrl-shift-space": "git::PopCurrentStash", - "ctrl-shift-backspace": "git::DropCurrentStash", - }, + "ctrl-shift-backspace": "git::DropCurrentStash" + } }, { "context": "SettingsWindow > NavigationMenu", @@ -1368,15 +1368,15 @@ "pageup": "settings_editor::FocusPreviousRootNavEntry", "pagedown": "settings_editor::FocusNextRootNavEntry", "home": "settings_editor::FocusFirstNavEntry", - "end": "settings_editor::FocusLastNavEntry", - }, + "end": "settings_editor::FocusLastNavEntry" + } }, { "context": "EditPredictionContext > Editor", "bindings": { "alt-left": "dev::EditPredictionContextGoBack", - "alt-right": "dev::EditPredictionContextGoForward", - }, + "alt-right": "dev::EditPredictionContextGoForward" + } }, { "context": "NotebookEditor", @@ -1389,8 +1389,8 @@ "ctrl-m": "notebook::AddCodeBlock", "ctrl-shift-m": "notebook::AddMarkdownBlock", "ctrl-shift-r": "notebook::RestartKernel", - "ctrl-c": "notebook::InterruptKernel", - }, + "ctrl-c": "notebook::InterruptKernel" + } }, { "context": "NotebookEditor > Editor", @@ -1404,16 +1404,16 @@ "ctrl-m": "notebook::AddCodeBlock", "ctrl-shift-m": "notebook::AddMarkdownBlock", "ctrl-shift-r": "notebook::RestartKernel", - "ctrl-c": "notebook::InterruptKernel", - }, + "ctrl-c": "notebook::InterruptKernel" + } }, { "context": "GitBranchSelector || (GitBranchSelector > Picker > Editor)", "use_key_equivalents": true, "bindings": { "ctrl-shift-backspace": "branch_picker::DeleteBranch", - "ctrl-shift-i": "branch_picker::FilterRemotes", - }, + "ctrl-shift-i": "branch_picker::FilterRemotes" + } }, { "context": "ImageViewer", @@ -1423,8 +1423,8 @@ "ctrl--": "image_viewer::ZoomOut", "ctrl-0": "image_viewer::ResetZoom", "ctrl-1": "image_viewer::ZoomToActualSize", - "ctrl-shift-0": "image_viewer::FitToView", - }, + "ctrl-shift-0": "image_viewer::FitToView" + } }, { "context": "RunModal", @@ -1432,15 +1432,15 @@ "alt-1": "new_process_modal::ActivateTaskTab", "alt-2": "new_process_modal::ActivateDebugTab", "alt-3": "new_process_modal::ActivateAttachTab", - "alt-4": "new_process_modal::ActivateLaunchTab", - }, + "alt-4": "new_process_modal::ActivateLaunchTab" + } }, { "context": "GitPicker", "bindings": { "alt-1": "git_picker::ActivateBranchesTab", "alt-2": "git_picker::ActivateWorktreesTab", - "alt-3": "git_picker::ActivateStashTab", - }, - }, + "alt-3": "git_picker::ActivateStashTab" + } + } ] diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index a4aec7cfe8053f3f23b43652f7e58f319c9691f6..98fdb3cacb7202042a8544371721016f2d6a73df 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -51,15 +51,15 @@ "ctrl-cmd-i": "edit_prediction::ToggleMenu", "ctrl-cmd-l": "lsp_tool::ToggleMenu", "ctrl-cmd-c": "editor::DisplayCursorNames", - "ctrl-cmd-s": "workspace::ToggleWorktreeSecurity", - }, + "ctrl-cmd-s": "workspace::ToggleWorktreeSecurity" + } }, { "context": "menu", "bindings": { "right": "menu::SelectChild", - "left": "menu::SelectParent", - }, + "left": "menu::SelectParent" + } }, { "context": "Editor", @@ -157,8 +157,8 @@ "shift-f9": "editor::EditLogBreakpoint", "ctrl-f12": "editor::GoToDeclaration", "alt-ctrl-f12": "editor::GoToDeclarationSplit", - "ctrl-cmd-e": "editor::ToggleEditPrediction", - }, + "ctrl-cmd-e": "editor::ToggleEditPrediction" + } }, { "context": "Editor && mode == full", @@ -176,8 +176,8 @@ "cmd->": "agent::AddSelectionToThread", "cmd-<": "assistant::InsertIntoEditor", "cmd-alt-e": "editor::SelectEnclosingSymbol", - "alt-enter": "editor::OpenSelectionsInMultibuffer", - }, + "alt-enter": "editor::OpenSelectionsInMultibuffer" + } }, { "context": "Editor && multibuffer", @@ -186,23 +186,23 @@ "cmd-up": "editor::MoveToStartOfExcerpt", "cmd-down": "editor::MoveToStartOfNextExcerpt", "cmd-shift-up": "editor::SelectToStartOfExcerpt", - "cmd-shift-down": "editor::SelectToStartOfNextExcerpt", - }, + "cmd-shift-down": "editor::SelectToStartOfNextExcerpt" + } }, { "context": "Editor && mode == full && edit_prediction", "use_key_equivalents": true, "bindings": { "alt-tab": "editor::NextEditPrediction", - "alt-shift-tab": "editor::PreviousEditPrediction", - }, + "alt-shift-tab": "editor::PreviousEditPrediction" + } }, { "context": "Editor && !edit_prediction", "use_key_equivalents": true, "bindings": { - "alt-tab": "editor::ShowEditPrediction", - }, + "alt-tab": "editor::ShowEditPrediction" + } }, { "context": "Editor && mode == auto_height", @@ -210,23 +210,23 @@ "bindings": { "ctrl-enter": "editor::Newline", "shift-enter": "editor::Newline", - "ctrl-shift-enter": "editor::NewlineBelow", - }, + "ctrl-shift-enter": "editor::NewlineBelow" + } }, { "context": "Markdown", "use_key_equivalents": true, "bindings": { - "cmd-c": "markdown::Copy", - }, + "cmd-c": "markdown::Copy" + } }, { "context": "Editor && jupyter && !ContextEditor", "use_key_equivalents": true, "bindings": { "ctrl-shift-enter": "repl::Run", - "ctrl-alt-enter": "repl::RunInPlace", - }, + "ctrl-alt-enter": "repl::RunInPlace" + } }, { "context": "Editor && !agent_diff && !AgentPanel", @@ -235,8 +235,8 @@ "cmd-alt-z": "git::Restore", "cmd-alt-y": "git::ToggleStaged", "cmd-y": "git::StageAndNext", - "cmd-shift-y": "git::UnstageAndNext", - }, + "cmd-shift-y": "git::UnstageAndNext" + } }, { "context": "AgentDiff", @@ -246,8 +246,8 @@ "cmd-alt-y": "agent::Keep", "cmd-alt-z": "agent::Reject", "shift-alt-y": "agent::KeepAll", - "shift-alt-z": "agent::RejectAll", - }, + "shift-alt-z": "agent::RejectAll" + } }, { "context": "Editor && editor_agent_diff", @@ -258,8 +258,8 @@ "cmd-alt-z": "agent::Reject", "shift-alt-y": "agent::KeepAll", "shift-alt-z": "agent::RejectAll", - "shift-ctrl-r": "agent::OpenAgentDiff", - }, + "shift-ctrl-r": "agent::OpenAgentDiff" + } }, { "context": "ContextEditor > Editor", @@ -277,8 +277,8 @@ "cmd-shift-g": "search::SelectPreviousMatch", "cmd-k l": "agent::OpenRulesLibrary", "alt-tab": "agent::CycleFavoriteModels", - "cmd-shift-v": "agent::PasteRaw", - }, + "cmd-shift-v": "agent::PasteRaw" + } }, { "context": "AgentPanel", @@ -304,31 +304,31 @@ "cmd-shift-enter": "agent::ContinueThread", "cmd-y": "agent::AllowOnce", "cmd-alt-a": "agent::OpenPermissionDropdown", - "cmd-alt-z": "agent::RejectOnce", - }, + "cmd-alt-z": "agent::RejectOnce" + } }, { "context": "AgentPanel > Markdown", "use_key_equivalents": true, "bindings": { - "cmd-c": "markdown::CopyAsMarkdown", - }, + "cmd-c": "markdown::CopyAsMarkdown" + } }, { "context": "AgentPanel && text_thread", "use_key_equivalents": true, "bindings": { "cmd-n": "agent::NewTextThread", - "cmd-alt-n": "agent::NewExternalAgentThread", - }, + "cmd-alt-n": "agent::NewExternalAgentThread" + } }, { "context": "AgentPanel && acp_thread", "use_key_equivalents": true, "bindings": { "cmd-n": "agent::NewExternalAgentThread", - "cmd-alt-t": "agent::NewThread", - }, + "cmd-alt-t": "agent::NewThread" + } }, { "context": "AgentFeedbackMessageEditor > Editor", @@ -336,26 +336,26 @@ "bindings": { "escape": "menu::Cancel", "enter": "menu::Confirm", - "alt-enter": "editor::Newline", - }, + "alt-enter": "editor::Newline" + } }, { "context": "AgentConfiguration", "bindings": { - "ctrl--": "pane::GoBack", - }, + "ctrl--": "pane::GoBack" + } }, { "context": "AcpThread > ModeSelector", "bindings": { - "cmd-enter": "menu::Confirm", - }, + "cmd-enter": "menu::Confirm" + } }, { "context": "AcpThread", "bindings": { - "ctrl--": "pane::GoBack", - }, + "ctrl--": "pane::GoBack" + } }, { "context": "AcpThread > Editor", @@ -380,35 +380,35 @@ "cmd-alt-k": "agent::ToggleThinkingMode", "cmd-alt-'": "agent::ToggleThinkingEffortMenu", "ctrl-'": "agent::CycleThinkingEffort", - "cmd-alt-.": "agent::ToggleFastMode", - }, + "cmd-alt-.": "agent::ToggleFastMode" + } }, { "context": "AcpThread > Editor && !use_modifier_to_send", "use_key_equivalents": true, "bindings": { - "enter": "agent::Chat", - }, + "enter": "agent::Chat" + } }, { "context": "AcpThread > Editor && use_modifier_to_send", "use_key_equivalents": true, "bindings": { "cmd-enter": "agent::Chat", - "enter": "editor::Newline", - }, + "enter": "editor::Newline" + } }, { "context": "ThreadHistory", "bindings": { - "ctrl--": "pane::GoBack", - }, + "ctrl--": "pane::GoBack" + } }, { "context": "ThreadHistory > Editor", "bindings": { - "shift-backspace": "agent::RemoveSelectedThread", - }, + "shift-backspace": "agent::RemoveSelectedThread" + } }, { "context": "RulesLibrary", @@ -416,8 +416,8 @@ "bindings": { "cmd-n": "rules_library::NewRule", "cmd-shift-s": "rules_library::ToggleDefaultRule", - "cmd-w": "workspace::CloseWindow", - }, + "cmd-w": "workspace::CloseWindow" + } }, { "context": "BufferSearchBar", @@ -432,31 +432,31 @@ "cmd-f": "search::FocusSearch", "cmd-alt-f": "search::ToggleReplace", "cmd-alt-l": "search::ToggleSelection", - "cmd-shift-o": "outline::Toggle", - }, + "cmd-shift-o": "outline::Toggle" + } }, { "context": "BufferSearchBar && in_replace > Editor", "use_key_equivalents": true, "bindings": { "enter": "search::ReplaceNext", - "cmd-enter": "search::ReplaceAll", - }, + "cmd-enter": "search::ReplaceAll" + } }, { "context": "BufferSearchBar && !in_replace > Editor", "use_key_equivalents": true, "bindings": { "up": "search::PreviousHistoryQuery", - "down": "search::NextHistoryQuery", - }, + "down": "search::NextHistoryQuery" + } }, { "context": "BufferSearchBar || ProjectSearchBar", "use_key_equivalents": true, "bindings": { - "ctrl-enter": "editor::Newline", - }, + "ctrl-enter": "editor::Newline" + } }, { "context": "ProjectSearchBar", @@ -468,24 +468,24 @@ "cmd-shift-f": "search::FocusSearch", "cmd-shift-h": "search::ToggleReplace", "alt-cmd-g": "search::ToggleRegex", - "alt-cmd-x": "search::ToggleRegex", - }, + "alt-cmd-x": "search::ToggleRegex" + } }, { "context": "ProjectSearchBar > Editor", "use_key_equivalents": true, "bindings": { "up": "search::PreviousHistoryQuery", - "down": "search::NextHistoryQuery", - }, + "down": "search::NextHistoryQuery" + } }, { "context": "ProjectSearchBar && in_replace > Editor", "use_key_equivalents": true, "bindings": { "enter": "search::ReplaceNext", - "cmd-enter": "search::ReplaceAll", - }, + "cmd-enter": "search::ReplaceAll" + } }, { "context": "ProjectSearchView", @@ -496,8 +496,8 @@ "cmd-shift-enter": "project_search::ToggleAllSearchResults", "cmd-shift-h": "search::ToggleReplace", "alt-cmd-g": "search::ToggleRegex", - "alt-cmd-x": "search::ToggleRegex", - }, + "alt-cmd-x": "search::ToggleRegex" + } }, { "context": "Pane", @@ -527,8 +527,8 @@ "alt-cmd-w": "search::ToggleWholeWord", "alt-cmd-f": "project_search::ToggleFilters", "alt-cmd-x": "search::ToggleRegex", - "cmd-k shift-enter": "pane::TogglePinTab", - }, + "cmd-k shift-enter": "pane::TogglePinTab" + } }, // Bindings from VS Code { @@ -598,24 +598,24 @@ "cmd-.": "editor::ToggleCodeActions", "cmd-k r": "editor::RevealInFileManager", "cmd-k p": "editor::CopyPath", - "cmd-\\": "pane::SplitRight", - }, + "cmd-\\": "pane::SplitRight" + } }, { "context": "Editor && extension == md", "use_key_equivalents": true, "bindings": { "cmd-k v": "markdown::OpenPreviewToTheSide", - "cmd-shift-v": "markdown::OpenPreview", - }, + "cmd-shift-v": "markdown::OpenPreview" + } }, { "context": "Editor && extension == svg", "use_key_equivalents": true, "bindings": { "cmd-k v": "svg::OpenPreviewToTheSide", - "cmd-shift-v": "svg::OpenPreview", - }, + "cmd-shift-v": "svg::OpenPreview" + } }, { "context": "Editor && mode == full", @@ -624,8 +624,8 @@ "cmd-shift-o": "outline::Toggle", "ctrl-g": "go_to_line::Toggle", "cmd-shift-backspace": "editor::GoToPreviousChange", - "cmd-shift-alt-backspace": "editor::GoToNextChange", - }, + "cmd-shift-alt-backspace": "editor::GoToNextChange" + } }, { "context": "Pane", @@ -643,8 +643,8 @@ "ctrl-0": "pane::ActivateLastItem", "ctrl--": "pane::GoBack", "ctrl-_": "pane::GoForward", - "cmd-shift-f": "pane::DeploySearch", - }, + "cmd-shift-f": "pane::DeploySearch" + } }, { "context": "Workspace", @@ -676,7 +676,7 @@ "cmd-alt-b": "workspace::ToggleRightDock", "cmd-r": "workspace::ToggleRightDock", "cmd-j": "workspace::ToggleBottomDock", - "cmd-alt-j": "multi_workspace::ToggleWorkspaceSidebar", + "cmd-alt-j": "agent::ToggleThreadsSidebar", "cmd-alt-;": "multi_workspace::FocusWorkspaceSidebar", "alt-cmd-y": "workspace::ToggleAllDocks", // For 0px parameter, uses UI font size value. @@ -703,7 +703,7 @@ "cmd-shift-b": "outline_panel::ToggleFocus", "ctrl-shift-g": "git_panel::ToggleFocus", "cmd-shift-d": "debug_panel::ToggleFocus", - "cmd-?": "agent::ToggleFocus", + "cmd-?": "agent::ToggleAgentDrawer", "cmd-alt-s": "workspace::SaveAll", "cmd-k n": "encoding_selector::Toggle", "cmd-k m": "language_selector::Toggle", @@ -719,8 +719,8 @@ "cmd-k shift-down": "workspace::SwapPaneDown", "cmd-shift-x": "zed::Extensions", "f5": "debugger::Rerun", - "cmd-w": "workspace::CloseActiveDock", - }, + "cmd-w": "workspace::CloseActiveDock" + } }, { "context": "Workspace && !Terminal", @@ -731,12 +731,12 @@ // All task parameters are captured and unchanged between reruns by default. // Use the `"reevaluate_context"` parameter to control this. "cmd-alt-r": ["task::Rerun", { "reevaluate_context": false }], - "ctrl-alt-shift-r": ["task::Spawn", { "reveal_target": "center" }], + "ctrl-alt-shift-r": ["task::Spawn", { "reveal_target": "center" }] // also possible to spawn tasks by name: // "foo-bar": ["task::Spawn", { "task_name": "MyTask", "reveal_target": "dock" }] // or by tag: // "foo-bar": ["task::Spawn", { "task_tag": "MyTag" }], - }, + } }, { "context": "WorkspaceSidebar", @@ -745,23 +745,23 @@ "cmd-n": "multi_workspace::NewWorkspaceInWindow", "left": "agents_sidebar::CollapseSelectedEntry", "right": "agents_sidebar::ExpandSelectedEntry", - "enter": "menu::Confirm", - }, + "enter": "menu::Confirm" + } }, { "context": "Workspace && debugger_running", "use_key_equivalents": true, "bindings": { "f5": "zed::NoAction", - "f11": "debugger::StepInto", - }, + "f11": "debugger::StepInto" + } }, { "context": "Workspace && debugger_stopped", "use_key_equivalents": true, "bindings": { - "f5": "debugger::Continue", - }, + "f5": "debugger::Continue" + } }, // Bindings from Sublime Text { @@ -782,8 +782,8 @@ "ctrl-alt-shift-left": "editor::SelectToPreviousSubwordStart", "ctrl-alt-shift-b": "editor::SelectToPreviousSubwordStart", "ctrl-alt-shift-right": "editor::SelectToNextSubwordEnd", - "ctrl-alt-shift-f": "editor::SelectToNextSubwordEnd", - }, + "ctrl-alt-shift-f": "editor::SelectToNextSubwordEnd" + } }, // Bindings from Atom { @@ -793,16 +793,16 @@ "cmd-k up": "pane::SplitUp", "cmd-k down": "pane::SplitDown", "cmd-k left": "pane::SplitLeft", - "cmd-k right": "pane::SplitRight", - }, + "cmd-k right": "pane::SplitRight" + } }, // Bindings that should be unified with bindings for more general actions { "context": "Editor && renaming", "use_key_equivalents": true, "bindings": { - "enter": "editor::ConfirmRename", - }, + "enter": "editor::ConfirmRename" + } }, { "context": "Editor && showing_completions", @@ -810,22 +810,22 @@ "bindings": { "enter": "editor::ConfirmCompletion", "shift-enter": "editor::ConfirmCompletionReplace", - "tab": "editor::ComposeCompletion", - }, + "tab": "editor::ComposeCompletion" + } }, { "context": "Editor && in_snippet && has_next_tabstop && !showing_completions", "use_key_equivalents": true, "bindings": { - "tab": "editor::NextSnippetTabstop", - }, + "tab": "editor::NextSnippetTabstop" + } }, { "context": "Editor && in_snippet && has_previous_tabstop && !showing_completions", "use_key_equivalents": true, "bindings": { - "shift-tab": "editor::PreviousSnippetTabstop", - }, + "shift-tab": "editor::PreviousSnippetTabstop" + } }, { "context": "Editor && edit_prediction", @@ -833,8 +833,8 @@ "alt-tab": "editor::AcceptEditPrediction", "tab": "editor::AcceptEditPrediction", "ctrl-cmd-right": "editor::AcceptNextWordEditPrediction", - "ctrl-cmd-down": "editor::AcceptNextLineEditPrediction", - }, + "ctrl-cmd-down": "editor::AcceptNextLineEditPrediction" + } }, { "context": "Editor && edit_prediction_conflict", @@ -842,15 +842,15 @@ "bindings": { "alt-tab": "editor::AcceptEditPrediction", "ctrl-cmd-right": "editor::AcceptNextWordEditPrediction", - "ctrl-cmd-down": "editor::AcceptNextLineEditPrediction", - }, + "ctrl-cmd-down": "editor::AcceptNextLineEditPrediction" + } }, { "context": "Editor && showing_code_actions", "use_key_equivalents": true, "bindings": { - "enter": "editor::ConfirmCodeAction", - }, + "enter": "editor::ConfirmCodeAction" + } }, { "context": "Editor && (showing_code_actions || showing_completions)", @@ -861,15 +861,15 @@ "down": "editor::ContextMenuNext", "ctrl-n": "editor::ContextMenuNext", "pageup": "editor::ContextMenuFirst", - "pagedown": "editor::ContextMenuLast", - }, + "pagedown": "editor::ContextMenuLast" + } }, { "context": "Editor && showing_signature_help && !showing_completions", "bindings": { "up": "editor::SignatureHelpPrevious", - "down": "editor::SignatureHelpNext", - }, + "down": "editor::SignatureHelpNext" + } }, // Custom bindings { @@ -879,8 +879,8 @@ // TODO: Move this to a dock open action "cmd-shift-c": "collab_panel::ToggleFocus", // Only available in debug builds: opens an element inspector for development. - "cmd-alt-i": "dev::ToggleInspector", - }, + "cmd-alt-i": "dev::ToggleInspector" + } }, { "context": "!ContextEditor && !AcpThread > Editor && mode == full", @@ -893,8 +893,8 @@ "cmd-f8": "editor::GoToHunk", "cmd-shift-f8": "editor::GoToPreviousHunk", "ctrl-enter": "assistant::InlineAssist", - "ctrl-:": "editor::ToggleInlayHints", - }, + "ctrl-:": "editor::ToggleInlayHints" + } }, { "context": "InlineAssistant > Editor", @@ -905,8 +905,8 @@ "ctrl-[": "agent::CyclePreviousInlineAssist", "ctrl-]": "agent::CycleNextInlineAssist", "cmd-shift-enter": "inline_assistant::ThumbsUpResult", - "cmd-shift-backspace": "inline_assistant::ThumbsDownResult", - }, + "cmd-shift-backspace": "inline_assistant::ThumbsDownResult" + } }, { "context": "Prompt", @@ -915,15 +915,15 @@ "left": "menu::SelectPrevious", "right": "menu::SelectNext", "h": "menu::SelectPrevious", - "l": "menu::SelectNext", - }, + "l": "menu::SelectNext" + } }, { "context": "ProjectSearchBar && !in_replace", "use_key_equivalents": true, "bindings": { - "cmd-enter": "project_search::SearchInNew", - }, + "cmd-enter": "project_search::SearchInNew" + } }, { "context": "OutlinePanel && not_editing", @@ -939,8 +939,8 @@ "shift-down": "menu::SelectNext", "shift-up": "menu::SelectPrevious", "alt-enter": "editor::OpenExcerpts", - "cmd-alt-enter": "editor::OpenExcerptsSplit", - }, + "cmd-alt-enter": "editor::OpenExcerptsSplit" + } }, { "context": "ProjectPanel", @@ -970,15 +970,15 @@ "cmd-alt-shift-f": "project_panel::NewSearchInDirectory", "shift-down": "menu::SelectNext", "shift-up": "menu::SelectPrevious", - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "ProjectPanel && not_editing", "use_key_equivalents": true, "bindings": { - "space": "project_panel::Open", - }, + "space": "project_panel::Open" + } }, { "context": "VariableList", @@ -991,8 +991,8 @@ "cmd-alt-c": "variable_list::CopyVariableName", "delete": "variable_list::RemoveWatch", "backspace": "variable_list::RemoveWatch", - "alt-enter": "variable_list::AddWatch", - }, + "alt-enter": "variable_list::AddWatch" + } }, { "context": "GitPanel && ChangesList", @@ -1017,15 +1017,15 @@ "backspace": ["git::RestoreFile", { "skip_prompt": false }], "delete": ["git::RestoreFile", { "skip_prompt": false }], "cmd-backspace": ["git::RestoreFile", { "skip_prompt": true }], - "cmd-delete": ["git::RestoreFile", { "skip_prompt": true }], - }, + "cmd-delete": ["git::RestoreFile", { "skip_prompt": true }] + } }, { "context": "GitPanel && CommitEditor", "use_key_equivalents": true, "bindings": { - "escape": "git::Cancel", - }, + "escape": "git::Cancel" + } }, { "context": "GitDiff > Editor", @@ -1035,8 +1035,8 @@ "cmd-shift-enter": "git::Amend", "cmd-ctrl-y": "git::StageAll", "cmd-ctrl-shift-y": "git::UnstageAll", - "cmd-alt-z": "git::RestoreAndNext", - }, + "cmd-alt-z": "git::RestoreAndNext" + } }, { "context": "CommitEditor > Editor", @@ -1049,8 +1049,8 @@ "shift-tab": "git_panel::FocusChanges", "alt-up": "git_panel::FocusChanges", "shift-escape": "git::ExpandCommitEditor", - "alt-tab": "git::GenerateCommitMessage", - }, + "alt-tab": "git::GenerateCommitMessage" + } }, { "context": "GitPanel", @@ -1067,8 +1067,8 @@ "cmd-ctrl-y": "git::StageAll", "cmd-ctrl-shift-y": "git::UnstageAll", "cmd-enter": "git::Commit", - "cmd-shift-enter": "git::Amend", - }, + "cmd-shift-enter": "git::Amend" + } }, { "context": "GitCommit > Editor", @@ -1078,16 +1078,16 @@ "escape": "menu::Cancel", "cmd-enter": "git::Commit", "cmd-shift-enter": "git::Amend", - "alt-tab": "git::GenerateCommitMessage", - }, + "alt-tab": "git::GenerateCommitMessage" + } }, { "context": "DebugPanel", "bindings": { "cmd-t": "debugger::ToggleThreadPicker", "cmd-i": "debugger::ToggleSessionPicker", - "shift-alt-escape": "debugger::ToggleExpandItem", - }, + "shift-alt-escape": "debugger::ToggleExpandItem" + } }, { "context": "BreakpointList", @@ -1095,16 +1095,16 @@ "space": "debugger::ToggleEnableBreakpoint", "backspace": "debugger::UnsetBreakpoint", "left": "debugger::PreviousBreakpointProperty", - "right": "debugger::NextBreakpointProperty", - }, + "right": "debugger::NextBreakpointProperty" + } }, { "context": "CollabPanel && not_editing", "use_key_equivalents": true, "bindings": { "ctrl-backspace": "collab_panel::Remove", - "space": "menu::Confirm", - }, + "space": "menu::Confirm" + } }, { "context": "CollabPanel", @@ -1112,22 +1112,22 @@ "bindings": { "alt-up": "collab_panel::MoveChannelUp", "alt-down": "collab_panel::MoveChannelDown", - "alt-enter": "collab_panel::OpenSelectedChannelNotes", - }, + "alt-enter": "collab_panel::OpenSelectedChannelNotes" + } }, { "context": "(CollabPanel && editing) > Editor", "use_key_equivalents": true, "bindings": { - "space": "collab_panel::InsertSpace", - }, + "space": "collab_panel::InsertSpace" + } }, { "context": "ChannelModal", "use_key_equivalents": true, "bindings": { - "tab": "channel_modal::ToggleMode", - }, + "tab": "channel_modal::ToggleMode" + } }, { "context": "Picker > Editor", @@ -1138,30 +1138,30 @@ "down": "menu::SelectNext", "tab": "picker::ConfirmCompletion", "alt-enter": ["picker::ConfirmInput", { "secondary": false }], - "cmd-alt-enter": ["picker::ConfirmInput", { "secondary": true }], - }, + "cmd-alt-enter": ["picker::ConfirmInput", { "secondary": true }] + } }, { "context": "ChannelModal > Picker > Editor", "use_key_equivalents": true, "bindings": { - "tab": "channel_modal::ToggleMode", - }, + "tab": "channel_modal::ToggleMode" + } }, { "context": "ToolchainSelector", "use_key_equivalents": true, "bindings": { - "cmd-shift-a": "toolchain::AddToolchain", - }, + "cmd-shift-a": "toolchain::AddToolchain" + } }, { "context": "FileFinder || (FileFinder > Picker > Editor)", "use_key_equivalents": true, "bindings": { "cmd-shift-a": "file_finder::ToggleSplitMenu", - "cmd-shift-i": "file_finder::ToggleFilterMenu", - }, + "cmd-shift-i": "file_finder::ToggleFilterMenu" + } }, { "context": "FileFinder || (FileFinder > Picker > Editor) || (FileFinder > Picker > menu)", @@ -1171,16 +1171,16 @@ "cmd-j": "pane::SplitDown", "cmd-k": "pane::SplitUp", "cmd-h": "pane::SplitLeft", - "cmd-l": "pane::SplitRight", - }, + "cmd-l": "pane::SplitRight" + } }, { "context": "RecentProjects || (RecentProjects > Picker > Editor)", "use_key_equivalents": true, "bindings": { "cmd-k": "recent_projects::ToggleActionsMenu", - "cmd-shift-a": "workspace::AddFolderToProject", - }, + "cmd-shift-a": "workspace::AddFolderToProject" + } }, { "context": "TabSwitcher", @@ -1189,16 +1189,16 @@ "ctrl-shift-tab": "menu::SelectPrevious", "ctrl-up": "menu::SelectPrevious", "ctrl-down": "menu::SelectNext", - "ctrl-backspace": "tab_switcher::CloseSelectedItem", - }, + "ctrl-backspace": "tab_switcher::CloseSelectedItem" + } }, { "context": "StashList || (StashList > Picker > Editor)", "use_key_equivalents": true, "bindings": { "ctrl-shift-backspace": "stash_picker::DropStashItem", - "ctrl-shift-v": "stash_picker::ShowStashItem", - }, + "ctrl-shift-v": "stash_picker::ShowStashItem" + } }, { "context": "Terminal", @@ -1254,8 +1254,8 @@ "ctrl-alt-right": "pane::SplitRight", "cmd-d": "pane::SplitRight", "cmd-alt-r": "terminal::RerunTask", - "cmd->": "agent::AddSelectionToThread", - }, + "cmd->": "agent::AddSelectionToThread" + } }, { "context": "RatePredictionsModal", @@ -1265,8 +1265,8 @@ "cmd-shift-backspace": "zeta::ThumbsDownActivePrediction", "shift-down": "zeta::NextEdit", "shift-up": "zeta::PreviousEdit", - "right": "zeta::PreviewPrediction", - }, + "right": "zeta::PreviewPrediction" + } }, { "context": "RatePredictionsModal > Editor", @@ -1274,15 +1274,15 @@ "bindings": { "escape": "zeta::FocusPredictions", "cmd-shift-enter": "zeta::ThumbsUpActivePrediction", - "cmd-shift-backspace": "zeta::ThumbsDownActivePrediction", - }, + "cmd-shift-backspace": "zeta::ThumbsDownActivePrediction" + } }, { "context": "ZedPredictModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "ConfigureContextServerModal > Editor", @@ -1290,45 +1290,45 @@ "bindings": { "escape": "menu::Cancel", "enter": "editor::Newline", - "cmd-enter": "menu::Confirm", - }, + "cmd-enter": "menu::Confirm" + } }, { "context": "ContextServerToolsModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "OnboardingAiConfigurationModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "Diagnostics", "use_key_equivalents": true, "bindings": { - "ctrl-r": "diagnostics::ToggleDiagnosticsRefresh", - }, + "ctrl-r": "diagnostics::ToggleDiagnosticsRefresh" + } }, { "context": "DebugConsole > Editor", "use_key_equivalents": true, "bindings": { "enter": "menu::Confirm", - "alt-enter": "console::WatchExpression", - }, + "alt-enter": "console::WatchExpression" + } }, { "context": "RunModal", "use_key_equivalents": true, "bindings": { "ctrl-tab": "pane::ActivateNextItem", - "ctrl-shift-tab": "pane::ActivatePreviousItem", - }, + "ctrl-shift-tab": "pane::ActivatePreviousItem" + } }, { "context": "MarkdownPreview", @@ -1338,8 +1338,8 @@ "up": "markdown::ScrollUp", "down": "markdown::ScrollDown", "alt-up": "markdown::ScrollUpByItem", - "alt-down": "markdown::ScrollDownByItem", - }, + "alt-down": "markdown::ScrollDownByItem" + } }, { "context": "KeymapEditor", @@ -1354,8 +1354,8 @@ "cmd-c": "keymap_editor::CopyAction", "cmd-shift-c": "keymap_editor::CopyContext", "cmd-t": "keymap_editor::ShowMatchingKeybinds", - "cmd-e": "zed::OpenKeymapFile", - }, + "cmd-e": "zed::OpenKeymapFile" + } }, { "context": "KeystrokeInput", @@ -1363,24 +1363,24 @@ "bindings": { "enter": "keystroke_input::StartRecording", "escape escape escape": "keystroke_input::StopRecording", - "delete": "keystroke_input::ClearKeystrokes", - }, + "delete": "keystroke_input::ClearKeystrokes" + } }, { "context": "KeybindEditorModal", "use_key_equivalents": true, "bindings": { "cmd-enter": "menu::Confirm", - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "KeybindEditorModal > Editor", "use_key_equivalents": true, "bindings": { "up": "menu::SelectPrevious", - "down": "menu::SelectNext", - }, + "down": "menu::SelectNext" + } }, { "context": "Onboarding", @@ -1392,8 +1392,8 @@ "cmd-0": ["zed::ResetUiFontSize", { "persist": false }], "cmd-enter": "onboarding::Finish", "alt-tab": "onboarding::SignIn", - "alt-shift-a": "onboarding::OpenAccount", - }, + "alt-shift-a": "onboarding::OpenAccount" + } }, { "context": "Welcome", @@ -1407,15 +1407,15 @@ "cmd-2": ["welcome::OpenRecentProject", 1], "cmd-3": ["welcome::OpenRecentProject", 2], "cmd-4": ["welcome::OpenRecentProject", 3], - "cmd-5": ["welcome::OpenRecentProject", 4], - }, + "cmd-5": ["welcome::OpenRecentProject", 4] + } }, { "context": "InvalidBuffer", "use_key_equivalents": true, "bindings": { - "ctrl-shift-enter": "workspace::OpenWithSystem", - }, + "ctrl-shift-enter": "workspace::OpenWithSystem" + } }, { "context": "GitWorktreeSelector || (GitWorktreeSelector > Picker > Editor)", @@ -1423,8 +1423,8 @@ "bindings": { "ctrl-shift-space": "git::WorktreeFromDefaultOnWindow", "ctrl-space": "git::WorktreeFromDefault", - "cmd-shift-backspace": "git::DeleteWorktree", - }, + "cmd-shift-backspace": "git::DeleteWorktree" + } }, { "context": "SettingsWindow", @@ -1449,8 +1449,8 @@ "ctrl-9": ["settings_editor::FocusFile", 8], "ctrl-0": ["settings_editor::FocusFile", 9], "cmd-{": "settings_editor::FocusPreviousFile", - "cmd-}": "settings_editor::FocusNextFile", - }, + "cmd-}": "settings_editor::FocusNextFile" + } }, { "context": "StashDiff > Editor", @@ -1458,8 +1458,8 @@ "bindings": { "ctrl-space": "git::ApplyCurrentStash", "ctrl-shift-space": "git::PopCurrentStash", - "ctrl-shift-backspace": "git::DropCurrentStash", - }, + "ctrl-shift-backspace": "git::DropCurrentStash" + } }, { "context": "SettingsWindow > NavigationMenu", @@ -1474,23 +1474,23 @@ "pageup": "settings_editor::FocusPreviousRootNavEntry", "pagedown": "settings_editor::FocusNextRootNavEntry", "home": "settings_editor::FocusFirstNavEntry", - "end": "settings_editor::FocusLastNavEntry", - }, + "end": "settings_editor::FocusLastNavEntry" + } }, { "context": "EditPredictionContext > Editor", "bindings": { "alt-left": "dev::EditPredictionContextGoBack", - "alt-right": "dev::EditPredictionContextGoForward", - }, + "alt-right": "dev::EditPredictionContextGoForward" + } }, { "context": "GitBranchSelector || (GitBranchSelector > Picker > Editor)", "use_key_equivalents": true, "bindings": { "cmd-shift-backspace": "branch_picker::DeleteBranch", - "cmd-shift-i": "branch_picker::FilterRemotes", - }, + "cmd-shift-i": "branch_picker::FilterRemotes" + } }, { "context": "ImageViewer", @@ -1501,8 +1501,8 @@ "cmd--": "image_viewer::ZoomOut", "cmd-0": "image_viewer::ResetZoom", "cmd-1": "image_viewer::ZoomToActualSize", - "cmd-shift-0": "image_viewer::FitToView", - }, + "cmd-shift-0": "image_viewer::FitToView" + } }, { "context": "RunModal", @@ -1510,16 +1510,16 @@ "cmd-1": "new_process_modal::ActivateTaskTab", "cmd-2": "new_process_modal::ActivateDebugTab", "cmd-3": "new_process_modal::ActivateAttachTab", - "cmd-4": "new_process_modal::ActivateLaunchTab", - }, + "cmd-4": "new_process_modal::ActivateLaunchTab" + } }, { "context": "GitPicker", "bindings": { "cmd-1": "git_picker::ActivateBranchesTab", "cmd-2": "git_picker::ActivateWorktreesTab", - "cmd-3": "git_picker::ActivateStashTab", - }, + "cmd-3": "git_picker::ActivateStashTab" + } }, { "context": "NotebookEditor", @@ -1532,8 +1532,8 @@ "cmd-m": "notebook::AddCodeBlock", "cmd-shift-m": "notebook::AddMarkdownBlock", "cmd-shift-r": "notebook::RestartKernel", - "cmd-c": "notebook::InterruptKernel", - }, + "cmd-c": "notebook::InterruptKernel" + } }, { "context": "NotebookEditor > Editor", @@ -1547,7 +1547,7 @@ "cmd-m": "notebook::AddCodeBlock", "cmd-shift-m": "notebook::AddMarkdownBlock", "cmd-shift-r": "notebook::RestartKernel", - "cmd-c": "notebook::InterruptKernel", - }, - }, + "cmd-c": "notebook::InterruptKernel" + } + } ] diff --git a/assets/keymaps/default-windows.json b/assets/keymaps/default-windows.json index c10054d5813c6deae33b7a790b3639e7f2c802aa..9a3a6869dd1b80bdacec0fe631934ee024a9e718 100644 --- a/assets/keymaps/default-windows.json +++ b/assets/keymaps/default-windows.json @@ -43,23 +43,23 @@ "ctrl-shift-i": "edit_prediction::ToggleMenu", "shift-alt-l": "lsp_tool::ToggleMenu", "ctrl-shift-alt-c": "editor::DisplayCursorNames", - "ctrl-shift-alt-s": "workspace::ToggleWorktreeSecurity", - }, + "ctrl-shift-alt-s": "workspace::ToggleWorktreeSecurity" + } }, { "context": "Picker || menu", "use_key_equivalents": true, "bindings": { "up": "menu::SelectPrevious", - "down": "menu::SelectNext", - }, + "down": "menu::SelectNext" + } }, { "context": "menu", "bindings": { "right": "menu::SelectChild", - "left": "menu::SelectParent", - }, + "left": "menu::SelectParent" + } }, { "context": "Editor", @@ -128,8 +128,8 @@ "shift-f10": "editor::OpenContextMenu", "ctrl-alt-e": "editor::ToggleEditPrediction", "f9": "editor::ToggleBreakpoint", - "shift-f9": "editor::EditLogBreakpoint", - }, + "shift-f9": "editor::EditLogBreakpoint" + } }, { "context": "Editor && mode == full", @@ -148,23 +148,23 @@ "shift-alt-e": "editor::SelectEnclosingSymbol", "ctrl-shift-backspace": "editor::GoToPreviousChange", "ctrl-shift-alt-backspace": "editor::GoToNextChange", - "alt-enter": "editor::OpenSelectionsInMultibuffer", - }, + "alt-enter": "editor::OpenSelectionsInMultibuffer" + } }, { "context": "Editor && mode == full && edit_prediction", "use_key_equivalents": true, "bindings": { "alt-]": "editor::NextEditPrediction", - "alt-[": "editor::PreviousEditPrediction", - }, + "alt-[": "editor::PreviousEditPrediction" + } }, { "context": "Editor && !edit_prediction", "use_key_equivalents": true, "bindings": { - "alt-\\": "editor::ShowEditPrediction", - }, + "alt-\\": "editor::ShowEditPrediction" + } }, { "context": "Editor && mode == auto_height", @@ -172,23 +172,23 @@ "bindings": { "ctrl-enter": "editor::Newline", "shift-enter": "editor::Newline", - "ctrl-shift-enter": "editor::NewlineBelow", - }, + "ctrl-shift-enter": "editor::NewlineBelow" + } }, { "context": "Markdown", "use_key_equivalents": true, "bindings": { - "ctrl-c": "markdown::Copy", - }, + "ctrl-c": "markdown::Copy" + } }, { "context": "Editor && jupyter && !ContextEditor", "use_key_equivalents": true, "bindings": { "ctrl-shift-enter": "repl::Run", - "ctrl-alt-enter": "repl::RunInPlace", - }, + "ctrl-alt-enter": "repl::RunInPlace" + } }, { "context": "Editor && !agent_diff", @@ -196,8 +196,8 @@ "bindings": { "ctrl-k ctrl-r": "git::Restore", "alt-y": "git::StageAndNext", - "shift-alt-y": "git::UnstageAndNext", - }, + "shift-alt-y": "git::UnstageAndNext" + } }, { "context": "Editor && editor_agent_diff", @@ -208,8 +208,8 @@ "ctrl-alt-z": "agent::Reject", "shift-alt-y": "agent::KeepAll", "shift-alt-z": "agent::RejectAll", - "ctrl-shift-r": "agent::OpenAgentDiff", - }, + "ctrl-shift-r": "agent::OpenAgentDiff" + } }, { "context": "AgentDiff", @@ -219,8 +219,8 @@ "ctrl-alt-y": "agent::Keep", "ctrl-alt-z": "agent::Reject", "shift-alt-y": "agent::KeepAll", - "shift-alt-z": "agent::RejectAll", - }, + "shift-alt-z": "agent::RejectAll" + } }, { "context": "ContextEditor > Editor", @@ -237,8 +237,8 @@ "ctrl-g": "search::SelectNextMatch", "ctrl-shift-g": "search::SelectPreviousMatch", "ctrl-k l": "agent::OpenRulesLibrary", - "ctrl-shift-v": "agent::PasteRaw", - }, + "ctrl-shift-v": "agent::PasteRaw" + } }, { "context": "AgentPanel", @@ -266,31 +266,31 @@ "ctrl-shift-enter": "agent::ContinueThread", "shift-alt-a": "agent::AllowOnce", "ctrl-alt-a": "agent::OpenPermissionDropdown", - "shift-alt-z": "agent::RejectOnce", - }, + "shift-alt-z": "agent::RejectOnce" + } }, { "context": "AgentPanel > Markdown", "use_key_equivalents": true, "bindings": { - "ctrl-c": "markdown::CopyAsMarkdown", - }, + "ctrl-c": "markdown::CopyAsMarkdown" + } }, { "context": "AgentPanel && text_thread", "use_key_equivalents": true, "bindings": { "ctrl-n": "agent::NewTextThread", - "ctrl-alt-t": "agent::NewThread", - }, + "ctrl-alt-t": "agent::NewThread" + } }, { "context": "AgentPanel && acp_thread", "use_key_equivalents": true, "bindings": { "ctrl-n": "agent::NewExternalAgentThread", - "ctrl-alt-t": "agent::NewThread", - }, + "ctrl-alt-t": "agent::NewThread" + } }, { "context": "AgentFeedbackMessageEditor > Editor", @@ -298,20 +298,20 @@ "bindings": { "escape": "menu::Cancel", "enter": "menu::Confirm", - "alt-enter": "editor::Newline", - }, + "alt-enter": "editor::Newline" + } }, { "context": "AcpThread > ModeSelector", "bindings": { - "ctrl-enter": "menu::Confirm", - }, + "ctrl-enter": "menu::Confirm" + } }, { "context": "AcpThread", "bindings": { - "ctrl--": "pane::GoBack", - }, + "ctrl--": "pane::GoBack" + } }, { "context": "AcpThread > Editor", @@ -338,30 +338,30 @@ "ctrl-alt-k": "agent::ToggleThinkingMode", "ctrl-alt-'": "agent::ToggleThinkingEffortMenu", "ctrl-'": "agent::CycleThinkingEffort", - "ctrl-alt-.": "agent::ToggleFastMode", - }, + "ctrl-alt-.": "agent::ToggleFastMode" + } }, { "context": "AcpThread > Editor && !use_modifier_to_send", "use_key_equivalents": true, "bindings": { - "enter": "agent::Chat", - }, + "enter": "agent::Chat" + } }, { "context": "AcpThread > Editor && use_modifier_to_send", "use_key_equivalents": true, "bindings": { "ctrl-enter": "agent::Chat", - "enter": "editor::Newline", - }, + "enter": "editor::Newline" + } }, { "context": "ThreadHistory", "use_key_equivalents": true, "bindings": { - "backspace": "agent::RemoveSelectedThread", - }, + "backspace": "agent::RemoveSelectedThread" + } }, { "context": "RulesLibrary", @@ -369,8 +369,8 @@ "bindings": { "ctrl-n": "rules_library::NewRule", "ctrl-shift-s": "rules_library::ToggleDefaultRule", - "ctrl-w": "workspace::CloseWindow", - }, + "ctrl-w": "workspace::CloseWindow" + } }, { "context": "BufferSearchBar", @@ -384,24 +384,24 @@ "alt-enter": "search::SelectAllMatches", "ctrl-f": "search::FocusSearch", "ctrl-h": "search::ToggleReplace", - "ctrl-l": "search::ToggleSelection", - }, + "ctrl-l": "search::ToggleSelection" + } }, { "context": "BufferSearchBar && in_replace > Editor", "use_key_equivalents": true, "bindings": { "enter": "search::ReplaceNext", - "ctrl-enter": "search::ReplaceAll", - }, + "ctrl-enter": "search::ReplaceAll" + } }, { "context": "BufferSearchBar && !in_replace > Editor", "use_key_equivalents": true, "bindings": { "up": "search::PreviousHistoryQuery", - "down": "search::NextHistoryQuery", - }, + "down": "search::NextHistoryQuery" + } }, { "context": "ProjectSearchBar", @@ -410,24 +410,24 @@ "escape": "project_search::ToggleFocus", "ctrl-shift-f": "search::FocusSearch", "ctrl-shift-h": "search::ToggleReplace", - "alt-r": "search::ToggleRegex", // vscode - }, + "alt-r": "search::ToggleRegex" // vscode + } }, { "context": "ProjectSearchBar > Editor", "use_key_equivalents": true, "bindings": { "up": "search::PreviousHistoryQuery", - "down": "search::NextHistoryQuery", - }, + "down": "search::NextHistoryQuery" + } }, { "context": "ProjectSearchBar && in_replace > Editor", "use_key_equivalents": true, "bindings": { "enter": "search::ReplaceNext", - "ctrl-alt-enter": "search::ReplaceAll", - }, + "ctrl-alt-enter": "search::ReplaceAll" + } }, { "context": "ProjectSearchView", @@ -435,8 +435,8 @@ "bindings": { "escape": "project_search::ToggleFocus", "ctrl-shift-h": "search::ToggleReplace", - "alt-r": "search::ToggleRegex", // vscode - }, + "alt-r": "search::ToggleRegex" // vscode + } }, { "context": "Pane", @@ -483,8 +483,8 @@ "ctrl-shift-enter": "project_search::ToggleAllSearchResults", "alt-r": "search::ToggleRegex", // "ctrl-shift-alt-x": "search::ToggleRegex", - "ctrl-k shift-enter": "pane::TogglePinTab", - }, + "ctrl-k shift-enter": "pane::TogglePinTab" + } }, // Bindings from VS Code { @@ -544,32 +544,32 @@ "ctrl-k p": "editor::CopyPath", "ctrl-\\": "pane::SplitRight", "alt-.": "editor::GoToHunk", - "alt-,": "editor::GoToPreviousHunk", - }, + "alt-,": "editor::GoToPreviousHunk" + } }, { "context": "Editor && extension == md", "use_key_equivalents": true, "bindings": { "ctrl-k v": "markdown::OpenPreviewToTheSide", - "ctrl-shift-v": "markdown::OpenPreview", - }, + "ctrl-shift-v": "markdown::OpenPreview" + } }, { "context": "Editor && extension == svg", "use_key_equivalents": true, "bindings": { "ctrl-k v": "svg::OpenPreviewToTheSide", - "ctrl-shift-v": "svg::OpenPreview", - }, + "ctrl-shift-v": "svg::OpenPreview" + } }, { "context": "Editor && mode == full", "use_key_equivalents": true, "bindings": { "ctrl-shift-o": "outline::Toggle", - "ctrl-g": "go_to_line::Toggle", - }, + "ctrl-g": "go_to_line::Toggle" + } }, { "context": "Workspace", @@ -603,7 +603,7 @@ "ctrl-alt-b": "workspace::ToggleRightDock", "ctrl-b": "workspace::ToggleLeftDock", "ctrl-j": "workspace::ToggleBottomDock", - "ctrl-alt-j": "multi_workspace::ToggleWorkspaceSidebar", + "ctrl-alt-j": "agent::ToggleThreadsSidebar", "ctrl-alt-;": "multi_workspace::FocusWorkspaceSidebar", "ctrl-shift-y": "workspace::ToggleAllDocks", "alt-r": "workspace::ResetActiveDockSize", @@ -630,7 +630,7 @@ "ctrl-shift-b": "outline_panel::ToggleFocus", "ctrl-shift-g": "git_panel::ToggleFocus", "ctrl-shift-d": "debug_panel::ToggleFocus", - "ctrl-shift-/": "agent::ToggleFocus", + "ctrl-shift-/": "agent::ToggleAgentDrawer", "ctrl-k s": "workspace::SaveAll", "ctrl-k n": "encoding_selector::Toggle", "ctrl-k m": "language_selector::Toggle", @@ -657,22 +657,22 @@ // "foo-bar": ["task::Spawn", { "task_tag": "MyTag" }], "f5": "debugger::Rerun", "ctrl-f4": "workspace::CloseActiveDock", - "ctrl-w": "workspace::CloseActiveDock", - }, + "ctrl-w": "workspace::CloseActiveDock" + } }, { "context": "Workspace && debugger_running", "use_key_equivalents": true, "bindings": { - "f5": "zed::NoAction", - }, + "f5": "zed::NoAction" + } }, { "context": "Workspace && debugger_stopped", "use_key_equivalents": true, "bindings": { - "f5": "debugger::Continue", - }, + "f5": "debugger::Continue" + } }, { "context": "WorkspaceSidebar", @@ -681,8 +681,8 @@ "ctrl-n": "multi_workspace::NewWorkspaceInWindow", "left": "agents_sidebar::CollapseSelectedEntry", "right": "agents_sidebar::ExpandSelectedEntry", - "enter": "menu::Confirm", - }, + "enter": "menu::Confirm" + } }, { "context": "ApplicationMenu", @@ -690,8 +690,8 @@ "bindings": { "f10": "menu::Cancel", "left": "app_menu::ActivateMenuLeft", - "right": "app_menu::ActivateMenuRight", - }, + "right": "app_menu::ActivateMenuRight" + } }, // Bindings from Sublime Text { @@ -708,8 +708,8 @@ "ctrl-alt-left": "editor::MoveToPreviousSubwordStart", "ctrl-alt-right": "editor::MoveToNextSubwordEnd", "ctrl-shift-alt-left": "editor::SelectToPreviousSubwordStart", - "ctrl-shift-alt-right": "editor::SelectToNextSubwordEnd", - }, + "ctrl-shift-alt-right": "editor::SelectToNextSubwordEnd" + } }, // Bindings from Atom { @@ -719,16 +719,16 @@ "ctrl-k up": "pane::SplitUp", "ctrl-k down": "pane::SplitDown", "ctrl-k left": "pane::SplitLeft", - "ctrl-k right": "pane::SplitRight", - }, + "ctrl-k right": "pane::SplitRight" + } }, // Bindings that should be unified with bindings for more general actions { "context": "Editor && renaming", "use_key_equivalents": true, "bindings": { - "enter": "editor::ConfirmRename", - }, + "enter": "editor::ConfirmRename" + } }, { "context": "Editor && showing_completions", @@ -736,22 +736,22 @@ "bindings": { "enter": "editor::ConfirmCompletion", "shift-enter": "editor::ConfirmCompletionReplace", - "tab": "editor::ComposeCompletion", - }, + "tab": "editor::ComposeCompletion" + } }, { "context": "Editor && in_snippet && has_next_tabstop && !showing_completions", "use_key_equivalents": true, "bindings": { - "tab": "editor::NextSnippetTabstop", - }, + "tab": "editor::NextSnippetTabstop" + } }, { "context": "Editor && in_snippet && has_previous_tabstop && !showing_completions", "use_key_equivalents": true, "bindings": { - "shift-tab": "editor::PreviousSnippetTabstop", - }, + "shift-tab": "editor::PreviousSnippetTabstop" + } }, // Bindings for accepting edit predictions // @@ -765,8 +765,8 @@ "alt-l": "editor::AcceptEditPrediction", "tab": "editor::AcceptEditPrediction", "alt-k": "editor::AcceptNextWordEditPrediction", - "alt-j": "editor::AcceptNextLineEditPrediction", - }, + "alt-j": "editor::AcceptNextLineEditPrediction" + } }, { "context": "Editor && edit_prediction_conflict", @@ -775,15 +775,15 @@ "alt-tab": "editor::AcceptEditPrediction", "alt-l": "editor::AcceptEditPrediction", "alt-k": "editor::AcceptNextWordEditPrediction", - "alt-j": "editor::AcceptNextLineEditPrediction", - }, + "alt-j": "editor::AcceptNextLineEditPrediction" + } }, { "context": "Editor && showing_code_actions", "use_key_equivalents": true, "bindings": { - "enter": "editor::ConfirmCodeAction", - }, + "enter": "editor::ConfirmCodeAction" + } }, { "context": "Editor && (showing_code_actions || showing_completions)", @@ -794,16 +794,16 @@ "ctrl-n": "editor::ContextMenuNext", "down": "editor::ContextMenuNext", "pageup": "editor::ContextMenuFirst", - "pagedown": "editor::ContextMenuLast", - }, + "pagedown": "editor::ContextMenuLast" + } }, { "context": "Editor && showing_signature_help && !showing_completions", "use_key_equivalents": true, "bindings": { "up": "editor::SignatureHelpPrevious", - "down": "editor::SignatureHelpNext", - }, + "down": "editor::SignatureHelpNext" + } }, // Custom bindings { @@ -811,15 +811,15 @@ "bindings": { "ctrl-shift-alt-f": "workspace::FollowNextCollaborator", // Only available in debug builds: opens an element inspector for development. - "shift-alt-i": "dev::ToggleInspector", - }, + "shift-alt-i": "dev::ToggleInspector" + } }, { "context": "!Terminal", "use_key_equivalents": true, "bindings": { - "ctrl-shift-c": "collab_panel::ToggleFocus", - }, + "ctrl-shift-c": "collab_panel::ToggleFocus" + } }, { "context": "!ContextEditor && !AcpThread > Editor && mode == full", @@ -832,8 +832,8 @@ "ctrl-f8": "editor::GoToHunk", "ctrl-shift-f8": "editor::GoToPreviousHunk", "ctrl-enter": "assistant::InlineAssist", - "ctrl-shift-;": "editor::ToggleInlayHints", - }, + "ctrl-shift-;": "editor::ToggleInlayHints" + } }, { "context": "InlineAssistant", @@ -842,8 +842,8 @@ "ctrl-[": "agent::CyclePreviousInlineAssist", "ctrl-]": "agent::CycleNextInlineAssist", "ctrl-shift-enter": "inline_assistant::ThumbsUpResult", - "ctrl-shift-delete": "inline_assistant::ThumbsDownResult", - }, + "ctrl-shift-delete": "inline_assistant::ThumbsDownResult" + } }, { "context": "Prompt", @@ -852,15 +852,15 @@ "left": "menu::SelectPrevious", "right": "menu::SelectNext", "h": "menu::SelectPrevious", - "l": "menu::SelectNext", - }, + "l": "menu::SelectNext" + } }, { "context": "ProjectSearchBar && !in_replace", "use_key_equivalents": true, "bindings": { - "ctrl-enter": "project_search::SearchInNew", - }, + "ctrl-enter": "project_search::SearchInNew" + } }, { "context": "OutlinePanel && not_editing", @@ -875,8 +875,8 @@ "shift-down": "menu::SelectNext", "shift-up": "menu::SelectPrevious", "alt-enter": "editor::OpenExcerpts", - "ctrl-alt-enter": "editor::OpenExcerptsSplit", - }, + "ctrl-alt-enter": "editor::OpenExcerptsSplit" + } }, { "context": "ProjectPanel", @@ -907,15 +907,15 @@ "ctrl-k ctrl-shift-f": "project_panel::NewSearchInDirectory", "shift-down": "menu::SelectNext", "shift-up": "menu::SelectPrevious", - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "ProjectPanel && not_editing", "use_key_equivalents": true, "bindings": { - "space": "project_panel::Open", - }, + "space": "project_panel::Open" + } }, { "context": "GitPanel && ChangesList", @@ -938,15 +938,15 @@ "backspace": ["git::RestoreFile", { "skip_prompt": false }], "shift-delete": ["git::RestoreFile", { "skip_prompt": false }], "ctrl-backspace": ["git::RestoreFile", { "skip_prompt": false }], - "ctrl-delete": ["git::RestoreFile", { "skip_prompt": false }], - }, + "ctrl-delete": ["git::RestoreFile", { "skip_prompt": false }] + } }, { "context": "GitPanel && CommitEditor", "use_key_equivalents": true, "bindings": { - "escape": "git::Cancel", - }, + "escape": "git::Cancel" + } }, { "context": "GitCommit > Editor", @@ -956,8 +956,8 @@ "enter": "editor::Newline", "ctrl-enter": "git::Commit", "ctrl-shift-enter": "git::Amend", - "alt-l": "git::GenerateCommitMessage", - }, + "alt-l": "git::GenerateCommitMessage" + } }, { "context": "GitPanel", @@ -974,8 +974,8 @@ "ctrl-space": "git::StageAll", "ctrl-shift-space": "git::UnstageAll", "ctrl-enter": "git::Commit", - "ctrl-shift-enter": "git::Amend", - }, + "ctrl-shift-enter": "git::Amend" + } }, { "context": "GitDiff > Editor", @@ -985,15 +985,15 @@ "ctrl-shift-enter": "git::Amend", "ctrl-space": "git::StageAll", "ctrl-shift-space": "git::UnstageAll", - "ctrl-k ctrl-r": "git::RestoreAndNext", - }, + "ctrl-k ctrl-r": "git::RestoreAndNext" + } }, { "context": "AskPass > Editor", "use_key_equivalents": true, "bindings": { - "enter": "menu::Confirm", - }, + "enter": "menu::Confirm" + } }, { "context": "CommitEditor > Editor", @@ -1006,8 +1006,8 @@ "ctrl-enter": "git::Commit", "ctrl-shift-enter": "git::Amend", "alt-up": "git_panel::FocusChanges", - "alt-l": "git::GenerateCommitMessage", - }, + "alt-l": "git::GenerateCommitMessage" + } }, { "context": "DebugPanel", @@ -1015,8 +1015,8 @@ "bindings": { "ctrl-t": "debugger::ToggleThreadPicker", "ctrl-i": "debugger::ToggleSessionPicker", - "shift-alt-escape": "debugger::ToggleExpandItem", - }, + "shift-alt-escape": "debugger::ToggleExpandItem" + } }, { "context": "VariableList", @@ -1029,8 +1029,8 @@ "ctrl-alt-c": "variable_list::CopyVariableName", "delete": "variable_list::RemoveWatch", "backspace": "variable_list::RemoveWatch", - "alt-enter": "variable_list::AddWatch", - }, + "alt-enter": "variable_list::AddWatch" + } }, { "context": "BreakpointList", @@ -1039,16 +1039,16 @@ "space": "debugger::ToggleEnableBreakpoint", "backspace": "debugger::UnsetBreakpoint", "left": "debugger::PreviousBreakpointProperty", - "right": "debugger::NextBreakpointProperty", - }, + "right": "debugger::NextBreakpointProperty" + } }, { "context": "CollabPanel && not_editing", "use_key_equivalents": true, "bindings": { "ctrl-backspace": "collab_panel::Remove", - "space": "menu::Confirm", - }, + "space": "menu::Confirm" + } }, { "context": "CollabPanel", @@ -1056,22 +1056,22 @@ "bindings": { "alt-up": "collab_panel::MoveChannelUp", "alt-down": "collab_panel::MoveChannelDown", - "alt-enter": "collab_panel::OpenSelectedChannelNotes", - }, + "alt-enter": "collab_panel::OpenSelectedChannelNotes" + } }, { "context": "(CollabPanel && editing) > Editor", "use_key_equivalents": true, "bindings": { - "space": "collab_panel::InsertSpace", - }, + "space": "collab_panel::InsertSpace" + } }, { "context": "ChannelModal", "use_key_equivalents": true, "bindings": { - "tab": "channel_modal::ToggleMode", - }, + "tab": "channel_modal::ToggleMode" + } }, { "context": "Picker > Editor", @@ -1081,22 +1081,22 @@ "up": "menu::SelectPrevious", "down": "menu::SelectNext", "tab": "picker::ConfirmCompletion", - "alt-enter": ["picker::ConfirmInput", { "secondary": false }], - }, + "alt-enter": ["picker::ConfirmInput", { "secondary": false }] + } }, { "context": "ChannelModal > Picker > Editor", "use_key_equivalents": true, "bindings": { - "tab": "channel_modal::ToggleMode", - }, + "tab": "channel_modal::ToggleMode" + } }, { "context": "ToolchainSelector", "use_key_equivalents": true, "bindings": { - "ctrl-shift-a": "toolchain::AddToolchain", - }, + "ctrl-shift-a": "toolchain::AddToolchain" + } }, { "context": "FileFinder || (FileFinder > Picker > Editor)", @@ -1104,8 +1104,8 @@ "bindings": { "ctrl-p": "file_finder::Toggle", "ctrl-shift-a": "file_finder::ToggleSplitMenu", - "ctrl-shift-i": "file_finder::ToggleFilterMenu", - }, + "ctrl-shift-i": "file_finder::ToggleFilterMenu" + } }, { "context": "FileFinder || (FileFinder > Picker > Editor) || (FileFinder > Picker > menu)", @@ -1115,16 +1115,16 @@ "ctrl-j": "pane::SplitDown", "ctrl-k": "pane::SplitUp", "ctrl-h": "pane::SplitLeft", - "ctrl-l": "pane::SplitRight", - }, + "ctrl-l": "pane::SplitRight" + } }, { "context": "RecentProjects || (RecentProjects > Picker > Editor)", "use_key_equivalents": true, "bindings": { "ctrl-k": "recent_projects::ToggleActionsMenu", - "ctrl-shift-a": "workspace::AddFolderToProject", - }, + "ctrl-shift-a": "workspace::AddFolderToProject" + } }, { "context": "TabSwitcher", @@ -1133,16 +1133,16 @@ "ctrl-shift-tab": "menu::SelectPrevious", "ctrl-up": "menu::SelectPrevious", "ctrl-down": "menu::SelectNext", - "ctrl-backspace": "tab_switcher::CloseSelectedItem", - }, + "ctrl-backspace": "tab_switcher::CloseSelectedItem" + } }, { "context": "StashList || (StashList > Picker > Editor)", "use_key_equivalents": true, "bindings": { "ctrl-shift-backspace": "stash_picker::DropStashItem", - "ctrl-shift-v": "stash_picker::ShowStashItem", - }, + "ctrl-shift-v": "stash_picker::ShowStashItem" + } }, { "context": "Terminal", @@ -1190,21 +1190,21 @@ "ctrl-alt-r": "terminal::RerunTask", "alt-t": "terminal::RerunTask", "ctrl-shift-5": "pane::SplitRight", - "ctrl-shift-.": "agent::AddSelectionToThread", - }, + "ctrl-shift-.": "agent::AddSelectionToThread" + } }, { "context": "Terminal && selection", "bindings": { - "ctrl-c": "terminal::Copy", - }, + "ctrl-c": "terminal::Copy" + } }, { "context": "ZedPredictModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "ConfigureContextServerModal > Editor", @@ -1212,45 +1212,45 @@ "bindings": { "escape": "menu::Cancel", "enter": "editor::Newline", - "ctrl-enter": "menu::Confirm", - }, + "ctrl-enter": "menu::Confirm" + } }, { "context": "ContextServerToolsModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "OnboardingAiConfigurationModal", "use_key_equivalents": true, "bindings": { - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "Diagnostics", "use_key_equivalents": true, "bindings": { - "ctrl-r": "diagnostics::ToggleDiagnosticsRefresh", - }, + "ctrl-r": "diagnostics::ToggleDiagnosticsRefresh" + } }, { "context": "DebugConsole > Editor", "use_key_equivalents": true, "bindings": { "enter": "menu::Confirm", - "alt-enter": "console::WatchExpression", - }, + "alt-enter": "console::WatchExpression" + } }, { "context": "RunModal", "use_key_equivalents": true, "bindings": { "ctrl-tab": "pane::ActivateNextItem", - "ctrl-shift-tab": "pane::ActivatePreviousItem", - }, + "ctrl-shift-tab": "pane::ActivatePreviousItem" + } }, { "context": "MarkdownPreview", @@ -1261,8 +1261,8 @@ "up": "markdown::ScrollUp", "down": "markdown::ScrollDown", "alt-up": "markdown::ScrollUpByItem", - "alt-down": "markdown::ScrollDownByItem", - }, + "alt-down": "markdown::ScrollDownByItem" + } }, { "context": "KeymapEditor", @@ -1277,8 +1277,8 @@ "ctrl-c": "keymap_editor::CopyAction", "ctrl-shift-c": "keymap_editor::CopyContext", "ctrl-t": "keymap_editor::ShowMatchingKeybinds", - "ctrl-e": "zed::OpenKeymapFile", - }, + "ctrl-e": "zed::OpenKeymapFile" + } }, { "context": "KeystrokeInput", @@ -1286,24 +1286,24 @@ "bindings": { "enter": "keystroke_input::StartRecording", "escape escape escape": "keystroke_input::StopRecording", - "delete": "keystroke_input::ClearKeystrokes", - }, + "delete": "keystroke_input::ClearKeystrokes" + } }, { "context": "KeybindEditorModal", "use_key_equivalents": true, "bindings": { "ctrl-enter": "menu::Confirm", - "escape": "menu::Cancel", - }, + "escape": "menu::Cancel" + } }, { "context": "KeybindEditorModal > Editor", "use_key_equivalents": true, "bindings": { "up": "menu::SelectPrevious", - "down": "menu::SelectNext", - }, + "down": "menu::SelectNext" + } }, { "context": "Onboarding", @@ -1315,8 +1315,8 @@ "ctrl-0": ["zed::ResetUiFontSize", { "persist": false }], "ctrl-enter": "onboarding::Finish", "alt-shift-l": "onboarding::SignIn", - "shift-alt-a": "onboarding::OpenAccount", - }, + "shift-alt-a": "onboarding::OpenAccount" + } }, { "context": "Welcome", @@ -1330,8 +1330,8 @@ "ctrl-2": ["welcome::OpenRecentProject", 1], "ctrl-3": ["welcome::OpenRecentProject", 2], "ctrl-4": ["welcome::OpenRecentProject", 3], - "ctrl-5": ["welcome::OpenRecentProject", 4], - }, + "ctrl-5": ["welcome::OpenRecentProject", 4] + } }, { "context": "GitWorktreeSelector || (GitWorktreeSelector > Picker > Editor)", @@ -1339,8 +1339,8 @@ "bindings": { "ctrl-shift-space": "git::WorktreeFromDefaultOnWindow", "ctrl-space": "git::WorktreeFromDefault", - "ctrl-shift-backspace": "git::DeleteWorktree", - }, + "ctrl-shift-backspace": "git::DeleteWorktree" + } }, { "context": "SettingsWindow", @@ -1365,8 +1365,8 @@ "ctrl-9": ["settings_editor::FocusFile", 8], "ctrl-0": ["settings_editor::FocusFile", 9], "ctrl-pageup": "settings_editor::FocusPreviousFile", - "ctrl-pagedown": "settings_editor::FocusNextFile", - }, + "ctrl-pagedown": "settings_editor::FocusNextFile" + } }, { "context": "StashDiff > Editor", @@ -1374,8 +1374,8 @@ "bindings": { "ctrl-space": "git::ApplyCurrentStash", "ctrl-shift-space": "git::PopCurrentStash", - "ctrl-shift-backspace": "git::DropCurrentStash", - }, + "ctrl-shift-backspace": "git::DropCurrentStash" + } }, { "context": "SettingsWindow > NavigationMenu", @@ -1390,23 +1390,23 @@ "pageup": "settings_editor::FocusPreviousRootNavEntry", "pagedown": "settings_editor::FocusNextRootNavEntry", "home": "settings_editor::FocusFirstNavEntry", - "end": "settings_editor::FocusLastNavEntry", - }, + "end": "settings_editor::FocusLastNavEntry" + } }, { "context": "EditPredictionContext > Editor", "bindings": { "alt-left": "dev::EditPredictionContextGoBack", - "alt-right": "dev::EditPredictionContextGoForward", - }, + "alt-right": "dev::EditPredictionContextGoForward" + } }, { "context": "GitBranchSelector || (GitBranchSelector > Picker > Editor)", "use_key_equivalents": true, "bindings": { "ctrl-shift-backspace": "branch_picker::DeleteBranch", - "ctrl-shift-i": "branch_picker::FilterRemotes", - }, + "ctrl-shift-i": "branch_picker::FilterRemotes" + } }, { "context": "ImageViewer", @@ -1416,8 +1416,8 @@ "ctrl--": "image_viewer::ZoomOut", "ctrl-0": "image_viewer::ResetZoom", "ctrl-1": "image_viewer::ZoomToActualSize", - "ctrl-shift-0": "image_viewer::FitToView", - }, + "ctrl-shift-0": "image_viewer::FitToView" + } }, { "context": "RunModal", @@ -1425,16 +1425,16 @@ "alt-1": "new_process_modal::ActivateTaskTab", "alt-2": "new_process_modal::ActivateDebugTab", "alt-3": "new_process_modal::ActivateAttachTab", - "alt-4": "new_process_modal::ActivateLaunchTab", - }, + "alt-4": "new_process_modal::ActivateLaunchTab" + } }, { "context": "GitPicker", "bindings": { "alt-1": "git_picker::ActivateBranchesTab", "alt-2": "git_picker::ActivateWorktreesTab", - "alt-3": "git_picker::ActivateStashTab", - }, + "alt-3": "git_picker::ActivateStashTab" + } }, { "context": "NotebookEditor", @@ -1447,8 +1447,8 @@ "ctrl-m": "notebook::AddCodeBlock", "ctrl-shift-m": "notebook::AddMarkdownBlock", "ctrl-shift-r": "notebook::RestartKernel", - "ctrl-c": "notebook::InterruptKernel", - }, + "ctrl-c": "notebook::InterruptKernel" + } }, { "context": "NotebookEditor > Editor", @@ -1462,7 +1462,7 @@ "ctrl-m": "notebook::AddCodeBlock", "ctrl-shift-m": "notebook::AddMarkdownBlock", "ctrl-shift-r": "notebook::RestartKernel", - "ctrl-c": "notebook::InterruptKernel", - }, - }, + "ctrl-c": "notebook::InterruptKernel" + } + } ] diff --git a/crates/agent_ui/src/agent_panel.rs b/crates/agent_ui/src/agent_panel.rs index 23dc1dfcbc086f4b145bb5372929d9aa32f30fc5..632f06111b49d45abd44c6299721fd2fa74862e3 100644 --- a/crates/agent_ui/src/agent_panel.rs +++ b/crates/agent_ui/src/agent_panel.rs @@ -66,9 +66,8 @@ use fs::Fs; use git::repository::validate_worktree_directory; use gpui::{ Action, Animation, AnimationExt, AnyElement, AnyView, App, AsyncWindowContext, ClipboardItem, - Corner, DismissEvent, DragMoveEvent, Entity, EventEmitter, ExternalPaths, FocusHandle, - Focusable, KeyContext, MouseButton, Pixels, Subscription, Task, UpdateGlobal, WeakEntity, - deferred, prelude::*, pulsating_between, + Corner, DismissEvent, Entity, EventEmitter, ExternalPaths, FocusHandle, Focusable, KeyContext, + Pixels, Subscription, Task, UpdateGlobal, WeakEntity, prelude::*, pulsating_between, }; use language::LanguageRegistry; use language_model::{ConfigurationError, LanguageModelRegistry}; @@ -80,77 +79,26 @@ use search::{BufferSearchBar, buffer_search}; use settings::{Settings, update_settings_file}; use theme::ThemeSettings; use ui::{ - Button, ButtonLike, Callout, ContextMenu, ContextMenuEntry, DocumentationSide, Indicator, - KeyBinding, PopoverMenu, PopoverMenuHandle, SpinnerLabel, Tab, TintColor, Tooltip, prelude::*, + Button, ButtonLike, Callout, ContextMenu, ContextMenuEntry, DocumentationSide, KeyBinding, + PopoverMenu, PopoverMenuHandle, SpinnerLabel, Tab, TintColor, Tooltip, prelude::*, utils::WithRemSize, }; use util::{ResultExt as _, debug_panic}; use workspace::{ - CollaboratorId, DraggedSelection, DraggedSidebar, DraggedTab, FocusWorkspaceSidebar, - MultiWorkspace, OpenResult, SIDEBAR_RESIZE_HANDLE_SIZE, ToggleWorkspaceSidebar, ToggleZoom, - ToolbarItemView, Workspace, WorkspaceId, + CollaboratorId, DraggedSelection, DraggedTab, OpenResult, ToggleZoom, ToolbarItemView, + Workspace, WorkspaceId, dock::{DockPosition, Panel, PanelEvent}, - multi_workspace_enabled, }; use zed_actions::{ DecreaseBufferFontSize, IncreaseBufferFontSize, ResetBufferFontSize, agent::{OpenAcpOnboardingModal, OpenSettings, ResetAgentZoom, ResetOnboarding}, - assistant::{OpenRulesLibrary, Toggle, ToggleFocus}, + assistant::{OpenRulesLibrary, Toggle, ToggleAgentDrawer, ToggleFocus}, }; const AGENT_PANEL_KEY: &str = "agent_panel"; const RECENTLY_UPDATED_MENU_LIMIT: usize = 6; const DEFAULT_THREAD_TITLE: &str = "New Thread"; -#[derive(Default)] -struct SidebarsByWindow( - collections::HashMap>, -); - -impl gpui::Global for SidebarsByWindow {} - -pub(crate) fn sidebar_is_open(window: &Window, cx: &App) -> bool { - if !multi_workspace_enabled(cx) { - return false; - } - let window_id = window.window_handle().window_id(); - cx.try_global::() - .and_then(|sidebars| sidebars.0.get(&window_id)?.upgrade()) - .is_some_and(|sidebar| sidebar.read(cx).is_open()) -} - -fn find_or_create_sidebar_for_window( - window: &mut Window, - cx: &mut App, -) -> Option> { - let window_id = window.window_handle().window_id(); - let multi_workspace = window.root::().flatten()?; - - if !cx.has_global::() { - cx.set_global(SidebarsByWindow::default()); - } - - cx.global_mut::() - .0 - .retain(|_, weak| weak.upgrade().is_some()); - - let existing = cx - .global::() - .0 - .get(&window_id) - .and_then(|weak| weak.upgrade()); - - if let Some(sidebar) = existing { - return Some(sidebar); - } - - let sidebar = cx.new(|cx| crate::sidebar::Sidebar::new(multi_workspace, window, cx)); - cx.global_mut::() - .0 - .insert(window_id, sidebar.downgrade()); - Some(sidebar) -} - fn read_serialized_panel(workspace_id: workspace::WorkspaceId) -> Option { let scope = KEY_VALUE_STORE.scoped(AGENT_PANEL_KEY); let key = i64::from(workspace_id).to_string(); @@ -472,35 +420,26 @@ pub fn init(cx: &mut App) { }); } }) - .register_action(|workspace, _: &ToggleWorkspaceSidebar, window, cx| { - if !multi_workspace_enabled(cx) { + .register_action(|workspace, _: &ToggleAgentDrawer, _window, cx| { + let Some(panel) = workspace.panel::(cx) else { return; - } - if let Some(panel) = workspace.panel::(cx) { - if let Some(sidebar) = panel.read(cx).sidebar.clone() { - let was_open = sidebar.read(cx).is_open(); - sidebar.update(cx, |sidebar, cx| { - sidebar.toggle(window, cx); - }); - // When closing the sidebar, restore focus to the active pane - // to avoid "zombie focus" on the now-hidden sidebar elements - if was_open { - let active_pane = workspace.active_pane().clone(); - let pane_focus = active_pane.read(cx).focus_handle(cx); - window.focus(&pane_focus, cx); + }; + let panel_view: AnyView = panel.into(); + let dock_position = agent_panel_dock_position(cx); + match dock_position { + DockPosition::Right => { + if workspace.right_drawer_view().is_none() { + workspace.set_right_drawer(panel_view, cx); + } else { + workspace.toggle_right_drawer(cx); } } - } - }) - .register_action(|workspace, _: &FocusWorkspaceSidebar, window, cx| { - if !multi_workspace_enabled(cx) { - return; - } - if let Some(panel) = workspace.panel::(cx) { - if let Some(sidebar) = panel.read(cx).sidebar.clone() { - sidebar.update(cx, |sidebar, cx| { - sidebar.focus_or_unfocus(workspace, window, cx); - }); + DockPosition::Left | DockPosition::Bottom => { + if workspace.left_drawer_view().is_none() { + workspace.set_left_drawer(panel_view, cx); + } else { + workspace.toggle_left_drawer(cx); + } } } }); @@ -898,7 +837,6 @@ pub struct AgentPanel { last_configuration_error_telemetry: Option, on_boarding_upsell_dismissed: AtomicBool, _active_view_observation: Option, - pub(crate) sidebar: Option>, } impl AgentPanel { @@ -1224,17 +1162,11 @@ impl AgentPanel { last_configuration_error_telemetry: None, on_boarding_upsell_dismissed: AtomicBool::new(OnboardingUpsell::dismissed()), _active_view_observation: None, - sidebar: None, }; // Initial sync of agent servers from extensions panel.sync_agent_servers_from_extensions(cx); - cx.defer_in(window, move |this, window, cx| { - this.sidebar = find_or_create_sidebar_for_window(window, cx); - cx.notify(); - }); - panel } @@ -3236,7 +3168,7 @@ impl Panel for AgentPanel { } fn toggle_action(&self) -> Box { - Box::new(ToggleFocus) + Box::new(ToggleAgentDrawer) } fn activation_priority(&self) -> u32 { @@ -3744,127 +3676,6 @@ impl AgentPanel { y: px(1.0), }) } - - fn sidebar_info(&self, cx: &App) -> Option<(AnyView, Pixels, bool)> { - if !multi_workspace_enabled(cx) { - return None; - } - let sidebar = self.sidebar.as_ref()?; - let is_open = sidebar.read(cx).is_open(); - let width = sidebar.read(cx).width(cx); - let view: AnyView = sidebar.clone().into(); - Some((view, width, is_open)) - } - - fn render_sidebar_toggle(&self, docked_right: bool, cx: &Context) -> Option { - if !multi_workspace_enabled(cx) { - return None; - } - let sidebar = self.sidebar.as_ref()?; - let sidebar_read = sidebar.read(cx); - if sidebar_read.is_open() { - return None; - } - let has_notifications = sidebar_read.has_notifications(cx); - - let icon = if docked_right { - IconName::ThreadsSidebarRightClosed - } else { - IconName::ThreadsSidebarLeftClosed - }; - - Some( - h_flex() - .h_full() - .px_1() - .map(|this| { - if docked_right { - this.border_l_1() - } else { - this.border_r_1() - } - }) - .border_color(cx.theme().colors().border_variant) - .child( - IconButton::new("toggle-workspace-sidebar", icon) - .icon_size(IconSize::Small) - .when(has_notifications, |button| { - button - .indicator(Indicator::dot().color(Color::Accent)) - .indicator_border_color(Some( - cx.theme().colors().tab_bar_background, - )) - }) - .tooltip(move |_, cx| { - Tooltip::for_action("Open Threads Sidebar", &ToggleWorkspaceSidebar, cx) - }) - .on_click(|_, window, cx| { - window.dispatch_action(ToggleWorkspaceSidebar.boxed_clone(), cx); - }), - ) - .into_any_element(), - ) - } - - fn render_sidebar(&self, cx: &Context) -> Option { - let (sidebar_view, sidebar_width, is_open) = self.sidebar_info(cx)?; - if !is_open { - return None; - } - - let docked_right = agent_panel_dock_position(cx) == DockPosition::Right; - let sidebar = self.sidebar.as_ref()?.downgrade(); - - let resize_handle = deferred( - div() - .id("sidebar-resize-handle") - .absolute() - .when(docked_right, |this| { - this.left(-SIDEBAR_RESIZE_HANDLE_SIZE / 2.) - }) - .when(!docked_right, |this| { - this.right(-SIDEBAR_RESIZE_HANDLE_SIZE / 2.) - }) - .top(px(0.)) - .h_full() - .w(SIDEBAR_RESIZE_HANDLE_SIZE) - .cursor_col_resize() - .on_drag(DraggedSidebar, |dragged, _, _, cx| { - cx.stop_propagation(); - cx.new(|_| dragged.clone()) - }) - .on_mouse_down(MouseButton::Left, |_, _, cx| { - cx.stop_propagation(); - }) - .on_mouse_up(MouseButton::Left, move |event, _, cx| { - if event.click_count == 2 { - sidebar - .update(cx, |sidebar, cx| { - sidebar.set_width(None, cx); - }) - .ok(); - cx.stop_propagation(); - } - }) - .occlude(), - ); - - Some( - div() - .id("sidebar-container") - .relative() - .h_full() - .w(sidebar_width) - .flex_shrink_0() - .when(docked_right, |this| this.border_l_1()) - .when(!docked_right, |this| this.border_r_1()) - .border_color(cx.theme().colors().border) - .child(sidebar_view) - .child(resize_handle) - .into_any_element(), - ) - } - fn render_toolbar(&self, window: &mut Window, cx: &mut Context) -> impl IntoElement { let agent_server_store = self.project.read(cx).agent_server_store().clone(); let focus_handle = self.focus_handle(cx); @@ -4261,12 +4072,6 @@ impl AgentPanel { let use_v2_empty_toolbar = has_v2_flag && is_empty_state && !is_in_history_or_config && !is_text_thread; - let is_sidebar_open = self - .sidebar - .as_ref() - .map(|s| s.read(cx).is_open()) - .unwrap_or(false); - let base_container = h_flex() .id("agent-panel-toolbar") .h(Tab::container_height(cx)) @@ -4341,10 +4146,7 @@ impl AgentPanel { h_flex() .size_full() .gap_1() - .when(is_sidebar_open || docked_right, |this| this.pl_1()) - .when(!docked_right, |this| { - this.children(self.render_sidebar_toggle(false, cx)) - }) + .when(docked_right, |this| this.pl_1()) .child(agent_selector_menu) .child(self.render_start_thread_in_selector(cx)), ) @@ -4362,10 +4164,7 @@ impl AgentPanel { cx, )) }) - .child(self.render_panel_options_menu(window, cx)) - .when(docked_right, |this| { - this.children(self.render_sidebar_toggle(true, cx)) - }), + .child(self.render_panel_options_menu(window, cx)), ) .into_any_element() } else { @@ -4393,15 +4192,12 @@ impl AgentPanel { h_flex() .size_full() .map(|this| { - if is_sidebar_open || docked_right { + if docked_right { this.pl_1().gap_1() } else { this.pl_0().gap_0p5() } }) - .when(!docked_right, |this| { - this.children(self.render_sidebar_toggle(false, cx)) - }) .child(match &self.active_view { ActiveView::History { .. } | ActiveView::Configuration => { self.render_toolbar_back_button(cx).into_any_element() @@ -4425,10 +4221,7 @@ impl AgentPanel { cx, )) }) - .child(self.render_panel_options_menu(window, cx)) - .when(docked_right, |this| { - this.children(self.render_sidebar_toggle(true, cx)) - }), + .child(self.render_panel_options_menu(window, cx)), ) .into_any_element() } @@ -4973,44 +4766,14 @@ impl Render for AgentPanel { }) .children(self.render_trial_end_upsell(window, cx)); - let sidebar = self.render_sidebar(cx); - let has_sidebar = sidebar.is_some(); - let docked_right = agent_panel_dock_position(cx) == DockPosition::Right; - - let panel = h_flex() - .size_full() - .when(has_sidebar, |this| { - this.on_drag_move(cx.listener( - move |this, e: &DragMoveEvent, _window, cx| { - if let Some(sidebar) = &this.sidebar { - let width = if docked_right { - e.bounds.right() - e.event.position.x - } else { - e.event.position.x - }; - sidebar.update(cx, |sidebar, cx| { - sidebar.set_width(Some(width), cx); - }); - } - }, - )) - }) - .map(|this| { - if docked_right { - this.child(content).children(sidebar) - } else { - this.children(sidebar).child(content) - } - }); - match self.active_view.which_font_size_used() { WhichFontSize::AgentFont => { WithRemSize::new(ThemeSettings::get_global(cx).agent_ui_font_size(cx)) .size_full() - .child(panel) + .child(content) .into_any() } - _ => panel.into_any(), + _ => content.into_any(), } } } diff --git a/crates/agent_ui/src/connection_view.rs b/crates/agent_ui/src/connection_view.rs index e84e18e645ed4a84bd667564416682298b35ce17..ddba63be9863a466ab70fa0f51802246605f89d1 100644 --- a/crates/agent_ui/src/connection_view.rs +++ b/crates/agent_ui/src/connection_view.rs @@ -2347,8 +2347,7 @@ impl ConnectionView { } if let Some(multi_workspace) = window.root::().flatten() { - crate::agent_panel::sidebar_is_open(window, cx) - || self.agent_panel_visible(&multi_workspace, cx) + self.agent_panel_visible(&multi_workspace, cx) } else { self.workspace .upgrade() diff --git a/crates/agent_ui/src/sidebar.rs b/crates/agent_ui/src/sidebar.rs index 6dc684b3d30737dbce1b7d1c9c706341cf4ef11f..f33d2b11e3fbd2348556ad46a14fa876847660a2 100644 --- a/crates/agent_ui/src/sidebar.rs +++ b/crates/agent_ui/src/sidebar.rs @@ -10,8 +10,9 @@ use db::kvp::KEY_VALUE_STORE; use editor::Editor; use feature_flags::{AgentV2FeatureFlag, FeatureFlagViewExt as _}; use gpui::{ - Action as _, AnyElement, App, Context, Entity, FocusHandle, Focusable, ListState, Pixels, - Render, SharedString, WeakEntity, Window, actions, list, prelude::*, px, + Action, AnyElement, App, AsyncWindowContext, Context, Entity, EventEmitter, FocusHandle, + Focusable, ListState, Pixels, Render, SharedString, Task, WeakEntity, Window, actions, list, + prelude::*, px, }; use menu::{Cancel, Confirm, SelectFirst, SelectLast, SelectNext, SelectPrevious}; use project::Event as ProjectEvent; @@ -28,8 +29,11 @@ use ui::{ use util::ResultExt as _; use util::path_list::PathList; use workspace::{ - MultiWorkspace, MultiWorkspaceEvent, ToggleWorkspaceSidebar, Workspace, multi_workspace_enabled, + MultiWorkspace, MultiWorkspaceEvent, Workspace, + dock::{DockPosition, Panel, PanelEvent}, + multi_workspace_enabled, }; +use zed_actions::assistant::ToggleThreadsSidebar; use zed_actions::editor::{MoveDown, MoveUp}; actions!( @@ -261,6 +265,23 @@ pub struct Sidebar { } impl Sidebar { + pub fn load( + _workspace: WeakEntity, + mut cx: AsyncWindowContext, + ) -> Task>> { + let result = cx + .update(|window, cx| { + let multi_workspace = window + .root::() + .flatten() + .ok_or_else(|| anyhow::anyhow!("no MultiWorkspace root found"))?; + Ok(cx.new(|cx| Self::new(multi_workspace, window, cx))) + }) + .map_err(|e| anyhow::anyhow!("failed to access window: {e}")) + .and_then(|r| r); + Task::ready(result) + } + pub fn new( multi_workspace: Entity, window: &mut Window, @@ -1716,25 +1737,19 @@ impl Sidebar { .into_any_element() } - fn render_thread_list_header( - &self, - docked_right: bool, - cx: &mut Context, - ) -> impl IntoElement { + fn render_thread_list_header(&self, cx: &mut Context) -> impl IntoElement { let has_query = self.has_filter_query(cx); h_flex() .h(Tab::container_height(cx)) .flex_none() .gap_1p5() + .px_1p5() .border_b_1() .border_color(cx.theme().colors().border) - .when(!docked_right, |this| { - this.child(self.render_sidebar_toggle_button(false, cx)) - }) .child(self.render_filter_input()) .when(has_query, |this| { - this.when(!docked_right, |this| this.pr_1p5()).child( + this.child( IconButton::new("clear_filter", IconName::Close) .shape(IconButtonShape::Square) .tooltip(Tooltip::text("Clear Search")) @@ -1744,11 +1759,6 @@ impl Sidebar { })), ) }) - .when(docked_right, |this| { - this.pl_2() - .pr_0p5() - .child(self.render_sidebar_toggle_button(true, cx)) - }) } fn render_thread_list_footer(&self, cx: &mut Context) -> impl IntoElement { @@ -1770,40 +1780,6 @@ impl Sidebar { })), ) } - - fn render_sidebar_toggle_button( - &self, - docked_right: bool, - cx: &mut Context, - ) -> impl IntoElement { - let icon = if docked_right { - IconName::ThreadsSidebarRightOpen - } else { - IconName::ThreadsSidebarLeftOpen - }; - - h_flex() - .h_full() - .px_1() - .map(|this| { - if docked_right { - this.pr_1p5().border_l_1() - } else { - this.border_r_1() - } - }) - .border_color(cx.theme().colors().border_variant) - .child( - IconButton::new("sidebar-close-toggle", icon) - .icon_size(IconSize::Small) - .tooltip(move |_, cx| { - Tooltip::for_action("Close Threads Sidebar", &ToggleWorkspaceSidebar, cx) - }) - .on_click(|_, window, cx| { - window.dispatch_action(ToggleWorkspaceSidebar.boxed_clone(), cx); - }), - ) - } } impl Sidebar { @@ -1936,6 +1912,68 @@ impl Focusable for Sidebar { } } +impl EventEmitter for Sidebar {} + +impl Panel for Sidebar { + fn persistent_name() -> &'static str { + "ThreadsSidebar" + } + + fn panel_key() -> &'static str { + "threads_sidebar" + } + + fn position(&self, _window: &Window, cx: &App) -> DockPosition { + AgentSettings::get_global(cx).dock.into() + } + + fn position_is_valid(&self, position: DockPosition) -> bool { + position != DockPosition::Bottom + } + + fn set_position( + &mut self, + _position: DockPosition, + _window: &mut Window, + _cx: &mut Context, + ) { + // Position is derived from agent settings and follows the agent panel + } + + fn size(&self, _window: &Window, _cx: &App) -> Pixels { + self.width + } + + fn set_size(&mut self, size: Option, _window: &mut Window, cx: &mut Context) { + self.set_width(size, cx); + } + + fn icon(&self, _window: &Window, cx: &App) -> Option { + let settings = AgentSettings::get_global(cx); + (settings.enabled(cx) && settings.button).then_some(IconName::ThreadsSidebarLeftClosed) + } + + fn icon_tooltip(&self, _window: &Window, _cx: &App) -> Option<&'static str> { + Some("Threads Sidebar") + } + + fn toggle_action(&self) -> Box { + Box::new(ToggleThreadsSidebar) + } + + fn activation_priority(&self) -> u32 { + 4 + } + + fn enabled(&self, cx: &App) -> bool { + AgentSettings::get_global(cx).enabled(cx) + } + + fn starts_open(&self, _window: &Window, _cx: &App) -> bool { + self.is_open + } +} + impl Render for Sidebar { fn render(&mut self, window: &mut Window, cx: &mut Context) -> impl IntoElement { let ui_font = theme::setup_ui_font(window, cx); @@ -1961,7 +1999,7 @@ impl Render for Sidebar { .bg(cx.theme().colors().surface_background) .map(|this| match self.view { SidebarView::ThreadList => this - .child(self.render_thread_list_header(docked_right, cx)) + .child(self.render_thread_list_header(cx)) .child( v_flex() .relative() @@ -2071,11 +2109,9 @@ mod tests { }); }); cx.run_until_parked(); - let sidebar = panel.read_with(cx, |panel, _cx| { - panel - .sidebar - .clone() - .expect("AgentPanel should have created a sidebar") + let multi_workspace_entity = multi_workspace.clone(); + let sidebar = workspace.update_in(cx, |_, window, cx| { + cx.new(|cx| Sidebar::new(multi_workspace_entity, window, cx)) }); (sidebar, panel) } diff --git a/crates/zed/src/zed.rs b/crates/zed/src/zed.rs index 2b515786d5dc503564607ffc1bc881a3077819a8..dd446041fd4e38dcdbcf70dad159ebc842d67648 100644 --- a/crates/zed/src/zed.rs +++ b/crates/zed/src/zed.rs @@ -707,6 +707,14 @@ async fn initialize_agent_panel( })? .await?; + workspace_handle + .update_in(&mut cx, |workspace, window, cx| { + setup_or_teardown_ai_panel(workspace, window, cx, |workspace, cx| { + agent_ui::sidebar::Sidebar::load(workspace, cx) + }) + })? + .await?; + workspace_handle.update_in(&mut cx, |workspace, window, cx| { let prompt_builder = prompt_builder.clone(); cx.observe_global_in::(window, move |workspace, window, cx| { @@ -715,6 +723,10 @@ async fn initialize_agent_panel( agent_ui::AgentPanel::load(workspace, prompt_builder, cx) }) .detach_and_log_err(cx); + setup_or_teardown_ai_panel(workspace, window, cx, |workspace, cx| { + agent_ui::sidebar::Sidebar::load(workspace, cx) + }) + .detach_and_log_err(cx); }) .detach(); @@ -1033,6 +1045,15 @@ fn register_actions( workspace.toggle_panel_focus::(window, cx); }, ) + .register_action( + |workspace: &mut Workspace, + _: &zed_actions::assistant::ToggleThreadsSidebar, + window: &mut Window, + cx: &mut Context| { + workspace + .toggle_panel_focus::(window, cx); + }, + ) .register_action({ let app_state = Arc::downgrade(&app_state); move |_, _: &NewWindow, _, cx| { diff --git a/crates/zed_actions/src/lib.rs b/crates/zed_actions/src/lib.rs index 8edc80b4ec7816cd9e2ae2d7b995dd74b8128a9a..b6ae8c93f1b5e7ac49e72929652bd6f68959989b 100644 --- a/crates/zed_actions/src/lib.rs +++ b/crates/zed_actions/src/lib.rs @@ -516,7 +516,11 @@ pub mod assistant { /// Toggles the agent panel. Toggle, #[action(deprecated_aliases = ["assistant::ToggleFocus"])] - ToggleFocus + ToggleFocus, + /// Toggles the agent drawer open or closed. + ToggleAgentDrawer, + /// Toggles the threads sidebar panel in the status bar. + ToggleThreadsSidebar ] );