mirror of
https://github.com/vim/vim.git
synced 2025-10-02 05:04:20 -04:00
patch 8.2.4148: deleting any mapping may cause <ScritpCmd> to fail
Problem: Deleting any mapping may cause <ScritpCmd> to not set the script context. Solution: Only reset last_used_map if it is the deleted mapping. (closes #9568)
This commit is contained in:
@@ -3836,8 +3836,9 @@ do_cmdkey_command(int key UNUSED, int flags)
|
||||
|
||||
#if defined(FEAT_EVAL) || defined(PROTO)
|
||||
void
|
||||
reset_last_used_map(void)
|
||||
reset_last_used_map(mapblock_T *mp)
|
||||
{
|
||||
if (last_used_map == mp)
|
||||
last_used_map = NULL;
|
||||
}
|
||||
#endif
|
||||
|
@@ -86,7 +86,7 @@ map_free(mapblock_T **mpp)
|
||||
*mpp = mp->m_next;
|
||||
vim_free(mp);
|
||||
#ifdef FEAT_EVAL
|
||||
reset_last_used_map();
|
||||
reset_last_used_map(mp);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@@ -53,5 +53,5 @@ void vungetc(int c);
|
||||
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 : */
|
||||
|
@@ -1439,6 +1439,22 @@ func Test_map_script_cmd_finds_func()
|
||||
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
|
||||
|
@@ -750,6 +750,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
4148,
|
||||
/**/
|
||||
4147,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user