aboutsummaryrefslogtreecommitdiff
path: root/src/tui.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/tui.rs')
-rw-r--r--src/tui.rs19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/tui.rs b/src/tui.rs
index 930f6e7..911a50d 100644
--- a/src/tui.rs
+++ b/src/tui.rs
@@ -10,6 +10,7 @@ use crossterm::{event, execute};
use ratatui::prelude::{CrosstermBackend, Terminal};
use std::io;
use std::io::{stdout, Stdout};
+use std::panic;
pub type Tui = Terminal<CrosstermBackend<Stdout>>;
@@ -41,3 +42,21 @@ pub fn get_event(tick: std::time::Duration) -> io::Result<Option<Event>> {
Ok(None)
}
+
+pub fn install_hooks() -> eyre::Result<()> {
+ let hook_builder = color_eyre::config::HookBuilder::default();
+ let (panic_hook, eyre_hook) = hook_builder.into_hooks();
+
+ let panic_hook = panic_hook.into_panic_hook();
+ panic::set_hook(Box::new(move |panic_info| {
+ restore().unwrap();
+ panic_hook(panic_info);
+ }));
+
+ let eyre_hook = eyre_hook.into_eyre_hook();
+ eyre::set_hook(Box::new(move |error| {
+ restore().unwrap();
+ eyre_hook(error)
+ }))?;
+ Ok(())
+}