mirror of
https://github.com/neovim/neovim.git
synced 2025-12-15 19:05:40 +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
@@ -109,7 +109,14 @@ function M.add(lang, opts)
|
||||
path = paths[1]
|
||||
end
|
||||
|
||||
vim._ts_add_language(path, lang, symbol_name)
|
||||
if vim.endswith(path, '.wasm') then
|
||||
if not vim._ts_add_language_from_wasm then
|
||||
error(string.format("Unable to load wasm parser '%s': not built with ENABLE_WASMTIME ", path))
|
||||
end
|
||||
vim._ts_add_language_from_wasm(path, lang)
|
||||
else
|
||||
vim._ts_add_language_from_object(path, lang, symbol_name)
|
||||
end
|
||||
M.register(lang, filetype)
|
||||
end
|
||||
|
||||
|
||||
Reference in New Issue
Block a user