forked from aniani/vim
patch 8.2.5030: autocmd_add() can only handle one event and pattern
Problem: autocmd_add() can only handle one event and pattern.
Solution: Support a list of events and patterns. (Yegappan Lakshmanan,
closes #10483)
This commit is contained in:
committed by
Bram Moolenaar
parent
cfe456543e
commit
e0ff3a7de6
@@ -3429,6 +3429,83 @@ func Test_autocmd_add()
|
||||
\ cmd: 'echo "bufadd"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E216:')
|
||||
|
||||
" Test for using a list of events and patterns
|
||||
call autocmd_delete([#{group: 'TestAcSet'}])
|
||||
let l = [#{group: 'TestAcSet', event: ['BufEnter', 'BufLeave'],
|
||||
\ pattern: ['*.py', '*.sh'], cmd: 'echo "bufcmds"'}]
|
||||
call autocmd_add(l)
|
||||
call assert_equal([
|
||||
\ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.py',
|
||||
\ nested: v:false, once: v:false, event: 'BufEnter'},
|
||||
\ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.sh',
|
||||
\ nested: v:false, once: v:false, event: 'BufEnter'},
|
||||
\ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.py',
|
||||
\ nested: v:false, once: v:false, event: 'BufLeave'},
|
||||
\ #{cmd: 'echo "bufcmds"', group: 'TestAcSet', pattern: '*.sh',
|
||||
\ nested: v:false, once: v:false, event: 'BufLeave'}],
|
||||
\ autocmd_get(#{group: 'TestAcSet'}))
|
||||
|
||||
" Test for invalid values for 'event' item
|
||||
call autocmd_delete([#{group: 'TestAcSet'}])
|
||||
let l = [#{group: 'TestAcSet', event: test_null_string(),
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E928:')
|
||||
let l = [#{group: 'TestAcSet', event: test_null_list(),
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E714:')
|
||||
let l = [#{group: 'TestAcSet', event: {},
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E777:')
|
||||
let l = [#{group: 'TestAcSet', event: [{}],
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E928:')
|
||||
let l = [#{group: 'TestAcSet', event: [test_null_string()],
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E928:')
|
||||
let l = [#{group: 'TestAcSet', event: 'BufEnter,BufLeave',
|
||||
\ pattern: '*.py', cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E216:')
|
||||
let l = [#{group: 'TestAcSet', event: [],
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call autocmd_add(l)
|
||||
let l = [#{group: 'TestAcSet', event: [""],
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E216:')
|
||||
let l = [#{group: 'TestAcSet', event: "",
|
||||
\ pattern: "*.py", cmd: 'echo "bufcmds"'}]
|
||||
call autocmd_add(l)
|
||||
call assert_equal([], autocmd_get(#{group: 'TestAcSet'}))
|
||||
|
||||
" Test for invalid values for 'pattern' item
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: test_null_string(), cmd: 'echo "bufcmds"'}]
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: test_null_list(), cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E714:')
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: {}, cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E777:')
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: [{}], cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E928:')
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: [test_null_string()], cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E928:')
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: [], cmd: 'echo "bufcmds"'}]
|
||||
call autocmd_add(l)
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: [""], cmd: 'echo "bufcmds"'}]
|
||||
call autocmd_add(l)
|
||||
let l = [#{group: 'TestAcSet', event: "BufEnter",
|
||||
\ pattern: "", cmd: 'echo "bufcmds"'}]
|
||||
call autocmd_add(l)
|
||||
call assert_equal([], autocmd_get(#{group: 'TestAcSet'}))
|
||||
|
||||
let l = [#{group: 'TestAcSet', event: 'BufEnter,abc,BufLeave',
|
||||
\ pattern: '*.py', cmd: 'echo "bufcmds"'}]
|
||||
call assert_fails('call autocmd_add(l)', 'E216:')
|
||||
|
||||
call assert_fails("call autocmd_add({})", 'E1211:')
|
||||
call assert_equal(v:false, autocmd_add(test_null_list()))
|
||||
call assert_true(autocmd_add([[]]))
|
||||
|
||||
Reference in New Issue
Block a user