Skip to content

Language server and other tools for WebAssembly.

License

Notifications You must be signed in to change notification settings

g-plane/wasm-language-tools

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Language server and other tools for WebAssembly.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

 

Languages