File tree 1 file changed +16
-4
lines changed
1 file changed +16
-4
lines changed Original file line number Diff line number Diff line change @@ -54,11 +54,9 @@ fn main() -> Result<()> {
54
54
return Ok ( ( ) ) ;
55
55
}
56
56
57
- enable_raw_mode ( ) ?;
58
- io:: stdout ( ) . execute ( EnterAlternateScreen ) ?;
57
+ setup_terminal ( ) ?;
59
58
defer ! {
60
- io:: stdout( ) . execute( LeaveAlternateScreen ) . unwrap( ) ;
61
- disable_raw_mode( ) . unwrap( ) ;
59
+ shutdown_terminal( ) . expect( "shutdown failed" ) ;
62
60
}
63
61
64
62
set_panic_handlers ( ) ;
@@ -118,6 +116,18 @@ fn main() -> Result<()> {
118
116
Ok ( ( ) )
119
117
}
120
118
119
+ fn setup_terminal ( ) -> Result < ( ) > {
120
+ enable_raw_mode ( ) ?;
121
+ io:: stdout ( ) . execute ( EnterAlternateScreen ) ?;
122
+ Ok ( ( ) )
123
+ }
124
+
125
+ fn shutdown_terminal ( ) -> Result < ( ) > {
126
+ io:: stdout ( ) . execute ( LeaveAlternateScreen ) ?;
127
+ disable_raw_mode ( ) ?;
128
+ Ok ( ( ) )
129
+ }
130
+
121
131
fn draw < B : Backend > (
122
132
terminal : & mut Terminal < B > ,
123
133
app : & mut App ,
@@ -202,6 +212,8 @@ fn set_panic_handlers() {
202
212
panic:: set_hook ( Box :: new ( |e| {
203
213
let backtrace = Backtrace :: new ( ) ;
204
214
error ! ( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
215
+ shutdown_terminal ( ) . expect ( "shutdown failed inside panic" ) ;
216
+ eprintln ! ( "panic: {:?}\n trace:\n {:?}" , e, backtrace) ;
205
217
} ) ) ;
206
218
207
219
// global threadpool
You can’t perform that action at this time.
0 commit comments