@@ -447,17 +447,20 @@ impl Application {
447 // Exit the alternate screen and disable raw mode before panicking
447 // Exit the alternate screen and disable raw mode before panicking
448 let hook = std::panic::take_hook();
448 let hook = std::panic::take_hook();
449 std::panic::set_hook(Box::new(move |info| {
449 std::panic::set_hook(Box::new(move |info| {
450+ // We can't handle errors properly inside this closure. And it's
451+ // probably not a good idea to `unwrap()` inside a panic handler.
452+ // So we just ignore the `Result`s.
450− execute!(std::io::stdout(), terminal::LeaveAlternateScreen);
453+ let _ = execute!(std::io::stdout(), terminal::LeaveAlternateScreen);
451− terminal::disable_raw_mode();
454+ let _ = terminal::disable_raw_mode();
452 hook(info);
455 hook(info);
455 self.event_loop().await;
458 self.event_loop().await;
457− self.editor.close_language_servers(None).await;
460+ self.editor.close_language_servers(None).await?;
459 // reset cursor shape
462 // reset cursor shape
460− write!(stdout, "\x1B[2 q");
463+ write!(stdout, "\x1B[2 q")?;
462 execute!(stdout, terminal::LeaveAlternateScreen)?;
465 execute!(stdout, terminal::LeaveAlternateScreen)?;