patch 7.4.1300
Problem: Cannot test CursorMovedI because there is typeahead.
Solution: Add disable_char_avail_for_testing().
diff --git a/src/testdir/README.txt b/src/testdir/README.txt
index 7cbc771..052ccf5 100644
--- a/src/testdir/README.txt
+++ b/src/testdir/README.txt
@@ -25,6 +25,9 @@
to check memory allocation failures are handled gracefully. You need to
change the source code to add an ID to the allocation. Update LAST_ID_USED
above alloc_id() to the highest ID used.
+- Use disable_char_avail_for_testing(1) if char_avail() must return FALSE for
+ a while. E.g. to trigger the CursorMovedI autocommand event.
+ See test_cursor_func.vim for an example
TO ADD AN OLD STYLE TEST:
diff --git a/src/testdir/test_cursor_func.vim b/src/testdir/test_cursor_func.vim
index 684391e..d3236e6 100644
--- a/src/testdir/test_cursor_func.vim
+++ b/src/testdir/test_cursor_func.vim
@@ -20,16 +20,35 @@
call assert_equal([4, 3, 0, 3], getcurpos()[1:])
call cursor(2, 2)
- call assert_equal([2, 2, 0, 3], getcurpos()[1:])
+ call assert_equal([2, 2, 0, 2], getcurpos()[1:])
" line number zero keeps the line number
call cursor(0, 1)
- call assert_equal([2, 1, 0, 3], getcurpos()[1:])
+ call assert_equal([2, 1, 0, 1], getcurpos()[1:])
" col number zero keeps the column
call cursor(3, 0)
- call assert_equal([3, 1, 0, 3], getcurpos()[1:])
+ call assert_equal([3, 1, 0, 1], getcurpos()[1:])
" below last line goes to last line
call cursor(9, 1)
- call assert_equal([4, 1, 0, 3], getcurpos()[1:])
+ call assert_equal([4, 1, 0, 1], getcurpos()[1:])
quit!
endfunc
+
+" Very short version of what matchparen does.
+function s:Highlight_Matching_Pair()
+ let save_cursor = getcurpos()
+ call setpos('.', save_cursor)
+endfunc
+
+func Test_curswant_with_autocommand()
+ new
+ call setline(1, ['func()', '{', '}', '----'])
+ autocmd! CursorMovedI * call s:Highlight_Matching_Pair()
+ call disable_char_avail_for_testing(1)
+ exe "normal! 3Ga\<Down>X\<Esc>"
+ call disable_char_avail_for_testing(0)
+ call assert_equal('-X---', getline(4))
+ autocmd! CursorMovedI *
+ quit!
+endfunc
+