mirror of
https://github.com/neovim/neovim.git
synced 2025-10-17 07:16:09 +00:00
feat(treesitter): add support for wasm parsers
Problem: Installing treesitter parser is hard (harder than climbing to heaven). Solution: Add optional support for wasm parsers with `wasmtime`. Notes: * Needs to be enabled by setting `ENABLE_WASMTIME` for tree-sitter and Neovim. Build with `make CMAKE_EXTRA_FLAGS=-DENABLE_WASMTIME=ON DEPS_CMAKE_FLAGS=-DENABLE_WASMTIME=ON` * Adds optional Rust (obviously) and C11 dependencies. * Wasmtime comes with a lot of features that can negatively affect Neovim performance due to library and symbol table size. Make sure to build with minimal features and full LTO. * To reduce re-compilation times, install `sccache` and build with `RUSTC_WRAPPER=<path/to/sccache> make ...`
This commit is contained in:

committed by
Christian Clason

parent
664de5ea97
commit
688b961d13
@@ -924,6 +924,7 @@ void nlua_free_all_mem(void)
|
||||
lua_State *lstate = global_lstate;
|
||||
nlua_unref_global(lstate, require_ref);
|
||||
nlua_common_free_all_mem(lstate);
|
||||
tslua_free();
|
||||
}
|
||||
|
||||
static void nlua_common_free_all_mem(lua_State *lstate)
|
||||
@@ -1902,8 +1903,13 @@ static void nlua_add_treesitter(lua_State *const lstate) FUNC_ATTR_NONNULL_ALL
|
||||
lua_pushcfunction(lstate, tslua_push_querycursor);
|
||||
lua_setfield(lstate, -2, "_create_ts_querycursor");
|
||||
|
||||
lua_pushcfunction(lstate, tslua_add_language);
|
||||
lua_setfield(lstate, -2, "_ts_add_language");
|
||||
lua_pushcfunction(lstate, tslua_add_language_from_object);
|
||||
lua_setfield(lstate, -2, "_ts_add_language_from_object");
|
||||
|
||||
#ifdef HAVE_WASMTIME
|
||||
lua_pushcfunction(lstate, tslua_add_language_from_wasm);
|
||||
lua_setfield(lstate, -2, "_ts_add_language_from_wasm");
|
||||
#endif
|
||||
|
||||
lua_pushcfunction(lstate, tslua_has_language);
|
||||
lua_setfield(lstate, -2, "_ts_has_language");
|
||||
|
Reference in New Issue
Block a user