0
0
mirror of https://github.com/vim/vim.git synced 2025-09-23 03:43:49 -04:00

patch 8.2.2316: Vim9: cannot list a lambda function

Problem:    Vim9: cannot list a lambda function.
Solution:   Support the <lambda>9 notation, like :disassemble. (closes #7634)
This commit is contained in:
Bram Moolenaar
2021-01-08 22:24:19 +01:00
parent 832ea89ca9
commit b657198cb3
3 changed files with 21 additions and 1 deletions

View File

@@ -1802,6 +1802,16 @@ def Test_line_continuation_in_lambda()
Line_continuation_in_lambda()->assert_equal(['D', 'C', 'B', 'A']) Line_continuation_in_lambda()->assert_equal(['D', 'C', 'B', 'A'])
enddef enddef
def Test_list_lambda()
timer_start(1000, (_) => 0)
var body = execute(timer_info()[0].callback
->string()
->substitute("('", ' ', '')
->substitute("')", '', '')
->substitute('function\zs', ' ', ''))
assert_match('def <lambda>\d\+(_: any, ...): number\n1 return 0\n enddef', body)
enddef
func Test_silent_echo() func Test_silent_echo()
CheckScreendump CheckScreendump

View File

@@ -3094,7 +3094,15 @@ define_function(exarg_T *eap, char_u *name_arg)
} }
else else
{ {
name = trans_function_name(&p, &is_global, eap->skip, if (STRNCMP(p, "<lambda>", 8) == 0)
{
p += 8;
(void)getdigits(&p);
name = vim_strnsave(eap->arg, p - eap->arg);
CLEAR_FIELD(fudi);
}
else
name = trans_function_name(&p, &is_global, eap->skip,
TFN_NO_AUTOLOAD, &fudi, NULL, NULL); TFN_NO_AUTOLOAD, &fudi, NULL, NULL);
paren = (vim_strchr(p, '(') != NULL); paren = (vim_strchr(p, '(') != NULL);
if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip) if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip)

View File

@@ -750,6 +750,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 */
/**/
2316,
/**/ /**/
2315, 2315,
/**/ /**/