#if defined(FEAT_EVAL) || defined(PROTO)
void
-reset_last_used_map(void)
+reset_last_used_map(mapblock_T *mp)
{
- last_used_map = NULL;
+ if (last_used_map == mp)
+ last_used_map = NULL;
}
#endif
*mpp = mp->m_next;
vim_free(mp);
#ifdef FEAT_EVAL
- reset_last_used_map();
+ reset_last_used_map(mp);
#endif
}
int fix_input_buffer(char_u *buf, int len);
int input_available(void);
int do_cmdkey_command(int key, int flags);
-void reset_last_used_map(void);
+void reset_last_used_map(mapblock_T *mp);
/* vim: set ft=c : */
unlet g:func_called
endfunc
+func Test_map_script_cmd_survives_unmap()
+ let lines =<< trim END
+ vim9script
+ var n = 123
+ nnoremap <F4> <ScriptCmd><CR>
+ autocmd CmdlineEnter * silent! nunmap <F4>
+ nnoremap <F3> :<ScriptCmd>eval setbufvar(bufnr(), "result", n)<CR>
+ feedkeys("\<F3>\<CR>", 'xct')
+ assert_equal(123, b:result)
+ END
+ call CheckScriptSuccess(lines)
+
+ nunmap <F3>
+ unlet b:result
+endfunc
+
" Test for using <script> with a map to remap characters in rhs
func Test_script_local_remap()
new
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 4148,
/**/
4147,
/**/