Wave Language Support
Wave Programming Language support for Visual Studio Code, powered by the
shared wave-agape language server.
Wave identifiers receive project-aware semantic highlighting: imports and
module aliases are namespaces, functions and methods are distinct from types,
and constants/statics retain their own readonly/static styling. Standard
library symbols are also marked separately so VS Code themes can emphasize
them consistently.
Features
- ✅ Syntax highlighting for Wave (
.wave) files
- ✅ Keywords, types, functions, strings, numbers, operators
- ✅ Support for comments (
// and /* */)
- ✅
import keyword highlighting
- ✅ Custom icon for
.wave files
- ✅ Run Wave button →
wavec run <file> (native Windows and optional WSL)
- ✅ Diagnostics and parser errors
- ✅ Completion and signature help
- ✅ Hover and go to definition
- ✅ Clickable
import("./module");, aliased/selective imports, and missing-import diagnostics
- ✅
std:: and external package import navigation and module completion
- ✅ Document/workspace symbols and references
- ✅ Rename
How to Use
- Install this extension
- Open any
.wave file
- Press
▶ Run Wave at the top of the file to run it
Requirements
wavec compiler must be installed and available in your PATH
wave-agape must be available in PATH, configured with
wave.languageServer.path, or bundled under
server/<platform>-<architecture>/wave-agape (.exe on Windows)
Windows uses native wavec.exe and wave-agape.exe by default. WSL remains an
opt-in compatibility mode through wave.compiler.useWsl and
wave.languageServer.useWsl.
Development
npm install
npm run compile
Marketplace automation
Pushing a version tag such as v0.4.0 runs
.github/workflows/marketplace.yml. The workflow bundles x64/ARM64 Linux,
x64 Windows, and x64/Apple Silicon macOS servers, uploads the VSIX as an
Actions artifact, and publishes it to the VS Code Marketplace when the
VSCE_PAT repository secret is set.
The language-server source defaults to wavefnd/wave-agape at v0.4.0. Set
the WAVE_AGAPE_REPOSITORY and WAVE_AGAPE_REF repository variables to use a
different repository or a pinned tag/commit.
Wave imports follow the compiler's resolution rules. Local modules require a
./ prefix. std::io::format resolves under ~/.wave/lib/wave/std, while
package and package::module resolve through
wave.imports.dependencyRoots or the explicit wave.imports.dependencies
mapping. .vex/deps is auto-discovered, and relative configured paths are
resolved from the workspace.