Ecko Language for VS Code
Language support for the Ecko programming language: a
language server for smart editing, plus syntax highlighting and snippets.
Features
Language server (via the ecko binary - see Requirements):
- Live diagnostics as you type: parser errors, undefined names (with
did-you-mean), arity mismatches, use-before-definition, non-exhaustive
matches, unreachable code, unused imports/variables/functions, builtin
shadowing, and unwrapped credentials
- Completion: keywords, builtins,
std module names, your own top-level
functions/types/variables, and each module's members after a .
- Hover: signatures for your functions, labels for builtins and modules
- Go-to-definition for your functions, types, and bindings
- Document symbols (outline / breadcrumbs) and workspace symbol search
(jump to a symbol anywhere in the project)
Always available (no server needed):
- Full syntax highlighting for
.ecko files, including string interpolation
("Hello, {name}!"), raw strings (r"..."), byte strings (b"\x89PNG"),
decimal literals (19.99m), _ digit separators, bitwise word operators
(band/bor/shl/…), sql { … } query blocks with {expr} bind holes,
secrets builtins (secret/reveal/is_secret), contract and tool
annotations (@requires, @ensures, @tool, @untrusted), ##
documentation comments, type X = A | B unions, and the ai clauses
(using, with, on, -> stream)
- Snippets for
fn, template, match, for, ai, @ensures, sql,
secret, and more
- Auto-closing brackets/quotes, folding via
# region / # endregion, and
indentation rules
Requirements
The smart-editing features are served by ecko lsp, so you need the ecko
binary on your PATH (install it from https://ecko.sh). If it lives
elsewhere, set ecko.server.path to its full path in your settings. Without
the binary the extension still provides syntax highlighting and snippets, and
shows a one-time notice explaining how to enable the rest.
Build and packaging
Prerequisites: Node.js / npm, and a VS Code-compatible editor (code or
cursor) for installing the VSIX.
From this directory (editors/vscode-ecko under the language repo root):
# 1. Install extension dependencies (vscode-languageclient)
npm install
# 2. Install the VS Code Extension Manager (once per machine)
npm install -g @vscode/vsce
# 3. Package a VSIX from package.json version (e.g. 0.14.0 → vscode-ecko-0.14.0.vsix)
vsce package
# 4. Install into VS Code
code --install-extension vscode-ecko-0.14.0.vsix
For Cursor, use the same VSIX:
cursor --install-extension vscode-ecko-0.14.0.vsix
After installing or updating, reload the window (Developer: Reload Window)
so the new grammar and client load.
Version bumps
- Edit
"version" in package.json.
- Run
vsce package again - the output filename follows
vscode-ecko-<version>.vsix.
- Reinstall with
code --install-extension vscode-ecko-<version>.vsix
(VS Code will replace the previous install for the same publisher/name).
What gets packaged
vsce package respects .vscodeignore. Source docs (*.md), VSIX artefacts,
and test.ecko are excluded from the bundle. The shipped extension includes
extension.js, package.json, the TextMate grammar, language configuration,
snippets, and node_modules needed at runtime.
Optional: publish to the Marketplace
vsce login ecko # once; needs a Personal Access Token
vsce publish # publishes the version in package.json
Local VSIX install (above) is enough for development and private distribution.
Installation (pre-built VSIX)
If you already have a packaged file:
code --install-extension vscode-ecko-0.14.0.vsix