1
0
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:
Bram Moolenaar
2019-10-26 16:21:40 +02:00
parent 453c19257f
commit 28ed4dfe1f
6 changed files with 33 additions and 1 deletions

View File

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

View File

@@ -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},

View File

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

View File

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

View File

@@ -741,6 +741,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
2219,
/**/
2218,
/**/

View File

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