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
|
|BufNew| just after creating a new buffer
|
||||||
|
|
||||||
|SwapExists| detected an existing swap file
|
|SwapExists| detected an existing swap file
|
||||||
|TermOpen| when a terminal job starts
|
|TermOpen| starting a terminal job
|
||||||
|TermClose| when a terminal job ends
|
|TermEnter| entering Terminal-mode
|
||||||
|
|TermLeave| leaving Terminal-mode
|
||||||
|
|TermClose| stopping a terminal job
|
||||||
|ChanOpen| after a channel opened
|
|ChanOpen| after a channel opened
|
||||||
|ChanInfo| after a channel has its state changed
|
|ChanInfo| after a channel has its state changed
|
||||||
|
|
||||||
@ -1049,11 +1051,17 @@ TabNewEntered After entering a new tab page. |tab-page|
|
|||||||
*TabClosed*
|
*TabClosed*
|
||||||
TabClosed After closing a tab page. <afile> can be used
|
TabClosed After closing a tab page. <afile> can be used
|
||||||
for the tab page number.
|
for the tab page number.
|
||||||
*TermClose*
|
|
||||||
TermClose When a |terminal| job ends.
|
|
||||||
*TermOpen*
|
*TermOpen*
|
||||||
TermOpen When a |terminal| job is starting. Can be
|
TermOpen When a |terminal| job is starting. Can be
|
||||||
used to configure the terminal buffer.
|
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*
|
||||||
TermResponse After the response to t_RV is received from
|
TermResponse After the response to t_RV is received from
|
||||||
the terminal. The value of |v:termresponse|
|
the terminal. The value of |v:termresponse|
|
||||||
|
@ -88,7 +88,7 @@ Mouse input has the following behavior:
|
|||||||
Configuration *terminal-configuration*
|
Configuration *terminal-configuration*
|
||||||
|
|
||||||
Options: 'modified', 'scrollback'
|
Options: 'modified', 'scrollback'
|
||||||
Events: |TermOpen|, |TermClose|
|
Events: |TermOpen|, |TermEnter|, |TermLeave|, |TermClose|
|
||||||
Highlight groups: |hl-TermCursor|, |hl-TermCursorNC|
|
Highlight groups: |hl-TermCursor|, |hl-TermCursorNC|
|
||||||
|
|
||||||
Terminal sets local defaults for some options, which may differ from your
|
Terminal sets local defaults for some options, which may differ from your
|
||||||
|
@ -90,6 +90,8 @@ return {
|
|||||||
'TabNewEntered', -- after entering a new tab
|
'TabNewEntered', -- after entering a new tab
|
||||||
'TermChanged', -- after changing 'term'
|
'TermChanged', -- after changing 'term'
|
||||||
'TermClose', -- after the process exits
|
'TermClose', -- after the process exits
|
||||||
|
'TermEnter', -- after entering Terminal mode
|
||||||
|
'TermLeave', -- after leaving Terminal mode
|
||||||
'TermOpen', -- after opening a terminal buffer
|
'TermOpen', -- after opening a terminal buffer
|
||||||
'TermResponse', -- after setting "v:termresponse"
|
'TermResponse', -- after setting "v:termresponse"
|
||||||
'TextChanged', -- text was modified
|
'TextChanged', -- text was modified
|
||||||
|
@ -355,6 +355,7 @@ void terminal_enter(void)
|
|||||||
showmode();
|
showmode();
|
||||||
curwin->w_redr_status = true; // For mode() in statusline. #8323
|
curwin->w_redr_status = true; // For mode() in statusline. #8323
|
||||||
ui_busy_start();
|
ui_busy_start();
|
||||||
|
apply_autocmds(EVENT_TERMENTER, NULL, NULL, false, curbuf);
|
||||||
|
|
||||||
s->state.execute = terminal_execute;
|
s->state.execute = terminal_execute;
|
||||||
s->state.check = terminal_check;
|
s->state.check = terminal_check;
|
||||||
@ -363,6 +364,8 @@ void terminal_enter(void)
|
|||||||
restart_edit = 0;
|
restart_edit = 0;
|
||||||
State = save_state;
|
State = save_state;
|
||||||
RedrawingDisabled = s->save_rd;
|
RedrawingDisabled = s->save_rd;
|
||||||
|
apply_autocmds(EVENT_TERMLEAVE, NULL, NULL, false, curbuf);
|
||||||
|
|
||||||
if (save_curwin == curwin) { // save_curwin may be invalid (window closed)!
|
if (save_curwin == curwin) { // save_curwin may be invalid (window closed)!
|
||||||
curwin->w_p_cul = save_w_p_cul;
|
curwin->w_p_cul = save_w_p_cul;
|
||||||
curwin->w_p_cuc = save_w_p_cuc;
|
curwin->w_p_cuc = save_w_p_cuc;
|
||||||
|
@ -9,8 +9,7 @@ local ok = helpers.ok
|
|||||||
local feed = helpers.feed
|
local feed = helpers.feed
|
||||||
local iswin = helpers.iswin
|
local iswin = helpers.iswin
|
||||||
|
|
||||||
|
describe('autocmd TermClose', function()
|
||||||
describe('TermClose event', function()
|
|
||||||
before_each(function()
|
before_each(function()
|
||||||
clear()
|
clear()
|
||||||
nvim('set_option', 'shell', nvim_dir .. '/shell-test')
|
nvim('set_option', 'shell', nvim_dir .. '/shell-test')
|
||||||
@ -92,3 +91,37 @@ describe('TermClose event', function()
|
|||||||
feed('<c-c>:qa!<cr>')
|
feed('<c-c>:qa!<cr>')
|
||||||
end)
|
end)
|
||||||
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