mirror of
https://github.com/neovim/neovim.git
synced 2025-02-25 18:55:25 -06:00
parent
8c88d98df9
commit
fc27dc98d7
@ -268,8 +268,10 @@ Name triggered by ~
|
||||
|BufNew| just after creating a new buffer
|
||||
|
||||
|SwapExists| detected an existing swap file
|
||||
|TermOpen| when a terminal job starts
|
||||
|TermClose| when a terminal job ends
|
||||
|TermOpen| starting a terminal job
|
||||
|TermEnter| entering Terminal-mode
|
||||
|TermLeave| leaving Terminal-mode
|
||||
|TermClose| stopping a terminal job
|
||||
|ChanOpen| after a channel opened
|
||||
|ChanInfo| after a channel has its state changed
|
||||
|
||||
@ -1049,11 +1051,17 @@ TabNewEntered After entering a new tab page. |tab-page|
|
||||
*TabClosed*
|
||||
TabClosed After closing a tab page. <afile> can be used
|
||||
for the tab page number.
|
||||
*TermClose*
|
||||
TermClose When a |terminal| job ends.
|
||||
*TermOpen*
|
||||
TermOpen When a |terminal| job is starting. Can be
|
||||
used to configure the terminal buffer.
|
||||
*TermEnter*
|
||||
TermEnter After entering |Terminal-mode|.
|
||||
After TermOpen.
|
||||
*TermLeave*
|
||||
TermLeave After leaving |Terminal-mode|.
|
||||
After TermClose.
|
||||
*TermClose*
|
||||
TermClose When a |terminal| job ends.
|
||||
*TermResponse*
|
||||
TermResponse After the response to t_RV is received from
|
||||
the terminal. The value of |v:termresponse|
|
||||
|
@ -88,7 +88,7 @@ Mouse input has the following behavior:
|
||||
Configuration *terminal-configuration*
|
||||
|
||||
Options: 'modified', 'scrollback'
|
||||
Events: |TermOpen|, |TermClose|
|
||||
Events: |TermOpen|, |TermEnter|, |TermLeave|, |TermClose|
|
||||
Highlight groups: |hl-TermCursor|, |hl-TermCursorNC|
|
||||
|
||||
Terminal sets local defaults for some options, which may differ from your
|
||||
|
@ -90,6 +90,8 @@ return {
|
||||
'TabNewEntered', -- after entering a new tab
|
||||
'TermChanged', -- after changing 'term'
|
||||
'TermClose', -- after the process exits
|
||||
'TermEnter', -- after entering Terminal mode
|
||||
'TermLeave', -- after leaving Terminal mode
|
||||
'TermOpen', -- after opening a terminal buffer
|
||||
'TermResponse', -- after setting "v:termresponse"
|
||||
'TextChanged', -- text was modified
|
||||
|
@ -355,6 +355,7 @@ void terminal_enter(void)
|
||||
showmode();
|
||||
curwin->w_redr_status = true; // For mode() in statusline. #8323
|
||||
ui_busy_start();
|
||||
apply_autocmds(EVENT_TERMENTER, NULL, NULL, false, curbuf);
|
||||
|
||||
s->state.execute = terminal_execute;
|
||||
s->state.check = terminal_check;
|
||||
@ -363,6 +364,8 @@ void terminal_enter(void)
|
||||
restart_edit = 0;
|
||||
State = save_state;
|
||||
RedrawingDisabled = s->save_rd;
|
||||
apply_autocmds(EVENT_TERMLEAVE, NULL, NULL, false, curbuf);
|
||||
|
||||
if (save_curwin == curwin) { // save_curwin may be invalid (window closed)!
|
||||
curwin->w_p_cul = save_w_p_cul;
|
||||
curwin->w_p_cuc = save_w_p_cuc;
|
||||
|
@ -9,8 +9,7 @@ local ok = helpers.ok
|
||||
local feed = helpers.feed
|
||||
local iswin = helpers.iswin
|
||||
|
||||
|
||||
describe('TermClose event', function()
|
||||
describe('autocmd TermClose', function()
|
||||
before_each(function()
|
||||
clear()
|
||||
nvim('set_option', 'shell', nvim_dir .. '/shell-test')
|
||||
@ -92,3 +91,37 @@ describe('TermClose event', function()
|
||||
feed('<c-c>:qa!<cr>')
|
||||
end)
|
||||
end)
|
||||
|
||||
it('autocmd TermEnter, TermLeave', function()
|
||||
clear()
|
||||
command('let g:evs = []')
|
||||
command('autocmd TermOpen * call add(g:evs, ["TermOpen", mode()])')
|
||||
command('autocmd TermClose * call add(g:evs, ["TermClose", mode()])')
|
||||
command('autocmd TermEnter * call add(g:evs, ["TermEnter", mode()])')
|
||||
command('autocmd TermLeave * call add(g:evs, ["TermLeave", mode()])')
|
||||
command('terminal')
|
||||
|
||||
feed('i')
|
||||
eq({ {'TermOpen', 'n'}, {'TermEnter', 't'}, }, eval('g:evs'))
|
||||
feed([[<C-\><C-n>]])
|
||||
feed('A')
|
||||
eq({ {'TermOpen', 'n'}, {'TermEnter', 't'}, {'TermLeave', 'n'}, {'TermEnter', 't'}, }, eval('g:evs'))
|
||||
|
||||
-- TermLeave is also triggered by :quit.
|
||||
command('split foo')
|
||||
command('wincmd w')
|
||||
feed('i')
|
||||
command('q!')
|
||||
eq(
|
||||
{
|
||||
{'TermOpen', 'n'},
|
||||
{'TermEnter', 't'},
|
||||
{'TermLeave', 'n'},
|
||||
{'TermEnter', 't'},
|
||||
{'TermLeave', 'n'},
|
||||
{'TermEnter', 't'},
|
||||
{'TermClose', 't'},
|
||||
{'TermLeave', 'n'},
|
||||
},
|
||||
eval('g:evs'))
|
||||
end)
|
Loading…
Reference in New Issue
Block a user