vim-patch:8.0.1564: too many #ifdefs

Problem:    Too many #ifdefs.
Solution:   Graduate the +autocmd feature. Takes away 450 #ifdefs and
            increases code size of tiny Vim by only 40 Kbyte.
f2bd8ef2b4
This commit is contained in:
Jan Edmund Lazo 2020-05-31 15:53:37 -04:00
parent 2298350884
commit 64a2884d4c
No known key found for this signature in database
GPG Key ID: 64915E6E9F735B15
3 changed files with 7 additions and 3 deletions

View File

@ -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?

View File

@ -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();

View File

@ -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));