Awsum language support for Visual Studio Code
May 25, 2026 · View on GitHub
VS Code extension for the Awsum programming language (.aww files). A thin LSP client to the awsum lsp server bundled with the Awsum compiler — every diagnostic, code action, format edit, document symbol, and workspace symbol is computed inside the awsum compiler binary and pushed over LSP.
Features
- Syntax highlighting — TextMate grammar for
.awwfiles. - Format on save —
textDocument/formatting, triggered by the standardeditor.formatOnSavesetting (enabled by default for theawsumlanguage viacontributes.configurationDefaultsinpackage.json). - Inline diagnostics —
textDocument/publishDiagnostics, pushed on open / save / change (debounced 500 ms server-side).errorvswarningseverity honoured by the VS Code Problems panel. - Quick fixes (lightbulb) —
textDocument/codeAction. Compiler-supplied fixes only; the extension does no language-aware reasoning. - Document outline —
textDocument/documentSymbol. Drives the Outline panel, breadcrumbs, andCtrl+Shift+Osymbol search. - Workspace symbol search (
Ctrl+T) —workspace/symbol. The server walks every.awwunder the workspace folders received atinitialize.
Install
- Install the Awsum compiler (see awsum-lang/awsum) and ensure
awsumis on yourPATH. - Install the extension from the Visual Studio Marketplace or the Open VSX Registry. For a locally-built
.vsix:Cmd+Shift+P→Extensions: Install from VSIX….
If awsum is not on your PATH, point the extension at the binary via Settings → awsum.path (e.g. /usr/local/bin/awsum). A change to this setting restarts the LSP client automatically — no editor reload needed.
Commands
| Command | Default keybinding | What it does |
|---|---|---|
Awsum: Restart Awsum LSP server | — | Stops the awsum lsp process and starts a new one with the same settings. Useful after a local stack install of a new awsum build, or to clear any in-memory state on the server. |
Bind it to a keybinding via the standard VS Code Keyboard Shortcuts editor (awsum.restartLspServer).
Versioning
awsum-vscode A.B.C is built and tested against awsum A.B.C. Mismatched versions are not supported — at startup the LSP server compares the extension's expected version against its own and shows a non-blocking notification on mismatch.
Visual Studio Marketplace only accepts plain semver A.B.C (no 4th segment, no pre-release tags), so we can't iterate the extension independently under a fixed compiler version. Every awsum release ships a matching extension release (minimum once); the extension is never released ahead of the compiler. Only the latest awsum release is supported.
Development
npm i # install dependencies
npm run compile # type-check via tsc
npm run bundle # esbuild → dist/extension.js
npm run package # bundle + vsce package → awsum-vscode-A.B.C.vsix
Structure
src/extension.ts # LSP client (vscode-languageclient → awsum lsp)
syntaxes/awsum.tmLanguage.json # TextMate grammar
language-configuration.json # Comment / bracket / auto-close config
dist/extension.js # Bundled output (esbuild)
Architecture
- Single source of truth.
awsum-vscodedoes no language-aware processing. All semantics live inawsum/src/Awsum/Lsp.hs(the LSP server) and the modules it reuses (Awsum.Diagnostic,Awsum.Symbols,Awsum.Format,Awsum.ElaborateLower, …). - No custom providers. Everything routes through
vscode-languageclientstandard handlers. Anything you'd want to add for VS Code is best added on the LSP server side first — that wayawsum-zed, Helix, and any other LSP client benefit too.
Related
- Compiler: awsum-lang/awsum
- Zed extension: awsum-lang/awsum-zed
- Tree-sitter grammar: awsum-lang/tree-sitter-awsum
- Examples: awsum-lang/awsum-examples
- Website: awsum-lang.org
AI use
This VSCode extension is developed with substantial usage of generative AI. Every generated change is reviewed, edited, and accepted by a human before it lands in the repository, and no output is shipped unedited.