aboutsummaryrefslogtreecommitdiff
path: root/helix-term
diff options
context:
space:
mode:
authorshem2023-04-16 21:07:00 +0000
committerGitHub2023-04-16 21:07:00 +0000
commit1b016a89d546fb84d3c737d7c4bacb9e26c8b893 (patch)
tree865ab0b8556da85b73ff24faa862353008dbf50a /helix-term
parent7706ff77eb8aea9471af822355cad337707b9fc5 (diff)
Fix crash on opening from suspend state (#6764)
* Fix crash on opening from suspend state (#6725) * Fix code style * revert using of the imperative code style. Add panic if couldn't set terminal raw mode * remove redundant import of core::panic macros * small refactoring
Diffstat (limited to 'helix-term')
-rw-r--r--helix-term/src/application.rs12
1 files changed, 11 insertions, 1 deletions
diff --git a/helix-term/src/application.rs b/helix-term/src/application.rs
index 4d28c8be..cda498e2 100644
--- a/helix-term/src/application.rs
+++ b/helix-term/src/application.rs
@@ -471,7 +471,17 @@ impl Application {
}
}
signal::SIGCONT => {
- self.claim_term().await.unwrap();
+ // Copy/Paste from same issue from neovim:
+ // https://github.com/neovim/neovim/issues/12322
+ // https://github.com/neovim/neovim/pull/13084
+ for retries in 1..=10 {
+ match self.claim_term().await {
+ Ok(()) => break,
+ Err(err) if retries == 10 => panic!("Failed to claim terminal: {}", err),
+ Err(_) => continue,
+ }
+ }
+
// redraw the terminal
let area = self.terminal.size().expect("couldn't get terminal size");
self.compositor.resize(area);