mirror of
https://github.com/vim/vim.git
synced 2025-09-25 03:54:15 -04:00
patch 8.2.3829: no error when setting a func option to script-local function
Problem: No error when setting a func option to a script-local function. Solution: Give an error if the name starts with "s:". (closes #9358)
This commit is contained in:
@@ -7199,6 +7199,9 @@ option_set_callback_func(char_u *optval UNUSED, callback_T *optcb UNUSED)
|
|||||||
return OK;
|
return OK;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (STRNCMP(optval, "s:", 2) == 0 && !SCRIPT_ID_VALID(current_sctx.sc_sid))
|
||||||
|
return FAIL;
|
||||||
|
|
||||||
if (*optval == '{' || (in_vim9script() && *optval == '(')
|
if (*optval == '{' || (in_vim9script() && *optval == '(')
|
||||||
|| (STRNCMP(optval, "function(", 9) == 0)
|
|| (STRNCMP(optval, "function(", 9) == 0)
|
||||||
|| (STRNCMP(optval, "funcref(", 8) == 0))
|
|| (STRNCMP(optval, "funcref(", 8) == 0))
|
||||||
|
6
src/testdir/dumps/Test_set_tagfunc_on_cmdline.dump
Normal file
6
src/testdir/dumps/Test_set_tagfunc_on_cmdline.dump
Normal file
@@ -0,0 +1,6 @@
|
|||||||
|
| +0&#ffffff0@74
|
||||||
|
@75
|
||||||
|
@75
|
||||||
|
|E+0#ffffff16#e000002|r@1|o|r| |d|e|t|e|c|t|e|d| |w|h|i|l|e| |p|r|o|c|e|s@1|i|n|g| |c|o|m@1|a|n|d| |l|i|n|e|:| +0#0000000#ffffff0@29
|
||||||
|
|E+0#ffffff16#e000002|4|7|4|:| |I|n|v|a|l|i|d| |a|r|g|u|m|e|n|t|:| |t|a|g|f|u|n|c|=|s|:|F|u|n|c| +0#0000000#ffffff0@36
|
||||||
|
|P+0#00e0003&|r|e|s@1| |E|N|T|E|R| |o|r| |t|y|p|e| |c|o|m@1|a|n|d| |t|o| |c|o|n|t|i|n|u|e> +0#0000000&@35
|
@@ -1,6 +1,8 @@
|
|||||||
" Test 'tagfunc'
|
" Test 'tagfunc'
|
||||||
|
|
||||||
source vim9.vim
|
source vim9.vim
|
||||||
|
source check.vim
|
||||||
|
source screendump.vim
|
||||||
|
|
||||||
func TagFunc(pat, flag, info)
|
func TagFunc(pat, flag, info)
|
||||||
let g:tagfunc_args = [a:pat, a:flag, a:info]
|
let g:tagfunc_args = [a:pat, a:flag, a:info]
|
||||||
@@ -342,4 +344,13 @@ func Test_tagfunc_callback()
|
|||||||
%bw!
|
%bw!
|
||||||
endfunc
|
endfunc
|
||||||
|
|
||||||
|
func Test_set_tagfunc_on_cmdline()
|
||||||
|
CheckScreendump
|
||||||
|
|
||||||
|
let buf = RunVimInTerminal(' +"set tagfunc=s:Func"', #{rows: 6, wait_for_ruler: 0})
|
||||||
|
call VerifyScreenDump(buf, 'Test_set_tagfunc_on_cmdline', {})
|
||||||
|
call StopVimInTerminal(buf)
|
||||||
|
endfunc
|
||||||
|
|
||||||
|
|
||||||
" vim: shiftwidth=2 sts=2 expandtab
|
" vim: shiftwidth=2 sts=2 expandtab
|
||||||
|
@@ -749,6 +749,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 */
|
||||||
|
/**/
|
||||||
|
3829,
|
||||||
/**/
|
/**/
|
||||||
3828,
|
3828,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user