forked from aniani/vim
patch 8.1.2219: no autocommand for open window with terminal
Problem: No autocommand for open window with terminal. Solution: Add TerminalWinOpen. (Christian Brabandt)
This commit is contained in:
@@ -268,7 +268,6 @@ Name triggered by ~
|
||||
|BufCreate| just after adding a buffer to the buffer list
|
||||
|BufDelete| before deleting a buffer from the buffer list
|
||||
|BufWipeout| before completely deleting a buffer
|
||||
|TerminalOpen| after a terminal buffer was created
|
||||
|
||||
|BufFilePre| before changing the name of the current buffer
|
||||
|BufFilePost| after changing the name of the current buffer
|
||||
@@ -302,6 +301,10 @@ Name triggered by ~
|
||||
|VimLeavePre| before exiting Vim, before writing the viminfo file
|
||||
|VimLeave| before exiting Vim, after writing the viminfo file
|
||||
|
||||
Terminal
|
||||
|TerminalOpen| after a terminal buffer was created
|
||||
|TerminalWinOpen| after a terminal buffer was created in a new window
|
||||
|
||||
Various
|
||||
|FileChangedShell| Vim notices that a file changed since editing started
|
||||
|FileChangedShellPost| After handling a file changed since editing started
|
||||
@@ -1081,6 +1084,12 @@ TerminalOpen Just after a terminal buffer was created, with
|
||||
`:terminal` or |term_start()|. This event is
|
||||
triggered even if the buffer is created
|
||||
without a window, with the ++hidden option.
|
||||
*TerminalWinOpen*
|
||||
TerminalWinOpen Just after a terminal buffer was created, with
|
||||
`:terminal` or |term_start()|. This event is
|
||||
triggered only if the buffer is created
|
||||
with a window. Can be used to set window
|
||||
local options for the terminal window.
|
||||
*TermResponse*
|
||||
TermResponse After the response to |t_RV| is received from
|
||||
the terminal. The value of |v:termresponse|
|
||||
|
@@ -174,6 +174,7 @@ static struct event_name
|
||||
{"TabLeave", EVENT_TABLEAVE},
|
||||
{"TermChanged", EVENT_TERMCHANGED},
|
||||
{"TerminalOpen", EVENT_TERMINALOPEN},
|
||||
{"TerminalWinOpen", EVENT_TERMINALWINOPEN},
|
||||
{"TermResponse", EVENT_TERMRESPONSE},
|
||||
{"TextChanged", EVENT_TEXTCHANGED},
|
||||
{"TextChangedI", EVENT_TEXTCHANGEDI},
|
||||
|
@@ -690,6 +690,8 @@ term_start(
|
||||
}
|
||||
|
||||
apply_autocmds(EVENT_TERMINALOPEN, NULL, NULL, FALSE, newbuf);
|
||||
if (!opt->jo_hidden && !(flags & TERM_START_SYSTEM))
|
||||
apply_autocmds(EVENT_TERMINALWINOPEN, NULL, NULL, FALSE, newbuf);
|
||||
return newbuf;
|
||||
}
|
||||
|
||||
|
@@ -68,6 +68,23 @@ func Test_terminal_basic()
|
||||
unlet g:job
|
||||
endfunc
|
||||
|
||||
func Test_terminal_TerminalWinOpen()
|
||||
au TerminalWinOpen * let b:done = 'yes'
|
||||
let buf = Run_shell_in_terminal({})
|
||||
call assert_equal('yes', b:done)
|
||||
call StopShellInTerminal(buf)
|
||||
" closing window wipes out the terminal buffer with the finished job
|
||||
close
|
||||
|
||||
if has("unix")
|
||||
terminal ++hidden ++open sleep 1
|
||||
sleep 1
|
||||
call assert_fails("echo b:done", 'E121:')
|
||||
endif
|
||||
|
||||
au! TerminalWinOpen
|
||||
endfunc
|
||||
|
||||
func Test_terminal_make_change()
|
||||
let buf = Run_shell_in_terminal({})
|
||||
call StopShellInTerminal(buf)
|
||||
|
@@ -741,6 +741,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
2219,
|
||||
/**/
|
||||
2218,
|
||||
/**/
|
||||
|
@@ -1341,6 +1341,7 @@ enum auto_event
|
||||
EVENT_TABNEW, // when entering a new tab page
|
||||
EVENT_TERMCHANGED, // after changing 'term'
|
||||
EVENT_TERMINALOPEN, // after a terminal buffer was created
|
||||
EVENT_TERMINALWINOPEN, // after a terminal buffer was created and entering its window
|
||||
EVENT_TERMRESPONSE, // after setting "v:termresponse"
|
||||
EVENT_TEXTCHANGED, // text was modified not in Insert mode
|
||||
EVENT_TEXTCHANGEDI, // text was modified in Insert mode
|
||||
|
Reference in New Issue
Block a user