diff options
author | Skyler Hawthorne | 2022-10-03 15:35:42 +0000 |
---|---|---|
committer | GitHub | 2022-10-03 15:35:42 +0000 |
commit | 27b70696df78430c5596cb7681be496ac305ec05 (patch) | |
tree | 33b023637a90b196673feca96fcbdd464e416ef2 /helix-term/src/application.rs | |
parent | 6cca7375ec1965e61c791bbe738c617ea43c6dce (diff) |
Exit gracefully when close operation fails (#4081)
If the close method fails, the editor will quit before restoring the
terminal. This causes the shell to break if, e.g. the LS times out
shutting down.
This fixes this by always restoring the terminal after closing, and
printing out a message to stderr if there is an error.
Diffstat (limited to 'helix-term/src/application.rs')
-rw-r--r-- | helix-term/src/application.rs | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index ee0e08ef..c7d98fce 100644 --- a/helix-term/src/application.rs +++ b/helix-term/src/application.rs @@ -870,9 +870,16 @@ impl Application { })); self.event_loop(input_stream).await; - self.close().await?; + + let err = self.close().await.err(); + restore_term()?; + if let Some(err) = err { + self.editor.exit_code = 1; + eprintln!("Error: {}", err); + } + Ok(self.editor.exit_code) } |