# HG changeset patch # User Bram Moolenaar # Date 1556978405 -7200 # Node ID 9484fc00ac6b7d885abf9a34d79ac70c0da281f1 # Parent c4a98e19390b28a9122bfcce8659548f4709dd9d patch 8.1.1262: cannot simulate a mouse click in a test commit https://github.com/vim/vim/commit/bb8476be871811e40ddc88c598d9e553aba7fb79 Author: Bram Moolenaar Date: Sat May 4 15:47:48 2019 +0200 patch 8.1.1262: cannot simulate a mouse click in a test Problem: Cannot simulate a mouse click in a test. Solution: Add test_setmouse(). diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -2700,6 +2700,7 @@ test_override({expr}, {val}) none test w test_refcount({expr}) Number get the reference count of {expr} test_scrollbar({which}, {value}, {dragging}) none scroll in the GUI for testing +test_setmouse({row}, {col}) none set the mouse position for testing test_settime({expr}) none set current time for testing timer_info([{id}]) List information about timers timer_pause({id}, {pause}) none pause or unpause a timer @@ -9841,6 +9842,13 @@ test_scrollbar({which}, {value}, {draggi Only works when the {which} scrollbar actually exists, obviously only when using the GUI. +test_setmouse({row}, {col}) *test_setmouse()* + Set the mouse position to be used for the next mouse action. + {row} and {col} are one based. + For example: > + call test_setmouse(4, 20) + call feedkeys("\", "xt") + test_settime({expr}) *test_settime()* Set the time Vim uses internally. Currently only used for timestamps in the history, as they are used in viminfo, and diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt --- a/runtime/doc/usr_41.txt +++ b/runtime/doc/usr_41.txt @@ -1,4 +1,4 @@ -*usr_41.txt* For Vim version 8.1. Last change: 2019 Apr 06 +*usr_41.txt* For Vim version 8.1. Last change: 2019 May 04 VIM USER MANUAL - by Bram Moolenaar @@ -955,6 +955,7 @@ Testing: *test-functions* test_null_partial() return a null Partial function test_null_string() return a null String test_settime() set the time Vim uses internally + test_setmouse() set the mouse position test_feedinput() add key sequence to input buffer test_option_not_set() reset flag indicating option was set test_scrollbar() simulate scrollbar movement in the GUI diff --git a/src/evalfunc.c b/src/evalfunc.c --- a/src/evalfunc.c +++ b/src/evalfunc.c @@ -456,6 +456,7 @@ static void f_test_null_string(typval_T #ifdef FEAT_GUI static void f_test_scrollbar(typval_T *argvars, typval_T *rettv); #endif +static void f_test_setmouse(typval_T *argvars, typval_T *rettv); static void f_test_settime(typval_T *argvars, typval_T *rettv); #ifdef FEAT_FLOAT static void f_tan(typval_T *argvars, typval_T *rettv); @@ -993,6 +994,7 @@ static struct fst #ifdef FEAT_GUI {"test_scrollbar", 3, 3, f_test_scrollbar}, #endif + {"test_setmouse", 2, 2, f_test_setmouse}, {"test_settime", 1, 1, f_test_settime}, #ifdef FEAT_TIMERS {"timer_info", 0, 1, f_timer_info}, @@ -14494,6 +14496,13 @@ f_test_scrollbar(typval_T *argvars, typv #endif static void +f_test_setmouse(typval_T *argvars, typval_T *rettv UNUSED) +{ + mouse_row = (time_t)tv_get_number(&argvars[0]) - 1; + mouse_col = (time_t)tv_get_number(&argvars[1]) - 1; +} + + static void f_test_settime(typval_T *argvars, typval_T *rettv UNUSED) { time_for_testing = (time_t)tv_get_number(&argvars[0]); diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1262, +/**/ 1261, /**/ 1260,