aboutsummaryrefslogtreecommitdiff
path: root/src/tui.rs
diff options
context:
space:
mode:
authorShav Kinderlehrer <[email protected]>2024-03-23 13:08:14 -0400
committerShav Kinderlehrer <[email protected]>2024-03-23 13:08:14 -0400
commit0e29fa02995273bfd803aea48773cbe52a7366ed (patch)
treeefd8302cfc433c076010d94849fda224d36167d4 /src/tui.rs
parent0c5e8ab544823fbb4936c536ee1d8a66298f7e51 (diff)
downloadmolehole-0e29fa02995273bfd803aea48773cbe52a7366ed.tar.gz
molehole-0e29fa02995273bfd803aea48773cbe52a7366ed.zip
Rework actions and events + start statusbar
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(())
+}