diff options
-rw-r--r-- | src/nvim/globals.h | 2 | ||||
-rw-r--r-- | src/nvim/main.c | 7 | ||||
-rw-r--r-- | src/nvim/os/signal.c | 1 |
3 files changed, 7 insertions, 3 deletions
diff --git a/src/nvim/globals.h b/src/nvim/globals.h index f102c3ddd8..08a217a6e8 100644 --- a/src/nvim/globals.h +++ b/src/nvim/globals.h @@ -478,6 +478,8 @@ EXTERN int sc_col; // column for shown command EXTERN int starting INIT(= NO_SCREEN); // true when planning to exit. Might keep running if there is a changed buffer. EXTERN bool exiting INIT(= false); +// internal value of v:dying +EXTERN int v_dying INIT(= 0); // is stdin a terminal? EXTERN int stdin_isatty INIT(= true); // is stdout a terminal? diff --git a/src/nvim/main.c b/src/nvim/main.c index 6ac9cdfbae..b3a903cbe3 100644 --- a/src/nvim/main.c +++ b/src/nvim/main.c @@ -621,7 +621,7 @@ void getout(int exitval) /* Optionally print hashtable efficiency. */ hash_debug_results(); - if (get_vim_var_nr(VV_DYING) <= 1) { + if (v_dying <= 1) { const tabpage_T *next_tp; // Trigger BufWinLeave for all windows, but only once per buffer. @@ -670,8 +670,9 @@ void getout(int exitval) shada_write_file(NULL, false); } - if (get_vim_var_nr(VV_DYING) <= 1) - apply_autocmds(EVENT_VIMLEAVE, NULL, NULL, FALSE, curbuf); + if (v_dying <= 1) { + apply_autocmds(EVENT_VIMLEAVE, NULL, NULL, false, curbuf); + } profile_dump(); diff --git a/src/nvim/os/signal.c b/src/nvim/os/signal.c index 112de9fed8..bfe230b521 100644 --- a/src/nvim/os/signal.c +++ b/src/nvim/os/signal.c @@ -157,6 +157,7 @@ static void deadly_signal(int signum) { // Set the v:dying variable. set_vim_var_nr(VV_DYING, 1); + v_dying = 1; WLOG("got signal %d (%s)", signum, signal_name(signum)); |