local helpers = require('test.functional.helpers')(after_each) local clear = helpers.clear local command = helpers.command local eq = helpers.eq local eval = helpers.eval local request = helpers.request local source = helpers.source describe('autocmd BufEnter', function() before_each(clear) it("triggered by nvim_command('edit ')", function() command("autocmd BufEnter * if isdirectory(expand('')) | let g:dir_bufenter = 1 | endif") request("nvim_command", "split .") eq(1, eval("exists('g:dir_bufenter')")) -- Did BufEnter for the directory. eq(2, eval("bufnr('%')")) -- Switched to the dir buffer. end) it('triggered by "try|:split |endtry" in a function', function() command("autocmd BufEnter * if isdirectory(expand('')) | let g:dir_bufenter = 1 | endif") source([[ function! Test() try exe 'split .' catch endtry endfunction ]]) command("call Test()") eq(1, eval("exists('g:dir_bufenter')")) -- Did BufEnter for the directory. eq(2, eval("bufnr('%')")) -- Switched to the dir buffer. end) it('triggered by ":split normal|:help|:bw"', function() helpers.add_builddir_to_rtp() command("split normal") command("wincmd j") command("help") command("wincmd L") command("autocmd BufEnter normal let g:bufentered = 1") command("bw") eq(1, eval('bufnr("%")')) -- The cursor is back to the bottom window eq(0, eval("exists('g:bufentered')")) -- The autocmd hasn't been triggered end) end)