aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/lua/executor.c
diff options
context:
space:
mode:
authorLewis Russell <lewis6991@gmail.com>2024-04-19 16:04:57 +0100
committerChristian Clason <c.clason@uni-graz.at>2024-08-26 16:44:03 +0200
commit688b961d13bd54a14836f08c3ded3121d3fb15a0 (patch)
treeb201413b8616abc42283545b146fb1492d56b861 /src/nvim/lua/executor.c
parent664de5ea971440f24e3e7e3618786d01fbca6025 (diff)
downloadrneovim-688b961d13bd54a14836f08c3ded3121d3fb15a0.tar.gz
rneovim-688b961d13bd54a14836f08c3ded3121d3fb15a0.tar.bz2
rneovim-688b961d13bd54a14836f08c3ded3121d3fb15a0.zip
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 ...`
Diffstat (limited to 'src/nvim/lua/executor.c')
-rw-r--r--src/nvim/lua/executor.c10
1 files changed, 8 insertions, 2 deletions
diff --git a/src/nvim/lua/executor.c b/src/nvim/lua/executor.c
index 4d5b2c3698..d4940f3add 100644
--- a/src/nvim/lua/executor.c
+++ b/src/nvim/lua/executor.c
@@ -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");