diff --git a/assets/keymaps/default.json b/assets/keymaps/default.json index 6cd3660bf5120d4b16f1f6988588a537b7b92a31..e40a5426ddb29160b69046b36ad33872a9ddf040 100644 --- a/assets/keymaps/default.json +++ b/assets/keymaps/default.json @@ -409,6 +409,7 @@ "bindings": { "ctrl-c": "terminal::Sigint", "escape": "terminal::Escape", + "shift-escape": "terminal::DeployModal", "ctrl-d": "terminal::Quit", "backspace": "terminal::Del", "enter": "terminal::Return", diff --git a/crates/terminal/src/modal.rs b/crates/terminal/src/modal.rs index 43452e5221003f916a0e2fa8f4fc4d5e223681e5..1130050690061e22703fd8594d4bf799630f76b7 100644 --- a/crates/terminal/src/modal.rs +++ b/crates/terminal/src/modal.rs @@ -3,6 +3,7 @@ use workspace::Workspace; use crate::{get_wd_for_workspace, DeployModal, Event, Terminal, TerminalConnection}; +#[derive(Debug)] struct StoredConnection(ModelHandle); pub fn deploy_modal(workspace: &mut Workspace, _: &DeployModal, cx: &mut ViewContext) { @@ -24,12 +25,18 @@ pub fn deploy_modal(workspace: &mut Workspace, _: &DeployModal, cx: &mut ViewCon let this = cx.add_view(|cx| Terminal::new(wd, true, cx)); let connection_handle = this.read(cx).connection.clone(); cx.subscribe(&connection_handle, on_event).detach(); + //Set the global immediately, in case the user opens the command palette + cx.set_global::>(Some(StoredConnection( + connection_handle.clone(), + ))); this }) { let connection = closed_terminal_handle.read(cx).connection.clone(); cx.set_global(Some(StoredConnection(connection))); } } + + //The problem is that the terminal modal is never re-stored. } pub fn on_event( diff --git a/styles/package-lock.json b/styles/package-lock.json index 49304dc2fa98dfec942bf6687be56cefc13cdf80..2eb6d3a1bfaeaa206f0cc8a0a03efa0387d144c2 100644 --- a/styles/package-lock.json +++ b/styles/package-lock.json @@ -5,7 +5,6 @@ "requires": true, "packages": { "": { - "name": "styles", "version": "1.0.0", "license": "ISC", "dependencies": {