diff options
| author | Magnus Groß <magnus.gross@rwth-aachen.de> | 2021-09-29 16:36:48 +0200 |
|---|---|---|
| committer | Magnus Groß <magnus.gross@rwth-aachen.de> | 2021-11-18 11:23:18 +0100 |
| commit | 69bd1e4e36fa3e3f604740c92b15b13141520822 (patch) | |
| tree | bcff79c6cef4d64707ce1819d18c466872304bcc /src/nvim/testdir | |
| parent | 36538417f027758ee50faf50c5e4dcc6cb73431d (diff) | |
| download | rneovim-69bd1e4e36fa3e3f604740c92b15b13141520822.tar.gz rneovim-69bd1e4e36fa3e3f604740c92b15b13141520822.tar.bz2 rneovim-69bd1e4e36fa3e3f604740c92b15b13141520822.zip | |
vim-patch:8.2.3430: no generic way to trigger an autocommand on mode change
Problem: No generic way to trigger an autocommand on mode change.
Solution: Add the ModeChanged autocommand event. (Magnus Gross, closes vim/vim#8856)
https://github.com/vim/vim/commit/f1e8876fa2359b572d262772747405d3616db670
N/A patches for version.c:
vim-patch:8.2.3434: function prototype for trigger_modechanged() is incomplete
Problem: Function prototype for trigger_modechanged() is incomplete.
Solution: Add "void".
https://github.com/vim/vim/commit/28e591dd5080bbcd0f468f9d9597cedb716e28c9
Fixes #4399.
Fixes #7416.
Diffstat (limited to 'src/nvim/testdir')
| -rw-r--r-- | src/nvim/testdir/test_edit.vim | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/nvim/testdir/test_edit.vim b/src/nvim/testdir/test_edit.vim index 23ad8dbfc5..75e30502b8 100644 --- a/src/nvim/testdir/test_edit.vim +++ b/src/nvim/testdir/test_edit.vim @@ -1644,4 +1644,38 @@ func Test_read_invalid() set encoding=utf-8 endfunc +" Test for ModeChanged pattern +func Test_mode_changes() + let g:count = 0 + func! DoIt() + let g:count += 1 + endfunc + let g:index = 0 + let g:mode_seq = ['n', 'i', 'n', 'v', 'V', 'n', 'V', 'v', 'n'] + func! TestMode() + call assert_equal(g:mode_seq[g:index], get(v:event, "old_mode")) + call assert_equal(g:mode_seq[g:index + 1], get(v:event, "new_mode")) + call assert_equal(mode(), get(v:event, "new_mode")) + let g:index += 1 + endfunc + + au ModeChanged * :call TestMode() + au ModeChanged n:* :call DoIt() + call feedkeys("i\<esc>vV\<esc>", 'tnix') + call assert_equal(2, g:count) + + au ModeChanged V:v :call DoIt() + call feedkeys("Vv\<esc>", 'tnix') + call assert_equal(4, g:count) + + call assert_equal(len(g:mode_seq) - 1, g:index) + + au! ModeChanged + delfunc TestMode + unlet! g:mode_seq + unlet! g:index + delfunc DoIt + unlet! g:count +endfunc + " vim: shiftwidth=2 sts=2 expandtab |