|
11 | 11 | #![deny(clippy::needless_update)]
|
12 | 12 | #![allow(clippy::module_name_repetitions)]
|
13 | 13 | #![allow(clippy::multiple_crate_versions)]
|
| 14 | +//TODO: |
| 15 | +// #![deny(clippy::expect_used)] |
14 | 16 |
|
15 | 17 | mod app;
|
16 | 18 | mod clipboard;
|
@@ -100,7 +102,7 @@ fn main() -> Result<()> {
|
100 | 102 |
|
101 | 103 | setup_terminal()?;
|
102 | 104 | defer! {
|
103 |
| - shutdown_terminal().expect("shutdown failed"); |
| 105 | + shutdown_terminal(); |
104 | 106 | }
|
105 | 107 |
|
106 | 108 | set_panic_handlers()?;
|
@@ -181,10 +183,19 @@ fn setup_terminal() -> Result<()> {
|
181 | 183 | Ok(())
|
182 | 184 | }
|
183 | 185 |
|
184 |
| -fn shutdown_terminal() -> Result<()> { |
185 |
| - io::stdout().execute(LeaveAlternateScreen)?; |
186 |
| - disable_raw_mode()?; |
187 |
| - Ok(()) |
| 186 | +fn shutdown_terminal() { |
| 187 | + let leave_screen = |
| 188 | + io::stdout().execute(LeaveAlternateScreen).map(|_f| ()); |
| 189 | + |
| 190 | + if let Err(e) = leave_screen { |
| 191 | + eprintln!("leave_screen failed:\n{}", e); |
| 192 | + } |
| 193 | + |
| 194 | + let leave_raw_mode = disable_raw_mode(); |
| 195 | + |
| 196 | + if let Err(e) = leave_raw_mode { |
| 197 | + eprintln!("leave_raw_mode failed:\n{}", e); |
| 198 | + } |
188 | 199 | }
|
189 | 200 |
|
190 | 201 | fn draw<B: Backend>(
|
@@ -336,19 +347,20 @@ fn set_panic_handlers() -> Result<()> {
|
336 | 347 | // regular panic handler
|
337 | 348 | panic::set_hook(Box::new(|e| {
|
338 | 349 | let backtrace = Backtrace::new();
|
| 350 | + //TODO: create macro to do both in one |
339 | 351 | log::error!("panic: {:?}\ntrace:\n{:?}", e, backtrace);
|
340 |
| - shutdown_terminal().expect("shutdown failed inside panic"); |
341 | 352 | eprintln!("panic: {:?}\ntrace:\n{:?}", e, backtrace);
|
| 353 | + shutdown_terminal(); |
342 | 354 | }));
|
343 | 355 |
|
344 | 356 | // global threadpool
|
345 | 357 | rayon_core::ThreadPoolBuilder::new()
|
346 | 358 | .panic_handler(|e| {
|
347 | 359 | let backtrace = Backtrace::new();
|
| 360 | + //TODO: create macro to do both in one |
348 | 361 | log::error!("panic: {:?}\ntrace:\n{:?}", e, backtrace);
|
349 |
| - shutdown_terminal() |
350 |
| - .expect("shutdown failed inside panic"); |
351 | 362 | eprintln!("panic: {:?}\ntrace:\n{:?}", e, backtrace);
|
| 363 | + shutdown_terminal(); |
352 | 364 | process::abort();
|
353 | 365 | })
|
354 | 366 | .num_threads(4)
|
|
0 commit comments