// VSCODE-STRYKE — VS CODE SUPPORT FOR THE STRYKE LANGUAGE

filetype detection (*.stk + stryke shebang) · standalone TextMate grammar generated from the stryke binary (all 10,450 builtins) · LSP via stryke --lsp

scopeName source.stryke · vscode-languageclient · settings stryke.path / stryke.lsp.enabled / stryke.lsp.args

Report GitHub
// Color scheme

>_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 groupScope
Control flowkeyword.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
Typessupport.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

SettingDefault & effect
stryke.pathstryke — path to the executable
stryke.lsp.enabledtrue — 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

TargetStatus
VS Code 1.75+Grammar + LSP
VSCodium / OSS buildsSame extension
Syntax highlightingNo binary required
Language serverRequires stryke on PATH