>_VSCODE-STRYKE — STRYKE IN VS CODE
Open a .stk file and the whole language lights up. stryke is a highly parallel Perl 5 superset interpreter written in Rust. vscode-stryke registers the stryke language for *.stk files and stryke shebangs, highlights with a standalone TextMate grammar generated from the stryke binary's own reflection tables (all 10,450 builtins, 90 keywords, 39 parallel primitives), and starts the stryke --lsp language server via vscode-languageclient.
Install
The stryke binary must be on $PATH for the language server (brew install stryke or build strykelang). Build and install the .vsix locally:
git clone https://github.com/MenkeTechnologies/vscode-stryke cd vscode-stryke npm install npx @vscode/vsce package # vscode-stryke-<version>.vsix code --install-extension vscode-stryke-*.vsix
Or clone straight into your extensions dir for development: ~/.vscode/extensions/vscode-stryke.
What you get
Filetype detection
Every *.stk file becomes the stryke language. Files with a #!/usr/bin/env stryke shebang are detected via firstLine.
Complete grammar
A standalone TextMate grammar (source.stryke) — all 10,450 builtins, not a curated subset, not a perl reskin.
Generated from the binary
scripts/gen_grammar.sh dumps %b / %k / $c{parallel} from stryke itself, so the grammar never drifts from the language.
Language server
Launches stryke --lsp (stdio JSON-RPC) through vscode-languageclient — diagnostics, hover, completion as the server provides.
Editor config
Comments, brackets, auto-closing pairs, and brace-based indentation via language-configuration.json.
Verified
A vscode-textmate + vscode-oniguruma test tokenizes a sample and asserts the scopes, so the grammar is proven to load and classify correctly.
Scopes
| Token group | Scope |
|---|---|
| Control flow | keyword.control.stryke |
Concurrency (async await spawn) | keyword.other.concurrent.stryke |
Declarations (my var const typed use) | storage.modifier.stryke |
Fn / type intro (fn sub class trait) | storage.type.stryke |
Phase hooks (BEGIN END INIT) | keyword.other.phase.stryke |
Word operators (and or eq cmp x) | keyword.operator.word.stryke |
| Parallel builtins (39) | support.function.parallel.stryke |
| Builtins (10,450) | support.function.builtin.stryke |
| Types | support.type.stryke |
Thread macros (~> ~>> ->> |>) | keyword.operator.thread.stryke |
Strings (single / double / backtick / qw / q / qq / qx), here-docs, interpolation, escapes, m// / s/// / tr/// / qr// regex, sigil variables, the $_ topic, and numbers are scoped too.
Language server settings
| Setting | Default & effect |
|---|---|
stryke.path | stryke — path to the executable |
stryke.lsp.enabled | true — start the server; set false for highlighting only |
stryke.lsp.args | ["--lsp"] — args to start the server |
If the binary is missing, the extension shows one non-fatal warning and highlighting keeps working.
Compatibility
| Target | Status |
|---|---|
| VS Code 1.75+ | Grammar + LSP |
| VSCodium / OSS builds | Same extension |
| Syntax highlighting | No binary required |
| Language server | Requires stryke on PATH |