Patch 7.4.1300
Problem: Cannot test CursorMovedI because there is typeahead.
Solution: Add disable_char_avail_for_testing().
Files: src/eval.c, src/getchar.c, src/globals.h,
src/testdir/test_cursor_func.vim, src/testdir/README.txt
*** ../vim-7.4.1299/src/eval.c 2016-02-09 20:39:21.684933663 +0100
--- src/eval.c 2016-02-10 22:15:17.201532242 +0100
***************
*** 532,537 ****
--- 532,538 ----
static void f_did_filetype(typval_T *argvars, typval_T *rettv);
static void f_diff_filler(typval_T *argvars, typval_T *rettv);
static void f_diff_hlID(typval_T *argvars, typval_T *rettv);
+ static void f_disable_char_avail_for_testing(typval_T *argvars, typval_T
*rettv);
static void f_empty(typval_T *argvars, typval_T *rettv);
static void f_escape(typval_T *argvars, typval_T *rettv);
static void f_eval(typval_T *argvars, typval_T *rettv);
***************
*** 8111,8116 ****
--- 8112,8118 ----
{"did_filetype", 0, 0, f_did_filetype},
{"diff_filler", 1, 1, f_diff_filler},
{"diff_hlID", 2, 2, f_diff_hlID},
+ {"disable_char_avail_for_testing", 1, 1,
f_disable_char_avail_for_testing},
{"empty", 1, 1, f_empty},
{"escape", 2, 2, f_escape},
{"eval", 1, 1, f_eval},
***************
*** 10606,10611 ****
--- 10608,10622 ----
}
/*
+ * "disable_char_avail_for_testing({expr})" function
+ */
+ static void
+ f_disable_char_avail_for_testing(typval_T *argvars, typval_T *rettv UNUSED)
+ {
+ disable_char_avail_for_testing = get_tv_number(&argvars[0]);
+ }
+
+ /*
* "empty({expr})" function
*/
static void
***************
*** 12449,12456 ****
--- 12460,12470 ----
#endif
(varnumber_T)0);
if (getcurpos)
+ {
+ update_curswant();
list_append_number(l, curwin->w_curswant == MAXCOL ?
(varnumber_T)MAXCOL : (varnumber_T)curwin->w_curswant + 1);
+ }
}
else
rettv->vval.v_number = FALSE;
*** ../vim-7.4.1299/src/getchar.c 2016-01-31 18:08:30.279202960 +0100
--- src/getchar.c 2016-02-10 22:05:39.263644140 +0100
***************
*** 1888,1893 ****
--- 1888,1899 ----
{
int retval;
+ #ifdef FEAT_EVAL
+ /* When disable_char_avail_for_testing(1) was called pretend there is no
+ * typeahead. */
+ if (disable_char_avail_for_testing)
+ return FALSE;
+ #endif
++no_mapping;
retval = vpeekc();
--no_mapping;
*** ../vim-7.4.1299/src/globals.h 2016-01-31 14:55:35.231538430 +0100
--- src/globals.h 2016-02-10 22:05:17.279876692 +0100
***************
*** 1621,1626 ****
--- 1621,1628 ----
EXTERN int alloc_fail_countdown INIT(= -1);
/* set by alloc_fail(), number of times alloc() returns NULL */
EXTERN int alloc_fail_repeat INIT(= 0);
+
+ EXTERN int disable_char_avail_for_testing INIT(= 0);
#endif
/*
*** ../vim-7.4.1299/src/testdir/test_cursor_func.vim 2016-01-15
15:37:16.975521267 +0100
--- src/testdir/test_cursor_func.vim 2016-02-10 22:14:30.510025903 +0100
***************
*** 20,35 ****
call assert_equal([4, 3, 0, 3], getcurpos()[1:])
call cursor(2, 2)
! call assert_equal([2, 2, 0, 3], getcurpos()[1:])
" line number zero keeps the line number
call cursor(0, 1)
! call assert_equal([2, 1, 0, 3], getcurpos()[1:])
" col number zero keeps the column
call cursor(3, 0)
! call assert_equal([3, 1, 0, 3], getcurpos()[1:])
" below last line goes to last line
call cursor(9, 1)
! call assert_equal([4, 1, 0, 3], getcurpos()[1:])
quit!
endfunc
--- 20,54 ----
call assert_equal([4, 3, 0, 3], getcurpos()[1:])
call cursor(2, 2)
! 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, 1], getcurpos()[1:])
" col number zero keeps the column
call cursor(3, 0)
! 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, 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
+
*** ../vim-7.4.1299/src/testdir/README.txt 2016-01-07 22:00:57.805984639
+0100
--- src/testdir/README.txt 2016-02-10 22:20:53.417971574 +0100
***************
*** 25,30 ****
--- 25,33 ----
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:
*** ../vim-7.4.1299/src/version.c 2016-02-10 21:07:09.016869231 +0100
--- src/version.c 2016-02-10 21:58:36.880113173 +0100
***************
*** 749,750 ****
--- 749,752 ----
{ /* Add new patch number below this line */
+ /**/
+ 1300,
/**/
--
hundred-and-one symptoms of being an internet addict:
217. Your sex life has drastically improved...so what if it's only cyber-sex!
/// Bram Moolenaar -- [email protected] -- http://www.Moolenaar.net \\\
/// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
\\\ an exciting new programming language -- http://www.Zimbu.org ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
--
--
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.