mirror of
https://github.com/vim/vim.git
synced 2025-09-23 03:43:49 -04:00
patch 7.4.1533
Problem: Using feedkeys() with an empty string disregards 'x' option. Solution: Make 'x' work with an empty string. (Thinca)
This commit is contained in:
25
src/eval.c
25
src/eval.c
@@ -11839,24 +11839,25 @@ f_feedkeys(typval_T *argvars, typval_T *rettv UNUSED)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
keys = get_tv_string(&argvars[0]);
|
keys = get_tv_string(&argvars[0]);
|
||||||
if (*keys != NUL)
|
|
||||||
|
if (argvars[1].v_type != VAR_UNKNOWN)
|
||||||
{
|
{
|
||||||
if (argvars[1].v_type != VAR_UNKNOWN)
|
flags = get_tv_string_buf(&argvars[1], nbuf);
|
||||||
|
for ( ; *flags != NUL; ++flags)
|
||||||
{
|
{
|
||||||
flags = get_tv_string_buf(&argvars[1], nbuf);
|
switch (*flags)
|
||||||
for ( ; *flags != NUL; ++flags)
|
|
||||||
{
|
{
|
||||||
switch (*flags)
|
case 'n': remap = FALSE; break;
|
||||||
{
|
case 'm': remap = TRUE; break;
|
||||||
case 'n': remap = FALSE; break;
|
case 't': typed = TRUE; break;
|
||||||
case 'm': remap = TRUE; break;
|
case 'i': insert = TRUE; break;
|
||||||
case 't': typed = TRUE; break;
|
case 'x': execute = TRUE; break;
|
||||||
case 'i': insert = TRUE; break;
|
|
||||||
case 'x': execute = TRUE; break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (*keys != NUL || execute)
|
||||||
|
{
|
||||||
/* Need to escape K_SPECIAL and CSI before putting the string in the
|
/* Need to escape K_SPECIAL and CSI before putting the string in the
|
||||||
* typeahead buffer. */
|
* typeahead buffer. */
|
||||||
keys_esc = vim_strsave_escape_csi(keys);
|
keys_esc = vim_strsave_escape_csi(keys);
|
||||||
|
@@ -5,6 +5,7 @@ source test_backspace_opt.vim
|
|||||||
source test_cursor_func.vim
|
source test_cursor_func.vim
|
||||||
source test_delete.vim
|
source test_delete.vim
|
||||||
source test_expand.vim
|
source test_expand.vim
|
||||||
|
source test_feedkeys.vim
|
||||||
source test_file_perm.vim
|
source test_file_perm.vim
|
||||||
source test_glob2regpat.vim
|
source test_glob2regpat.vim
|
||||||
source test_join.vim
|
source test_join.vim
|
||||||
|
10
src/testdir/test_feedkeys.vim
Normal file
10
src/testdir/test_feedkeys.vim
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
" Test feedkeys() function.
|
||||||
|
|
||||||
|
func Test_feedkeys_x_with_empty_string()
|
||||||
|
new
|
||||||
|
call feedkeys("ifoo\<Esc>")
|
||||||
|
call assert_equal('', getline('.'))
|
||||||
|
call feedkeys('', 'x')
|
||||||
|
call assert_equal('foo', getline('.'))
|
||||||
|
quit!
|
||||||
|
endfunc
|
@@ -743,6 +743,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 */
|
||||||
|
/**/
|
||||||
|
1533,
|
||||||
/**/
|
/**/
|
||||||
1532,
|
1532,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user