aboutsummaryrefslogtreecommitdiff
path: root/test/functional/autocmd/textchanged_spec.lua
diff options
context:
space:
mode:
Diffstat (limited to 'test/functional/autocmd/textchanged_spec.lua')
-rw-r--r--test/functional/autocmd/textchanged_spec.lua39
1 files changed, 30 insertions, 9 deletions
diff --git a/test/functional/autocmd/textchanged_spec.lua b/test/functional/autocmd/textchanged_spec.lua
index b90a0fd020..b621eb36bf 100644
--- a/test/functional/autocmd/textchanged_spec.lua
+++ b/test/functional/autocmd/textchanged_spec.lua
@@ -4,6 +4,7 @@ local exec = helpers.exec
local command = helpers.command
local feed = helpers.feed
local eq = helpers.eq
+local neq = helpers.neq
local eval = helpers.eval
local poke_eventloop = helpers.poke_eventloop
@@ -26,14 +27,14 @@ it('TextChangedI and TextChangedP autocommands', function()
poke_eventloop()
feed('<esc>')
-- TextChangedI triggers only if text is actually changed in Insert mode
- eq('', eval('g:autocmd'))
+ eq('I', eval('g:autocmd'))
command([[let g:autocmd = '']])
feed('S')
poke_eventloop()
feed('f')
poke_eventloop()
- eq('I', eval('g:autocmd'))
+ eq('II', eval('g:autocmd'))
feed('<esc>')
command([[let g:autocmd = '']])
@@ -43,7 +44,7 @@ it('TextChangedI and TextChangedP autocommands', function()
poke_eventloop()
feed('<C-N>')
poke_eventloop()
- eq('IP', eval('g:autocmd'))
+ eq('IIP', eval('g:autocmd'))
feed('<esc>')
command([[let g:autocmd = '']])
@@ -55,7 +56,7 @@ it('TextChangedI and TextChangedP autocommands', function()
poke_eventloop()
feed('<C-N>')
poke_eventloop()
- eq('IPP', eval('g:autocmd'))
+ eq('IIPP', eval('g:autocmd'))
feed('<esc>')
command([[let g:autocmd = '']])
@@ -69,7 +70,7 @@ it('TextChangedI and TextChangedP autocommands', function()
poke_eventloop()
feed('<C-N>')
poke_eventloop()
- eq('IPPP', eval('g:autocmd'))
+ eq('IIPPP', eval('g:autocmd'))
feed('<esc>')
command([[let g:autocmd = '']])
@@ -84,7 +85,7 @@ it('TextChangedI and TextChangedP autocommands', function()
feed('<C-N>')
poke_eventloop()
feed('<C-N>')
- eq('IPPPP', eval('g:autocmd'))
+ eq('IIPPPP', eval('g:autocmd'))
feed('<esc>')
eq({'foo', 'bar', 'foobar', 'foo'}, eval('getline(1, "$")'))
@@ -145,17 +146,37 @@ it('TextChangedI and TextChanged', function()
eq('', eval('g:autocmd_n'))
eq('I5', eval('g:autocmd_i'))
- command([[call feedkeys("yyp", 'tnix')]])
+ feed('yyp')
eq('N6', eval('g:autocmd_n'))
eq('I5', eval('g:autocmd_i'))
-- TextChangedI should only trigger if change was done in Insert mode
command([[let g:autocmd_i = '']])
- command([[call feedkeys("yypi\<esc>", 'tnix')]])
+ feed('yypi<esc>')
eq('', eval('g:autocmd_i'))
-- TextChanged should only trigger if change was done in Normal mode
command([[let g:autocmd_n = '']])
- command([[call feedkeys("ibar\<esc>", 'tnix')]])
+ feed('ibar<esc>')
eq('', eval('g:autocmd_n'))
+
+ local function validate_mixed_textchangedi(keys)
+ feed('ifoo<esc>')
+ command([[let g:autocmd_i = '']])
+ command([[let g:autocmd_n = '']])
+ for _, s in ipairs(keys) do
+ feed(s)
+ poke_eventloop()
+ end
+ neq('', eval('g:autocmd_i'))
+ eq('', eval('g:autocmd_n'))
+ end
+
+ validate_mixed_textchangedi({'o', '<esc>'})
+ validate_mixed_textchangedi({'O', '<esc>'})
+ validate_mixed_textchangedi({'ciw', '<esc>'})
+ validate_mixed_textchangedi({'cc', '<esc>'})
+ validate_mixed_textchangedi({'C', '<esc>'})
+ validate_mixed_textchangedi({'s', '<esc>'})
+ validate_mixed_textchangedi({'S', '<esc>'})
end)