autocmd: do not show empty section after ++once handlers expire

Problem: If autocmd pattern only contained `++once` handlers, and
         all of them completed, then there would be an empty group
         displayed by `:autocmd Foo`.
Solution: Delete the pattern if all of its commands were deleted.
This commit is contained in:
Justin M. Keyes
2019-03-13 22:31:07 +01:00
parent 3259e45f92
commit b1f25ea187
2 changed files with 42 additions and 14 deletions

View File

@@ -125,5 +125,23 @@ describe('autocmd', function()
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)