aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/msgpack_rpc/defs.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/nvim/msgpack_rpc/defs.h')
-rw-r--r--src/nvim/msgpack_rpc/defs.h15
1 files changed, 12 insertions, 3 deletions
diff --git a/src/nvim/msgpack_rpc/defs.h b/src/nvim/msgpack_rpc/defs.h
index 5eec4ced54..13067fb7b4 100644
--- a/src/nvim/msgpack_rpc/defs.h
+++ b/src/nvim/msgpack_rpc/defs.h
@@ -6,9 +6,15 @@
/// The rpc_method_handlers table, used in msgpack_rpc_dispatch(), stores
/// functions of this type.
-typedef Object (*rpc_method_handler_fn)(uint64_t channel_id,
- msgpack_object *req,
- Error *error);
+typedef struct {
+ Object (*fn)(uint64_t channel_id,
+ uint64_t request_id,
+ Array args,
+ Error *error);
+ bool defer; // Should the call be deferred to the main loop? This should
+ // be true if the function mutates editor data structures such
+ // as buffers, windows, tabs, or if it executes vimscript code.
+} MsgpackRpcRequestHandler;
/// Initializes the msgpack-rpc method table
void msgpack_rpc_init_method_table(void);
@@ -31,4 +37,7 @@ Object msgpack_rpc_dispatch(uint64_t channel_id,
Error *error)
FUNC_ATTR_NONNULL_ARG(2) FUNC_ATTR_NONNULL_ARG(3);
+MsgpackRpcRequestHandler msgpack_rpc_get_handler_for(const char *name,
+ size_t name_len)
+ FUNC_ATTR_NONNULL_ARG(1);
#endif // NVIM_MSGPACK_RPC_DEFS_H