mirror of
https://github.com/vim/vim.git
synced 2025-10-01 04:54:07 -04:00
patch 8.1.1872: when Vim exits because of a signal, VimLeave is not triggered
Problem: When Vim exits because of a signal, VimLeave is not triggered. (Daniel Hahler) Solution: Unblock autocommands when triggering VimLeave. (closes #4818)
This commit is contained in:
16
src/main.c
16
src/main.c
@@ -541,12 +541,12 @@ vim_main2(void)
|
|||||||
#ifdef FEAT_GUI
|
#ifdef FEAT_GUI
|
||||||
if (gui.starting)
|
if (gui.starting)
|
||||||
{
|
{
|
||||||
#if defined(UNIX) || defined(VMS)
|
# if defined(UNIX) || defined(VMS)
|
||||||
/* When something caused a message from a vimrc script, need to output
|
/* When something caused a message from a vimrc script, need to output
|
||||||
* an extra newline before the shell prompt. */
|
* an extra newline before the shell prompt. */
|
||||||
if (did_emsg || msg_didout)
|
if (did_emsg || msg_didout)
|
||||||
putchar('\n');
|
putchar('\n');
|
||||||
#endif
|
# endif
|
||||||
|
|
||||||
gui_start(NULL); /* will set full_screen to TRUE */
|
gui_start(NULL); /* will set full_screen to TRUE */
|
||||||
TIME_MSG("starting GUI");
|
TIME_MSG("starting GUI");
|
||||||
@@ -1485,7 +1485,19 @@ getout(int exitval)
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
if (v_dying <= 1)
|
if (v_dying <= 1)
|
||||||
|
{
|
||||||
|
int unblock = 0;
|
||||||
|
|
||||||
|
// deathtrap() blocks autocommands, but we do want to trigger VimLeave.
|
||||||
|
if (is_autocmd_blocked())
|
||||||
|
{
|
||||||
|
unblock_autocmds();
|
||||||
|
++unblock;
|
||||||
|
}
|
||||||
apply_autocmds(EVENT_VIMLEAVE, NULL, NULL, FALSE, curbuf);
|
apply_autocmds(EVENT_VIMLEAVE, NULL, NULL, FALSE, curbuf);
|
||||||
|
if (unblock)
|
||||||
|
block_autocmds();
|
||||||
|
}
|
||||||
|
|
||||||
#ifdef FEAT_PROFILE
|
#ifdef FEAT_PROFILE
|
||||||
profile_dump();
|
profile_dump();
|
||||||
|
@@ -769,6 +769,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1872,
|
||||||
/**/
|
/**/
|
||||||
1871,
|
1871,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user