mirror of
https://github.com/g-plane/wasm-language-tools.git
synced 2025-08-04 16:39:38 +00:00
Language server and other tools for WebAssembly.
.github | ||
crates | ||
media | ||
.editorconfig | ||
.gitattributes | ||
.gitignore | ||
Cargo.lock | ||
Cargo.toml | ||
LICENSE | ||
README.md |
WebAssembly Language Tools
WebAssembly Language Tools aims to provide and improve the editing experience of WebAssembly Text Format. It also provides an out-of-the-box formatter (a.k.a. pretty printer) for WebAssembly Text Format.
📌 Features
Code Completion
Go to Definition
Find References
Hover
Rename
Document Symbols
Diagnostics
Inlay Hint
Code Action
Formatting
Semantic Highlighting
Call Hierarchy
🍵 Usage
We don't provide pre-built binaries at the moment.
If you have installed Rust, you can run Cargo to install:
cargo install --git https://github.com/g-plane/wasm-language-tools.git wat_server
Editor Support
- Visual Studio Code: Install the WebAssembly Language Tools extension.
- Neovim: You need to configure manually at the moment:
vim.api.nvim_create_autocmd("FileType", { pattern = "wat", callback = function(args) vim.lsp.start({ name = "wasm-language-tools", cmd = { "wat_server" }, -- or the absolute path to the binary settings = { -- this section is optional wasmLanguageTools = { -- must be under the key "wasmLanguageTools" format = {}, lint = { unused = "warn" }, }, }, }) end, }) -- Optional: Format on save vim.api.nvim_create_autocmd("LspAttach", { callback = function(args) local client = vim.lsp.get_client_by_id(args.data.client_id) if client.name == "wasm-language-tools" then vim.api.nvim_create_autocmd("BufWritePre", { buffer = args.buf, callback = function() vim.lsp.buf.format({ bufnr = args.buf, id = client.id }) end, }) end end, })
- Zed: Coming soon.
- Helix: Add the following lines to
<config_dir>/helix/languages.toml
:[language-server.wasm-language-tools] command = "wat_server" # or the absolute path to the binary args = [] config = { format = {}, lint = { unused = "warn" } } # this section is optional [[language]] name = "wat" language-servers = ["wasm-language-tools"]
📜 License
MIT License
Copyright (c) 2024-present Pig Fang