summaryrefslogtreecommitdiff
path: root/src/userfunc.c
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2019-06-01 13:28:35 +0200
committerBram Moolenaar <Bram@vim.org>2019-06-01 13:28:35 +0200
commit3a97bb3f0f8bd118ae23f1c97e55d84ff42eef20 (patch)
treeb7013f43afaaba6ba20b356a7a80fe55add24f1a /src/userfunc.c
parent7dd64a3e57d296fdee3b3ffe6d938f634b59848c (diff)
downloadvim-git-3a97bb3f0f8bd118ae23f1c97e55d84ff42eef20.tar.gz
patch 8.1.1437: code to handle callbacks is duplicatedv8.1.1437
Problem: Code to handle callbacks is duplicated. Solution: Add callback_T and functions to deal with it.
Diffstat (limited to 'src/userfunc.c')
-rw-r--r--src/userfunc.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/userfunc.c b/src/userfunc.c
index 06d2ecff6..7abde07e3 100644
--- a/src/userfunc.c
+++ b/src/userfunc.c
@@ -1447,6 +1447,30 @@ func_call(
}
/*
+ * Invoke call_func() with a callback.
+ */
+ int
+call_callback(
+ callback_T *callback,
+ int len, // length of "name" or -1 to use strlen()
+ typval_T *rettv, // return value goes here
+ int argcount, // number of "argvars"
+ typval_T *argvars, // vars for arguments, must have "argcount"
+ // PLUS ONE elements!
+ int (* argv_func)(int, typval_T *, int),
+ // function to fill in argvars
+ linenr_T firstline, // first line of range
+ linenr_T lastline, // last line of range
+ int *doesrange, // return: function handled range
+ int evaluate,
+ dict_T *selfdict) // Dictionary for "self"
+{
+ return call_func(callback->cb_name, len, rettv, argcount, argvars,
+ argv_func, firstline, lastline, doesrange, evaluate,
+ callback->cb_partial, selfdict);
+}
+
+/*
* Call a function with its resolved parameters
*
* "argv_func", when not NULL, can be used to fill in arguments only when the