Skip to content

Latest commit

 

History

History
184 lines (160 loc) · 7.87 KB

README.md

File metadata and controls

184 lines (160 loc) · 7.87 KB

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