aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nvim/os/signal.c6
-rw-r--r--src/nvim/tui/tui.c3
2 files changed, 7 insertions, 2 deletions
diff --git a/src/nvim/os/signal.c b/src/nvim/os/signal.c
index 55efce0337..b09d11bc51 100644
--- a/src/nvim/os/signal.c
+++ b/src/nvim/os/signal.c
@@ -212,10 +212,14 @@ static void on_signal(SignalWatcher *handle, int signum, void *data)
// Ignore
break;
#endif
- case SIGTERM:
#ifdef SIGTSTP
case SIGTSTP:
+ if (p_awa) {
+ autowrite_all();
+ }
+ break;
#endif
+ case SIGTERM:
#ifdef SIGQUIT
case SIGQUIT:
#endif
diff --git a/src/nvim/tui/tui.c b/src/nvim/tui/tui.c
index 7c93be844a..c19e419cc0 100644
--- a/src/nvim/tui/tui.c
+++ b/src/nvim/tui/tui.c
@@ -1576,7 +1576,8 @@ void tui_suspend(TUIData *tui)
tui_terminal_stop(tui);
stream_set_blocking(tui->input.in_fd, true); // normalize stream (#2598)
- kill(0, SIGTSTP);
+ // Avoid os/signal.c SIGTSTP handler. ex_stop calls auto_writeall. #33258
+ kill(0, SIGSTOP);
tui_terminal_start(tui);
tui_terminal_after_startup(tui);