comparison src/testdir/test_autocmd.vim @ 33676:46cd1fc257de v9.0.2075

patch 9.0.2075: TextChangedI may not always trigger Commit: https://github.com/vim/vim/commit/4bca4897a12dfb91b3b27e3083fd5f370bd857d1 Author: Christian Brabandt <cb@256bit.org> Date: Fri Oct 27 19:26:49 2023 +0200 patch 9.0.2075: TextChangedI may not always trigger Problem: TextChangedI may not always trigger Solution: trigger it in more cases: for insert/ append/change operations, and when opening a new line, fixes: #13367 closes: #13375 Signed-off-by: Christian Brabandt <cb@256bit.org> Signed-off-by: Evgeni Chasnovski <evgeni.chasnovski@gmail.com>
author Christian Brabandt <cb@256bit.org>
date Fri, 27 Oct 2023 19:45:04 +0200
parents 830a5f8053cb
children c3804ff17204
comparison
equal deleted inserted replaced
33675:b562d3f78dd5 33676:46cd1fc257de
2564 au! TextChangedP <buffer> :call TextChangedAutocmd('P') 2564 au! TextChangedP <buffer> :call TextChangedAutocmd('P')
2565 2565
2566 call cursor(3, 1) 2566 call cursor(3, 1)
2567 let g:autocmd = '' 2567 let g:autocmd = ''
2568 call feedkeys("o\<esc>", 'tnix') 2568 call feedkeys("o\<esc>", 'tnix')
2569 " `TextChangedI` triggers only if text is actually changed in Insert mode 2569 call assert_equal('I', g:autocmd)
2570 call assert_equal('', g:autocmd)
2571 2570
2572 let g:autocmd = '' 2571 let g:autocmd = ''
2573 call feedkeys("Sf", 'tnix') 2572 call feedkeys("Sf", 'tnix')
2574 call assert_equal('I', g:autocmd) 2573 call assert_equal('II', g:autocmd)
2575 2574
2576 let g:autocmd = '' 2575 let g:autocmd = ''
2577 call feedkeys("Sf\<C-N>", 'tnix') 2576 call feedkeys("Sf\<C-N>", 'tnix')
2578 call assert_equal('IP', g:autocmd) 2577 call assert_equal('IIP', g:autocmd)
2579 2578
2580 let g:autocmd = '' 2579 let g:autocmd = ''
2581 call feedkeys("Sf\<C-N>\<C-N>", 'tnix') 2580 call feedkeys("Sf\<C-N>\<C-N>", 'tnix')
2582 call assert_equal('IPP', g:autocmd) 2581 call assert_equal('IIPP', g:autocmd)
2583 2582
2584 let g:autocmd = '' 2583 let g:autocmd = ''
2585 call feedkeys("Sf\<C-N>\<C-N>\<C-N>", 'tnix') 2584 call feedkeys("Sf\<C-N>\<C-N>\<C-N>", 'tnix')
2586 call assert_equal('IPPP', g:autocmd) 2585 call assert_equal('IIPPP', g:autocmd)
2587 2586
2588 let g:autocmd = '' 2587 let g:autocmd = ''
2589 call feedkeys("Sf\<C-N>\<C-N>\<C-N>\<C-N>", 'tnix') 2588 call feedkeys("Sf\<C-N>\<C-N>\<C-N>\<C-N>", 'tnix')
2590 call assert_equal('IPPPP', g:autocmd) 2589 call assert_equal('IIPPPP', g:autocmd)
2591 2590
2592 call assert_equal(['foo', 'bar', 'foobar', 'foo'], getline(1, '$')) 2591 call assert_equal(['foo', 'bar', 'foobar', 'foo'], getline(1, '$'))
2593 " TODO: how should it handle completeopt=noinsert,noselect? 2592 " TODO: how should it handle completeopt=noinsert,noselect?
2594 2593
2595 " CleanUp 2594 " CleanUp
3619 " TextChanged should only trigger if change was done in Normal mode 3618 " TextChanged should only trigger if change was done in Normal mode
3620 let g:autocmd_n = '' 3619 let g:autocmd_n = ''
3621 call feedkeys("ibar\<esc>", 'tnix') 3620 call feedkeys("ibar\<esc>", 'tnix')
3622 call assert_equal('', g:autocmd_n) 3621 call assert_equal('', g:autocmd_n)
3623 3622
3623 " If change is a mix of Normal and Insert modes, TextChangedI should trigger
3624 func s:validate_mixed_textchangedi(keys)
3625 call feedkeys("ifoo\<esc>", 'tnix')
3626 let g:autocmd_i = ''
3627 let g:autocmd_n = ''
3628 call feedkeys(a:keys, 'tnix')
3629 call assert_notequal('', g:autocmd_i)
3630 call assert_equal('', g:autocmd_n)
3631 endfunc
3632
3633 call s:validate_mixed_textchangedi("o\<esc>")
3634 call s:validate_mixed_textchangedi("O\<esc>")
3635 call s:validate_mixed_textchangedi("ciw\<esc>")
3636 call s:validate_mixed_textchangedi("cc\<esc>")
3637 call s:validate_mixed_textchangedi("C\<esc>")
3638 call s:validate_mixed_textchangedi("s\<esc>")
3639 call s:validate_mixed_textchangedi("S\<esc>")
3640
3641
3624 " CleanUp 3642 " CleanUp
3625 call test_override("char_avail", 0) 3643 call test_override("char_avail", 0)
3626 au! TextChanged <buffer> 3644 au! TextChanged <buffer>
3627 au! TextChangedI <buffer> 3645 au! TextChangedI <buffer>
3628 augroup! Test_TextChanged 3646 augroup! Test_TextChanged