mirror of
https://github.com/neovim/neovim.git
synced 2025-10-11 20:36:35 +00:00
Merge #9728 from justinmk/autocmd-once
This commit is contained in:
@@ -59,9 +59,9 @@ describe('autocmd', function()
|
||||
end)
|
||||
end)
|
||||
|
||||
it('-once', function() -- :help autocmd-once
|
||||
it('++once', function() -- :help autocmd-once
|
||||
--
|
||||
-- ":autocmd ... -once" executes its handler once, then removes the handler.
|
||||
-- ":autocmd ... ++once" executes its handler once, then removes the handler.
|
||||
--
|
||||
local expected = {
|
||||
'Many1',
|
||||
@@ -76,10 +76,10 @@ describe('autocmd', function()
|
||||
}
|
||||
command('let g:foo = []')
|
||||
command('autocmd TabNew * :call add(g:foo, "Many1")')
|
||||
command('autocmd TabNew * -once :call add(g:foo, "Once1")')
|
||||
command('autocmd TabNew * -once :call add(g:foo, "Once2")')
|
||||
command('autocmd TabNew * ++once :call add(g:foo, "Once1")')
|
||||
command('autocmd TabNew * ++once :call add(g:foo, "Once2")')
|
||||
command('autocmd TabNew * :call add(g:foo, "Many2")')
|
||||
command('autocmd TabNew * -once :call add(g:foo, "Once3")')
|
||||
command('autocmd TabNew * ++once :call add(g:foo, "Once3")')
|
||||
eq(dedent([[
|
||||
|
||||
--- Autocommands ---
|
||||
@@ -103,27 +103,45 @@ describe('autocmd', function()
|
||||
funcs.execute('autocmd Tabnew'))
|
||||
|
||||
--
|
||||
-- ":autocmd ... -once" handlers can be deleted.
|
||||
-- ":autocmd ... ++once" handlers can be deleted.
|
||||
--
|
||||
expected = {}
|
||||
command('let g:foo = []')
|
||||
command('autocmd TabNew * -once :call add(g:foo, "Once1")')
|
||||
command('autocmd TabNew * ++once :call add(g:foo, "Once1")')
|
||||
command('autocmd! TabNew')
|
||||
command('tabnew')
|
||||
eq(expected, eval('g:foo'))
|
||||
|
||||
--
|
||||
-- ":autocmd ... <buffer> -once -nested"
|
||||
-- ":autocmd ... <buffer> ++once ++nested"
|
||||
--
|
||||
expected = {
|
||||
'OptionSet-Once',
|
||||
'CursorMoved-Once',
|
||||
}
|
||||
command('let g:foo = []')
|
||||
command('autocmd OptionSet binary -nested -once :call add(g:foo, "OptionSet-Once")')
|
||||
command('autocmd CursorMoved <buffer> -once -nested setlocal binary|:call add(g:foo, "CursorMoved-Once")')
|
||||
command('autocmd OptionSet binary ++nested ++once :call add(g:foo, "OptionSet-Once")')
|
||||
command('autocmd CursorMoved <buffer> ++once ++nested setlocal binary|:call add(g:foo, "CursorMoved-Once")')
|
||||
command("put ='foo bar baz'")
|
||||
feed('0llhlh')
|
||||
eq(expected, eval('g:foo'))
|
||||
|
||||
--
|
||||
-- :autocmd should not show empty section after ++once handlers expire.
|
||||
--
|
||||
expected = {
|
||||
'Once1',
|
||||
'Once2',
|
||||
}
|
||||
command('let g:foo = []')
|
||||
command('autocmd! TabNew') -- Clear all TabNew handlers.
|
||||
command('autocmd TabNew * ++once :call add(g:foo, "Once1")')
|
||||
command('autocmd TabNew * ++once :call add(g:foo, "Once2")')
|
||||
command('tabnew')
|
||||
eq(expected, eval('g:foo'))
|
||||
eq(dedent([[
|
||||
|
||||
--- Autocommands ---]]),
|
||||
funcs.execute('autocmd Tabnew'))
|
||||
end)
|
||||
end)
|
||||
|
Reference in New Issue
Block a user