# AWL in your editor

Configure the stdio language server, Zed extension or Neovim integration.

Aion includes an AWL language server for checking, navigation, completion and formatting. Configure your editor to launch the installed command over stdio. The supplied editor packages are available in an authorized checkout.

## Any LSP editor

Run the AWL language server over stdio for editor integration

```text
aion awl lsp [OPTIONS]
```



Use the language id and extension listed below. Let the editor launch the stdio process for the workspace. Use a main build for the current language additions described in these pages.

- `Transport`: aion awl lsp uses stdio and language id awl. Keep stdout available for LSP messages.
- `Documents`: Open/close and full-text changes, UTF-16 positions, diagnostics and document formatting.
- `Navigation`: Document symbols, definition, hover, references and document highlights.
- `Editing`: Prepared rename and completion. Completion triggers include > and :.
- `Implementation`: crates/aion-awl-lsp/src/server.rs:88–126 publishes these capabilities. editors/zed-awl and editors/nvim-awl carry the supplied editor integrations.


## Zed

Install Rust through rustup, then open Zed’s Extensions page. Choose Install Dev Extension and select the checkout’s editors/zed-awl directory. Open an AWL file and select the AWL language.

The extension finds Aion on the editor’s path. Override the binary path with these settings when the desired build lives elsewhere.

**Zed settings.json**

```json
{
  "lsp": {
    "awl": {
      "binary": {
        "path": "/absolute/path/to/aion",
        "arguments": [
          "awl",
          "lsp"
        ]
      }
    }
  }
}
```


The extension fetches its pinned Tree-sitter grammar from the public mirror named in its manifest. Read Zed’s log for extension compilation or language-server launch failures.

## Neovim

Neovim 0.11 or later can use this built-in LSP configuration directly. It registers the filetype and starts the server for AWL files, including files outside a Git workspace.

**Neovim 0.11+ configuration**

```lua
vim.filetype.add({ extension = { awl = "awl" } })
vim.lsp.config("awl", {
  cmd = { "aion", "awl", "lsp" },
  filetypes = { "awl" },
  root_markers = { ".git" },
  workspace_required = false,
})
vim.lsp.enable("awl")
```


The checkout’s editors/nvim-awl package also supplies filetype detection, an LSP config and optional format-on-save setup. Tree-sitter highlighting needs a separately installed AWL parser; LSP checking and formatting work through the Aion command.

Use the editor’s LSP log to diagnose launch failures. Confirm that its process environment can find the same executable used in the terminal.

On main, editors/zed-awl/src/lib.rs:9–46 selects the language-server command; editors/zed-awl/extension.toml:9–24 selects the grammar. The Neovim plugin’s setup is editors/nvim-awl/lua/awl/init.lua:96–120.

> Language-server shutdown
> On main, the stdio process can remain alive after answering shutdown. Let the editor manage and terminate its language-server child when closing the workspace. The stdio runner joins its I/O threads while retaining the connection in crates/aion-awl-lsp/src/server.rs:51–55.
