aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzeertzjq <zeertzjq@outlook.com>2022-10-03 22:54:23 +0800
committerzeertzjq <zeertzjq@outlook.com>2022-10-04 07:16:40 +0800
commit0f2ead02c87400c87343e24f2687d64f527ad572 (patch)
treed49e3e8d2b2f4f0ce4c4698f822ab4bb502333c7
parent51d379d40d14d35ccb8e4038504d6c0cda9be62c (diff)
downloadrneovim-0f2ead02c87400c87343e24f2687d64f527ad572.tar.gz
rneovim-0f2ead02c87400c87343e24f2687d64f527ad572.tar.bz2
rneovim-0f2ead02c87400c87343e24f2687d64f527ad572.zip
vim-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 vim/vim#7634) https://github.com/vim/vim/commit/b657198cb30765468451d7f68fce49b5b4000c5d
-rw-r--r--src/nvim/eval/userfunc.c9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/nvim/eval/userfunc.c b/src/nvim/eval/userfunc.c
index 72d6a1394e..b0a56c4440 100644
--- a/src/nvim/eval/userfunc.c
+++ b/src/nvim/eval/userfunc.c
@@ -1983,7 +1983,14 @@ void ex_function(exarg_T *eap)
// s:func script-local function name
// g:func global function name, same as "func"
p = eap->arg;
- name = (char *)trans_function_name(&p, eap->skip, TFN_NO_AUTOLOAD, &fudi, NULL);
+ if (strncmp(p, "<lambda>", 8) == 0) {
+ p += 8;
+ (void)getdigits(&p, false, 0);
+ name = xstrndup(eap->arg, (size_t)(p - eap->arg));
+ CLEAR_FIELD(fudi);
+ } else {
+ name = (char *)trans_function_name(&p, eap->skip, TFN_NO_AUTOLOAD, &fudi, NULL);
+ }
paren = (vim_strchr(p, '(') != NULL);
if (name == NULL && (fudi.fd_dict == NULL || !paren) && !eap->skip) {
// Return on an invalid expression in braces, unless the expression