aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/options.txt1
-rw-r--r--runtime/lua/vim/_meta/options.lua1
-rw-r--r--src/nvim/eval.c5
-rw-r--r--src/nvim/options.lua1
4 files changed, 8 insertions, 0 deletions
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index d94a9a131d..e734b62020 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -4024,6 +4024,7 @@ A jump table for the options with a short description can be found at |Q_op|.
Increasing this limit above 200 also changes the maximum for Ex
command recursion, see |E169|.
See also |:function|.
+ Also used for maximum depth of callback functions.
*'maxmapdepth'* *'mmd'* *E223*
'maxmapdepth' 'mmd' number (default 1000)
diff --git a/runtime/lua/vim/_meta/options.lua b/runtime/lua/vim/_meta/options.lua
index c0c4d7f8be..50146bac50 100644
--- a/runtime/lua/vim/_meta/options.lua
+++ b/runtime/lua/vim/_meta/options.lua
@@ -4035,6 +4035,7 @@ vim.go.mat = vim.go.matchtime
--- Increasing this limit above 200 also changes the maximum for Ex
--- command recursion, see `E169`.
--- See also `:function`.
+--- Also used for maximum depth of callback functions.
---
--- @type integer
vim.o.maxfuncdepth = 100
diff --git a/src/nvim/eval.c b/src/nvim/eval.c
index 74b1dbfb72..b5b40061b5 100644
--- a/src/nvim/eval.c
+++ b/src/nvim/eval.c
@@ -6064,6 +6064,11 @@ bool callback_call(Callback *const callback, const int argcount_in, typval_T *co
typval_T *const rettv)
FUNC_ATTR_NONNULL_ALL
{
+ if (callback_depth > p_mfd) {
+ emsg(_(e_command_too_recursive));
+ return false;
+ }
+
partial_T *partial;
char *name;
Array args = ARRAY_DICT_INIT;
diff --git a/src/nvim/options.lua b/src/nvim/options.lua
index f11fea85ca..ec8450ba17 100644
--- a/src/nvim/options.lua
+++ b/src/nvim/options.lua
@@ -5154,6 +5154,7 @@ return {
Increasing this limit above 200 also changes the maximum for Ex
command recursion, see |E169|.
See also |:function|.
+ Also used for maximum depth of callback functions.
]=],
full_name = 'maxfuncdepth',
scope = { 'global' },