mirror of
https://github.com/neovim/neovim.git
synced 2024-12-19 18:55:14 -07:00
feat(lua): add vim.mpack for msgpack support in lua
This commit is contained in:
parent
2a08aeff1a
commit
eaf661dacd
@ -1139,16 +1139,19 @@ int luaopen_mpack(lua_State *L)
|
||||
lua_pushvalue(L, -1);
|
||||
lua_setfield(L, -2, "__index");
|
||||
luaL_register(L, NULL, unpacker_methods);
|
||||
lua_pop(L, 1);
|
||||
/* Packer */
|
||||
luaL_newmetatable(L, PACKER_META_NAME);
|
||||
lua_pushvalue(L, -1);
|
||||
lua_setfield(L, -2, "__index");
|
||||
luaL_register(L, NULL, packer_methods);
|
||||
lua_pop(L, 1);
|
||||
/* Session */
|
||||
luaL_newmetatable(L, SESSION_META_NAME);
|
||||
lua_pushvalue(L, -1);
|
||||
lua_setfield(L, -2, "__index");
|
||||
luaL_register(L, NULL, session_methods);
|
||||
lua_pop(L, 1);
|
||||
/* NIL */
|
||||
/* Check if NIL is already stored in the registry */
|
||||
lua_getfield(L, LUA_REGISTRYINDEX, NIL_NAME);
|
||||
@ -1166,6 +1169,9 @@ int luaopen_mpack(lua_State *L)
|
||||
/* Save NIL on the registry so we can access it easily from other functions */
|
||||
lua_setfield(L, LUA_REGISTRYINDEX, NIL_NAME);
|
||||
}
|
||||
|
||||
lua_pop(L, 1);
|
||||
|
||||
/* module */
|
||||
lua_newtable(L);
|
||||
luaL_register(L, NULL, mpack_functions);
|
||||
|
@ -33,6 +33,7 @@
|
||||
#include "nvim/eval/userfunc.h"
|
||||
#include "nvim/event/time.h"
|
||||
#include "nvim/event/loop.h"
|
||||
#include "mpack/lmpack.h"
|
||||
|
||||
#include "nvim/os/os.h"
|
||||
|
||||
@ -508,6 +509,21 @@ static int nlua_state_init(lua_State *const lstate) FUNC_ATTR_NONNULL_ALL
|
||||
nlua_nil_ref = nlua_ref(lstate, -1);
|
||||
lua_setfield(lstate, -2, "NIL");
|
||||
|
||||
|
||||
// vim.mpack
|
||||
luaopen_mpack(lstate);
|
||||
lua_pushvalue(lstate, -1);
|
||||
lua_setfield(lstate, -3, "mpack");
|
||||
|
||||
// package.loaded.mpack = vim.mpack
|
||||
// otherwise luv will be reinitialized when require'mpack'
|
||||
lua_getglobal(lstate, "package");
|
||||
lua_getfield(lstate, -1, "loaded");
|
||||
lua_pushvalue(lstate, -3);
|
||||
lua_setfield(lstate, -2, "mpack");
|
||||
lua_pop(lstate, 3);
|
||||
|
||||
|
||||
// vim._empty_dict_mt
|
||||
lua_createtable(lstate, 0, 0);
|
||||
lua_pushcfunction(lstate, &nlua_empty_dict_tostring);
|
||||
|
Loading…
Reference in New Issue
Block a user