diff --git a/assets/keymaps/default-linux.json b/assets/keymaps/default-linux.json index 44234b819abdf10231e4cb4e4fb7dfe335d19778..70a002cf081deaf5df66a2173dc17e7f02ce3aeb 100644 --- a/assets/keymaps/default-linux.json +++ b/assets/keymaps/default-linux.json @@ -583,7 +583,7 @@ "ctrl-n": "workspace::NewFile", "shift-new": "workspace::NewWindow", "ctrl-shift-n": "workspace::NewWindow", - "ctrl-`": "terminal_panel::ToggleFocus", + "ctrl-`": "terminal_panel::Toggle", "f10": ["app_menu::OpenApplicationMenu", "Zed"], "alt-1": ["workspace::ActivatePane", 0], "alt-2": ["workspace::ActivatePane", 1], diff --git a/assets/keymaps/default-macos.json b/assets/keymaps/default-macos.json index 954684c826b18828857c6411e2413aa514aeec45..21504c7e623583017459baaac7d25191d7a08b68 100644 --- a/assets/keymaps/default-macos.json +++ b/assets/keymaps/default-macos.json @@ -649,7 +649,7 @@ "alt-shift-enter": "toast::RunAction", "cmd-shift-s": "workspace::SaveAs", "cmd-shift-n": "workspace::NewWindow", - "ctrl-`": "terminal_panel::ToggleFocus", + "ctrl-`": "terminal_panel::Toggle", "cmd-1": ["workspace::ActivatePane", 0], "cmd-2": ["workspace::ActivatePane", 1], "cmd-3": ["workspace::ActivatePane", 2], diff --git a/assets/keymaps/default-windows.json b/assets/keymaps/default-windows.json index 728907e60ca3361270f15b20f66aaf7571be6ac2..1c9f1281882dc136daa7a3912d3d92b3516a4441 100644 --- a/assets/keymaps/default-windows.json +++ b/assets/keymaps/default-windows.json @@ -599,7 +599,7 @@ "ctrl-n": "workspace::NewFile", "shift-new": "workspace::NewWindow", "ctrl-shift-n": "workspace::NewWindow", - "ctrl-`": "terminal_panel::ToggleFocus", + "ctrl-`": "terminal_panel::Toggle", "f10": ["app_menu::OpenApplicationMenu", "Zed"], "alt-1": ["workspace::ActivatePane", 0], "alt-2": ["workspace::ActivatePane", 1], diff --git a/assets/keymaps/linux/jetbrains.json b/assets/keymaps/linux/jetbrains.json index 3df1243feda88680a4ce03cd0b25ab9ea9a36edd..59a182a968a849edb3359927e7647f611bcd44da 100644 --- a/assets/keymaps/linux/jetbrains.json +++ b/assets/keymaps/linux/jetbrains.json @@ -125,7 +125,7 @@ { "context": "Workspace || Editor", "bindings": { - "alt-f12": "terminal_panel::ToggleFocus", + "alt-f12": "terminal_panel::Toggle", "ctrl-shift-k": "git::Push" } }, diff --git a/assets/keymaps/macos/jetbrains.json b/assets/keymaps/macos/jetbrains.json index 66962811f48a429f2f5d036241c64d6549f60334..2c757c3a30a08eb55e8344945ab66baf91ce0c6b 100644 --- a/assets/keymaps/macos/jetbrains.json +++ b/assets/keymaps/macos/jetbrains.json @@ -127,7 +127,7 @@ { "context": "Workspace || Editor", "bindings": { - "alt-f12": "terminal_panel::ToggleFocus", + "alt-f12": "terminal_panel::Toggle", "cmd-shift-k": "git::Push" } }, diff --git a/crates/terminal_view/src/terminal_panel.rs b/crates/terminal_view/src/terminal_panel.rs index 2ba7f617bf407299b2b0e670f66432ce053718be..44d64c5fe3351d4c3e2a9342bfaf818445d78736 100644 --- a/crates/terminal_view/src/terminal_panel.rs +++ b/crates/terminal_view/src/terminal_panel.rs @@ -49,6 +49,8 @@ const TERMINAL_PANEL_KEY: &str = "TerminalPanel"; actions!( terminal_panel, [ + /// Toggles the terminal panel. + Toggle, /// Toggles focus on the terminal panel. ToggleFocus ] @@ -64,6 +66,13 @@ pub fn init(cx: &mut App) { workspace.toggle_panel_focus::(window, cx); } }); + workspace.register_action(|workspace, _: &Toggle, window, cx| { + if is_enabled_in_workspace(workspace, cx) { + if !workspace.toggle_panel_focus::(window, cx) { + workspace.close_panel::(window, cx); + } + } + }); }, ) .detach(); diff --git a/crates/vim/src/command.rs b/crates/vim/src/command.rs index 29fe6aae0252bcc1ca5767f71b7c668ecae1b9a8..eda483988b4e8a01affa9c85d0cad7657def61eb 100644 --- a/crates/vim/src/command.rs +++ b/crates/vim/src/command.rs @@ -1265,8 +1265,8 @@ fn generate_commands(_: &App) -> Vec { VimCommand::str(("L", "explore"), "project_panel::ToggleFocus"), VimCommand::str(("S", "explore"), "project_panel::ToggleFocus"), VimCommand::str(("Ve", "xplore"), "project_panel::ToggleFocus"), - VimCommand::str(("te", "rm"), "terminal_panel::ToggleFocus"), - VimCommand::str(("T", "erm"), "terminal_panel::ToggleFocus"), + VimCommand::str(("te", "rm"), "terminal_panel::Toggle"), + VimCommand::str(("T", "erm"), "terminal_panel::Toggle"), VimCommand::str(("C", "ollab"), "collab_panel::ToggleFocus"), VimCommand::str(("Ch", "at"), "chat_panel::ToggleFocus"), VimCommand::str(("No", "tifications"), "notification_panel::ToggleFocus"), diff --git a/crates/workspace/src/workspace.rs b/crates/workspace/src/workspace.rs index 0bfcaaf593eca73baa2a6a57def5af17b6ee93b3..6b4e7c1731b23e2e35086431d4d83bda4958d33f 100644 --- a/crates/workspace/src/workspace.rs +++ b/crates/workspace/src/workspace.rs @@ -3093,6 +3093,16 @@ impl Workspace { } } + pub fn close_panel(&self, window: &mut Window, cx: &mut Context) { + for dock in self.all_docks().iter() { + dock.update(cx, |dock, cx| { + if dock.panel::().is_some() { + dock.set_open(false, window, cx) + } + }) + } + } + pub fn panel(&self, cx: &App) -> Option> { self.all_docks() .iter()