forked from aniani/vim
patch 8.0.1048: no test for what 8.0.1020 fixes
Problem: No test for what 8.0.1020 fixes. Solution: Add test_feedinput(). Add a test. (Ozaki Kiichi, closes #2046)
This commit is contained in:
@@ -2410,6 +2410,7 @@ term_wait({buf} [, {time}]) Number wait for screen to be updated
|
|||||||
test_alloc_fail({id}, {countdown}, {repeat})
|
test_alloc_fail({id}, {countdown}, {repeat})
|
||||||
none make memory allocation fail
|
none make memory allocation fail
|
||||||
test_autochdir() none enable 'autochdir' during startup
|
test_autochdir() none enable 'autochdir' during startup
|
||||||
|
test_feedinput() none add key sequence to input buffer
|
||||||
test_garbagecollect_now() none free memory right now for testing
|
test_garbagecollect_now() none free memory right now for testing
|
||||||
test_ignore_error({expr}) none ignore a specific error
|
test_ignore_error({expr}) none ignore a specific error
|
||||||
test_null_channel() Channel null value for testing
|
test_null_channel() Channel null value for testing
|
||||||
@@ -8196,6 +8197,11 @@ test_autochdir() *test_autochdir()*
|
|||||||
Set a flag to enable the effect of 'autochdir' before Vim
|
Set a flag to enable the effect of 'autochdir' before Vim
|
||||||
startup has finished.
|
startup has finished.
|
||||||
|
|
||||||
|
test_feedinput({string}) *test_feedinput()*
|
||||||
|
Characters in {string} are queued for processing as if they
|
||||||
|
were typed by the user. This uses a low level input buffer.
|
||||||
|
This function works only when with |+unix| or GUI is running.
|
||||||
|
|
||||||
test_garbagecollect_now() *test_garbagecollect_now()*
|
test_garbagecollect_now() *test_garbagecollect_now()*
|
||||||
Like garbagecollect(), but executed right away. This must
|
Like garbagecollect(), but executed right away. This must
|
||||||
only be called directly to avoid any structure to exist
|
only be called directly to avoid any structure to exist
|
||||||
|
@@ -393,6 +393,7 @@ static void f_tagfiles(typval_T *argvars, typval_T *rettv);
|
|||||||
static void f_tempname(typval_T *argvars, typval_T *rettv);
|
static void f_tempname(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv);
|
static void f_test_alloc_fail(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_test_autochdir(typval_T *argvars, typval_T *rettv);
|
static void f_test_autochdir(typval_T *argvars, typval_T *rettv);
|
||||||
|
static void f_test_feedinput(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_test_override(typval_T *argvars, typval_T *rettv);
|
static void f_test_override(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv);
|
static void f_test_garbagecollect_now(typval_T *argvars, typval_T *rettv);
|
||||||
static void f_test_ignore_error(typval_T *argvars, typval_T *rettv);
|
static void f_test_ignore_error(typval_T *argvars, typval_T *rettv);
|
||||||
@@ -851,6 +852,7 @@ static struct fst
|
|||||||
#endif
|
#endif
|
||||||
{"test_alloc_fail", 3, 3, f_test_alloc_fail},
|
{"test_alloc_fail", 3, 3, f_test_alloc_fail},
|
||||||
{"test_autochdir", 0, 0, f_test_autochdir},
|
{"test_autochdir", 0, 0, f_test_autochdir},
|
||||||
|
{"test_feedinput", 1, 1, f_test_feedinput},
|
||||||
{"test_garbagecollect_now", 0, 0, f_test_garbagecollect_now},
|
{"test_garbagecollect_now", 0, 0, f_test_garbagecollect_now},
|
||||||
{"test_ignore_error", 1, 1, f_test_ignore_error},
|
{"test_ignore_error", 1, 1, f_test_ignore_error},
|
||||||
#ifdef FEAT_JOB_CHANNEL
|
#ifdef FEAT_JOB_CHANNEL
|
||||||
@@ -12517,6 +12519,23 @@ f_test_autochdir(typval_T *argvars UNUSED, typval_T *rettv UNUSED)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* "test_feedinput()"
|
||||||
|
*/
|
||||||
|
static void
|
||||||
|
f_test_feedinput(typval_T *argvars, typval_T *rettv UNUSED)
|
||||||
|
{
|
||||||
|
#ifdef USE_INPUT_BUF
|
||||||
|
char_u *val = get_tv_string_chk(&argvars[0]);
|
||||||
|
|
||||||
|
if (val != NULL)
|
||||||
|
{
|
||||||
|
trash_input_buf();
|
||||||
|
add_to_input_buf_csi(val, (int)STRLEN(val));
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* "test_disable({name}, {val})" function
|
* "test_disable({name}, {val})" function
|
||||||
*/
|
*/
|
||||||
|
@@ -206,5 +206,24 @@ func Test_timer_errors()
|
|||||||
call assert_equal(3, g:call_count)
|
call assert_equal(3, g:call_count)
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func FeedAndPeek(timer)
|
||||||
|
call test_feedinput('a')
|
||||||
|
call getchar(1)
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Interrupt(timer)
|
||||||
|
call test_feedinput("\<C-C>")
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
func Test_peek_and_get_char()
|
||||||
|
if !has('unix') && !has('gui_running')
|
||||||
|
return
|
||||||
|
endif
|
||||||
|
call timer_start(0, 'FeedAndPeek')
|
||||||
|
let intr = timer_start(100, 'Interrupt')
|
||||||
|
let c = getchar()
|
||||||
|
call assert_equal(char2nr('a'), c)
|
||||||
|
call timer_stop(intr)
|
||||||
|
endfunc
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
15
src/ui.c
15
src/ui.c
@@ -1651,11 +1651,6 @@ set_input_buf(char_u *p)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(FEAT_GUI) \
|
|
||||||
|| defined(FEAT_MOUSE_GPM) || defined(FEAT_SYSMOUSE) \
|
|
||||||
|| defined(FEAT_XCLIPBOARD) || defined(VMS) \
|
|
||||||
|| defined(FEAT_CLIENTSERVER) \
|
|
||||||
|| defined(PROTO)
|
|
||||||
/*
|
/*
|
||||||
* Add the given bytes to the input buffer
|
* Add the given bytes to the input buffer
|
||||||
* Special keys start with CSI. A real CSI must have been translated to
|
* Special keys start with CSI. A real CSI must have been translated to
|
||||||
@@ -1676,15 +1671,7 @@ add_to_input_buf(char_u *s, int len)
|
|||||||
while (len--)
|
while (len--)
|
||||||
inbuf[inbufcount++] = *s++;
|
inbuf[inbufcount++] = *s++;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if ((defined(FEAT_XIM) || defined(FEAT_DND)) && defined(FEAT_GUI_GTK)) \
|
|
||||||
|| defined(FEAT_GUI_MSWIN) \
|
|
||||||
|| defined(FEAT_GUI_MAC) \
|
|
||||||
|| (defined(FEAT_MBYTE) && defined(FEAT_MBYTE_IME)) \
|
|
||||||
|| (defined(FEAT_GUI) && (!defined(USE_ON_FLY_SCROLL) \
|
|
||||||
|| defined(FEAT_MENU))) \
|
|
||||||
|| defined(PROTO)
|
|
||||||
/*
|
/*
|
||||||
* Add "str[len]" to the input buffer while escaping CSI bytes.
|
* Add "str[len]" to the input buffer while escaping CSI bytes.
|
||||||
*/
|
*/
|
||||||
@@ -1706,7 +1693,6 @@ add_to_input_buf_csi(char_u *str, int len)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(FEAT_HANGULIN) || defined(PROTO)
|
#if defined(FEAT_HANGULIN) || defined(PROTO)
|
||||||
void
|
void
|
||||||
@@ -1744,7 +1730,6 @@ trash_input_buf(void)
|
|||||||
/*
|
/*
|
||||||
* Read as much data from the input buffer as possible up to maxlen, and store
|
* Read as much data from the input buffer as possible up to maxlen, and store
|
||||||
* it in buf.
|
* it in buf.
|
||||||
* Note: this function used to be Read() in unix.c
|
|
||||||
*/
|
*/
|
||||||
int
|
int
|
||||||
read_from_input_buf(char_u *buf, long maxlen)
|
read_from_input_buf(char_u *buf, long maxlen)
|
||||||
|
@@ -769,6 +769,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1048,
|
||||||
/**/
|
/**/
|
||||||
1047,
|
1047,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user