aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/testdir
diff options
context:
space:
mode:
authorMagnus Groß <magnus.gross@rwth-aachen.de>2021-09-29 16:36:48 +0200
committerMagnus Groß <magnus.gross@rwth-aachen.de>2021-11-18 11:23:18 +0100
commit69bd1e4e36fa3e3f604740c92b15b13141520822 (patch)
treebcff79c6cef4d64707ce1819d18c466872304bcc /src/nvim/testdir
parent36538417f027758ee50faf50c5e4dcc6cb73431d (diff)
downloadrneovim-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.vim34
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