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.
- ✅ Syntax highlighting for Wave (
.wave) files - ✅ Keywords, types, functions, strings, numbers, operators
- ✅ Support for comments (
//and/* */) - ✅
importkeyword highlighting - ✅ Custom icon for
.wavefiles - ✅ 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
- Install this extension
- Open any
.wavefile - Press
▶ Run Waveat the top of the file to run it
waveccompiler must be installed and available in your PATHwave-agapemust be available inPATH, configured withwave.languageServer.path, or bundled underserver/<platform>-<architecture>/wave-agape(.exeon 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.
npm install
npm run compilePushing 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.