forked from aniani/vim
patch 9.0.1442: mapset() does not restore non-script context
Problem: mapset() does not restore non-script context. Solution: Also accept negative sid. (closes #12132)
This commit is contained in:
@@ -227,7 +227,7 @@ map_add(
|
|||||||
int is_abbr,
|
int is_abbr,
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
int expr,
|
int expr,
|
||||||
scid_T sid, // -1 to use current_sctx
|
scid_T sid, // 0 to use current_sctx
|
||||||
int scriptversion,
|
int scriptversion,
|
||||||
linenr_T lnum,
|
linenr_T lnum,
|
||||||
#endif
|
#endif
|
||||||
@@ -266,7 +266,7 @@ map_add(
|
|||||||
mp->m_simplified = simplified;
|
mp->m_simplified = simplified;
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
mp->m_expr = expr;
|
mp->m_expr = expr;
|
||||||
if (sid > 0)
|
if (sid != 0)
|
||||||
{
|
{
|
||||||
mp->m_script_ctx.sc_sid = sid;
|
mp->m_script_ctx.sc_sid = sid;
|
||||||
mp->m_script_ctx.sc_lnum = lnum;
|
mp->m_script_ctx.sc_lnum = lnum;
|
||||||
@@ -924,7 +924,7 @@ do_map(
|
|||||||
if (map_add(map_table, abbr_table, keys, rhs, orig_rhs,
|
if (map_add(map_table, abbr_table, keys, rhs, orig_rhs,
|
||||||
noremap, nowait, silent, mode, abbrev,
|
noremap, nowait, silent, mode, abbrev,
|
||||||
#ifdef FEAT_EVAL
|
#ifdef FEAT_EVAL
|
||||||
expr, /* sid */ -1, /* scriptversion */ 0, /* lnum */ 0,
|
expr, /* sid */ 0, /* scriptversion */ 0, /* lnum */ 0,
|
||||||
#endif
|
#endif
|
||||||
keyround1_simplified) == FAIL)
|
keyround1_simplified) == FAIL)
|
||||||
{
|
{
|
||||||
|
@@ -1,6 +1,8 @@
|
|||||||
" Tests for maparg(), mapcheck(), mapset(), maplist()
|
" Tests for maparg(), mapcheck(), mapset(), maplist()
|
||||||
" Also test utf8 map with a 0x80 byte.
|
" Also test utf8 map with a 0x80 byte.
|
||||||
|
|
||||||
|
source shared.vim
|
||||||
|
|
||||||
func s:SID()
|
func s:SID()
|
||||||
return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
|
return str2nr(matchstr(expand('<sfile>'), '<SNR>\zs\d\+\ze_SID$'))
|
||||||
endfunc
|
endfunc
|
||||||
@@ -490,7 +492,28 @@ func Test_map_restore()
|
|||||||
call Check_ctrlb_map(dsimp, 0)
|
call Check_ctrlb_map(dsimp, 0)
|
||||||
|
|
||||||
nunmap <C-B>
|
nunmap <C-B>
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
" Test restoring the script context of a mapping
|
||||||
|
func Test_map_restore_sid()
|
||||||
|
let after =<< trim [CODE]
|
||||||
|
call assert_equal("\tLast set from --cmd argument",
|
||||||
|
\ execute('verbose nmap ,n')->trim()->split("\n")[-1])
|
||||||
|
let d = maparg(',n', 'n', 0, 1)
|
||||||
|
nunmap ,n
|
||||||
|
call assert_equal('No mapping found',
|
||||||
|
\ execute('verbose nmap ,n')->trim()->split("\n")[-1])
|
||||||
|
call mapset('n', 0, d)
|
||||||
|
call assert_equal("\tLast set from --cmd argument",
|
||||||
|
\ execute('verbose nmap ,n')->trim()->split("\n")[-1])
|
||||||
|
call writefile(v:errors, 'Xresult')
|
||||||
|
qall!
|
||||||
|
[CODE]
|
||||||
|
|
||||||
|
if RunVim([], after, '--clean --cmd "nmap ,n <Nop>"')
|
||||||
|
call assert_equal([], readfile('Xresult'))
|
||||||
|
endif
|
||||||
|
call delete('Xresult')
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
def Test_maplist()
|
def Test_maplist()
|
||||||
|
@@ -695,6 +695,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 */
|
||||||
|
/**/
|
||||||
|
1442,
|
||||||
/**/
|
/**/
|
||||||
1441,
|
1441,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user