diff options
author | Blaž Hrastnik | 2020-09-19 02:57:22 +0000 |
---|---|---|
committer | Blaž Hrastnik | 2020-09-19 02:58:08 +0000 |
commit | 91343a68461608efa9f45be75a7dcaece0fd65a7 (patch) | |
tree | f949dffc4263a4362233440d38d5da3987a8c32f | |
parent | 929fa5474d5838d4c58dca8b0e576f5add49156b (diff) |
Restore terminal mode on panics.
-rw-r--r-- | helix-term/src/editor.rs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/helix-term/src/editor.rs b/helix-term/src/editor.rs index 397ce8df..9b5cad51 100644 --- a/helix-term/src/editor.rs +++ b/helix-term/src/editor.rs @@ -376,6 +376,14 @@ impl Editor { execute!(stdout, terminal::EnterAlternateScreen)?; + // Exit the alternate screen and disable raw mode before panicking + let hook = std::panic::take_hook(); + std::panic::set_hook(Box::new(move |info| { + execute!(std::io::stdout(), terminal::LeaveAlternateScreen); + disable_raw_mode(); + hook(info); + })); + self.event_loop().await; // reset cursor shape |