aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--scripts/msgpack-gen.lua7
-rw-r--r--src/nvim/msgpack_rpc/defs.h4
2 files changed, 10 insertions, 1 deletions
diff --git a/scripts/msgpack-gen.lua b/scripts/msgpack-gen.lua
index 9645784f00..d31a062a68 100644
--- a/scripts/msgpack-gen.lua
+++ b/scripts/msgpack-gen.lua
@@ -252,6 +252,11 @@ end
output:write([[
static Map(String, MsgpackRpcRequestHandler) *methods = NULL;
+void msgpack_rpc_add_method_handler(String method, MsgpackRpcRequestHandler handler)
+{
+ map_put(String, MsgpackRpcRequestHandler)(methods, method, handler);
+}
+
void msgpack_rpc_init_method_table(void)
{
methods = map_new(String, MsgpackRpcRequestHandler)();
@@ -263,7 +268,7 @@ void msgpack_rpc_init_method_table(void)
local max_fname_len = 0
for i = 1, #functions do
local fn = functions[i]
- output:write(' map_put(String, MsgpackRpcRequestHandler)(methods, '..
+ output:write(' msgpack_rpc_add_method_handler('..
'(String) {.data = "'..fn.name..'", '..
'.size = sizeof("'..fn.name..'") - 1}, '..
'(MsgpackRpcRequestHandler) {.fn = handle_'.. fn.name..
diff --git a/src/nvim/msgpack_rpc/defs.h b/src/nvim/msgpack_rpc/defs.h
index 13067fb7b4..0492a65290 100644
--- a/src/nvim/msgpack_rpc/defs.h
+++ b/src/nvim/msgpack_rpc/defs.h
@@ -19,6 +19,10 @@ typedef struct {
/// Initializes the msgpack-rpc method table
void msgpack_rpc_init_method_table(void);
+// Add a handler to the method table
+void msgpack_rpc_add_method_handler(String method,
+ MsgpackRpcRequestHandler handler);
+
void msgpack_rpc_init_function_metadata(Dictionary *metadata);
/// Dispatches to the actual API function after basic payload validation by