From 45e881f5406eea375b8214c5da42efe55cc2d71e Mon Sep 17 00:00:00 2001 From: Skyler Hawthorne Date: Mon, 3 Oct 2022 11:35:42 -0400 Subject: [PATCH] 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. --- helix-term/src/application.rs | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs index ee0e08efd96cb..c7d98fcec0ddb 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) }