Patch 8.2.4107

6 views
Skip to first unread message

Bram Moolenaar

unread,
Jan 16, 2022, 8:32:30 AM1/16/22
to vim...@googlegroups.com

Patch 8.2.4107
Problem: Script context not restored after using <ScriptCmd>.
Solution: Also restore context when not in a script. (closes #9536)
Add the 'c' flag to feedkeys() to be able to test this.
Files: runtime/doc/builtin.txt, src/getchar.c, src/evalfunc.c,
src/testdir/test_mapping.vim


*** ../vim-8.2.4106/runtime/doc/builtin.txt 2022-01-10 13:36:31.260892426 +0000
--- runtime/doc/builtin.txt 2022-01-16 13:22:02.786692066 +0000
***************
*** 2394,2399 ****
--- 2394,2402 ----
Note that if you manage to call feedkeys() while
executing commands, thus calling it recursively, then
all typeahead will be consumed by the last call.
+ 'c' Remove any script context when executing, so that
+ legacy script syntax applies, "s:var" does not work,
+ etc.
'!' When used with 'x' will not end Insert mode. Can be
used in a test when a timer is set to exit Insert mode
a little later. Useful for testing CursorHoldI.
*** ../vim-8.2.4106/src/getchar.c 2022-01-15 18:48:28.602361973 +0000
--- src/getchar.c 2022-01-16 13:29:19.257823117 +0000
***************
*** 3797,3803 ****
}
}
else
! ga_append(&line_ga, (char)c1);

cmod = 0;
}
--- 3797,3803 ----
}
}
else
! ga_append(&line_ga, c1);

cmod = 0;
}
***************
*** 3815,3821 ****
{
int res;
#ifdef FEAT_EVAL
! sctx_T save_current_sctx = {0, 0, 0, 0};

if (key == K_SCRIPT_COMMAND && last_used_map != NULL)
{
--- 3815,3821 ----
{
int res;
#ifdef FEAT_EVAL
! sctx_T save_current_sctx = {-1, 0, 0, 0};

if (key == K_SCRIPT_COMMAND && last_used_map != NULL)
{
***************
*** 3827,3833 ****
res = do_cmdline(NULL, getcmdkeycmd, NULL, flags);

#ifdef FEAT_EVAL
! if (save_current_sctx.sc_sid > 0)
current_sctx = save_current_sctx;
#endif

--- 3827,3833 ----
res = do_cmdline(NULL, getcmdkeycmd, NULL, flags);

#ifdef FEAT_EVAL
! if (save_current_sctx.sc_sid >= 0)
current_sctx = save_current_sctx;
#endif

*** ../vim-8.2.4106/src/evalfunc.c 2022-01-13 21:15:17.237958552 +0000
--- src/evalfunc.c 2022-01-16 13:24:22.010406837 +0000
***************
*** 3932,3937 ****
--- 3932,3938 ----
char_u nbuf[NUMBUFLEN];
int typed = FALSE;
int execute = FALSE;
+ int context = FALSE;
int dangerous = FALSE;
int lowlevel = FALSE;
char_u *keys_esc;
***************
*** 3961,3966 ****
--- 3962,3968 ----
case 't': typed = TRUE; break;
case 'i': insert = TRUE; break;
case 'x': execute = TRUE; break;
+ case 'c': context = TRUE; break;
case '!': dangerous = TRUE; break;
case 'L': lowlevel = TRUE; break;
}
***************
*** 4007,4017 ****

if (execute)
{
! int save_msg_scroll = msg_scroll;

// Avoid a 1 second delay when the keys start Insert mode.
msg_scroll = FALSE;

if (!dangerous)
{
++ex_normal_busy;
--- 4009,4027 ----

if (execute)
{
! int save_msg_scroll = msg_scroll;
! sctx_T save_sctx;

// Avoid a 1 second delay when the keys start Insert mode.
msg_scroll = FALSE;

+ if (context)
+ {
+ save_sctx = current_sctx;
+ current_sctx.sc_sid = 0;
+ current_sctx.sc_version = 0;
+ }
+
if (!dangerous)
{
++ex_normal_busy;
***************
*** 4025,4030 ****
--- 4035,4043 ----
}

msg_scroll |= save_msg_scroll;
+
+ if (context)
+ current_sctx = save_sctx;
}
}
}
*** ../vim-8.2.4106/src/testdir/test_mapping.vim 2022-01-13 15:25:28.222535371 +0000
--- src/testdir/test_mapping.vim 2022-01-16 13:28:26.785924258 +0000
***************
*** 4,9 ****
--- 4,10 ----
source check.vim
source screendump.vim
source term_util.vim
+ source vim9.vim

func Test_abbreviation()
" abbreviation with 0x80 should work
***************
*** 1397,1402 ****
--- 1398,1416 ----
ounmap i-
endfunc

+ func Test_map_script_cmd_restore()
+ let lines =<< trim END
+ vim9script
+ nnoremap <F3> <ScriptCmd>eval 1 + 2<CR>
+ END
+ call CheckScriptSuccess(lines)
+ call feedkeys("\<F3>:let g:result = 3+4\<CR>", 'xtc')
+ call assert_equal(7, g:result)
+
+ nunmap <F3>
+ unlet g:result
+ endfunc
+
" Test for using <script> with a map to remap characters in rhs
func Test_script_local_remap()
new
*** ../vim-8.2.4106/src/version.c 2022-01-16 11:42:16.180527699 +0000
--- src/version.c 2022-01-16 12:32:42.549356905 +0000
***************
*** 752,753 ****
--- 752,755 ----
{ /* Add new patch number below this line */
+ /**/
+ 4107,
/**/

--
ARTHUR: Will you ask your master if he wants to join my court at Camelot?!
GUARD #1: But then of course African swallows are not migratory.
GUARD #2: Oh, yeah...
GUARD #1: So they couldn't bring a coconut back anyway...
The Quest for the Holy Grail (Monty Python)

/// Bram Moolenaar -- Br...@Moolenaar.net -- http://www.Moolenaar.net \\\
/// \\\
\\\ sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ ///
\\\ help me help AIDS victims -- http://ICCF-Holland.org ///
Reply all
Reply to author
Forward
0 new messages