0
0
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:
Bram Moolenaar
2016-03-10 22:19:53 +01:00
parent 7bffaa9f9b
commit 74c5bbf134
4 changed files with 26 additions and 12 deletions

View File

@@ -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);

View File

@@ -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

View 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

View File

@@ -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,
/**/ /**/