// VIM-STRYKE — VIM / NEOVIM SUPPORT FOR THE STRYKE LANGUAGE

filetype detection (*.stk + stryke shebang) · standalone stryke grammar (generated; all 10,407 builtins) · brace-aware indent · ALE lint via stryke --lint · vim-lsp / coc via stryke --lsp

pathogen / vim-plug / native packages · zero config · opt-outs g:vim_stryke_no_ale, g:vim_stryke_no_lsp

Report GitHub Issues
// Color scheme

>_VIM-STRYKE — STRYKE IN VIM AND NEOVIM

Load it with pathogen, get full stryke support in Vim / Neovim. stryke is a highly parallel Perl 5 superset interpreter written in Rust. vim-stryke registers the stryke filetype for *.stk files and stryke shebangs, highlights with a standalone stryke grammar generated from the stryke binary's own reflection tables (all 10,407 builtins, 90 keywords, 39 parallel primitives), indents with a brace-aware indenter, wires up stryke --lint as an ALE linter, and registers stryke --lsp for vim-lsp and coc.nvim.

Install

The stryke binary must be on $PATH for linting and LSP (brew install stryke or build strykelang). Then drop the plugin into your runtimepath:

# pathogen
cd ~/.vim/bundle
git clone https://github.com/MenkeTechnologies/vim-stryke
# then, inside vim:  :Helptags

# vim-plug (add to ~/.vimrc / init.vim)
Plug 'MenkeTechnologies/vim-stryke'

# native packages (Vim 8+ / Neovim)
git clone https://github.com/MenkeTechnologies/vim-stryke \
    ~/.vim/pack/plugins/start/vim-stryke

Open any .stk file and it lights up — no further configuration. Help: :help vim-stryke.

What you get

Filetype detection

Every *.stk file becomes filetype=stryke. Extensionless scripts with a #!/usr/bin/env stryke shebang are detected too.

Syntax highlighting

A standalone stryke grammar — all 10,407 builtins, keywords, parallel builtins, sigil variables, strings, here-docs, regex, and thread macros — generated from the stryke binary, not a perl reskin.

Indentation

A standalone brace-aware indenter — indents after a line that opens a block / paren / bracket, dedents lines that start with a closing delimiter.

Linting (ALE)

Runs stryke --lint %t and surfaces <message> at <file> line <n> diagnostics inline. Skips silently if ALE is absent.

Language server

Registers stryke --lsp for vim-lsp, allowlisted for stryke + perl. coc.nvim snippet in the README.

Zero config

No settings required. Two opt-outs: g:vim_stryke_no_ale and g:vim_stryke_no_lsp to skip either integration.

Token categories

The grammar is generated from the stryke binary's own reflection tables — the %k keyword table, the %b builtin table (all 10,407), and the $c{parallel} category:

GroupTokens (sample)
Declarationsmy var val our local state const typed use package pub is as
Function / type introducersfn sub method class trait struct enum impl extends
Control flowif elsif else unless while until loop for match when try catch finally defer
Phase / block hooksBEGIN END INIT CHECK UNITCHECK BUILD DESTROY
Word operatorsand or not xor cmp eq ne lt le gt ge x
Parallel builtins (39)pmap pgrep pfor ploop pwhile pchannel preduce fan par_walk
Builtins (10,407)p say print map grep reduce json_encode sha256 fetch ai a_law_decode
Type names (12)Int Str Float Bool Num Any Array Hash List Map Set Void
Thread macros~> ~>> ->> |> (plus ~s> / ~p> / ~d> variants)

Sigil variables, the $_ topic, strings / here-docs / interpolation, and m// / s/// / tr/// / qr// regex are handled too. Everything links to standard highlight groups, so every colorscheme covers it without bespoke tuning.

Layout

vim-stryke/
├── ftdetect/stryke.vim   # *.stk + #!/usr/bin/env stryke -> filetype=stryke
├── syntax/stryke.vim     # standalone stryke grammar (generated; 10,407 builtins)
├── ftplugin/stryke.vim   # commentstring '# %s', comments, formatoptions
├── indent/stryke.vim     # standalone brace-aware indenter
├── plugin/stryke.vim     # ALE linter + vim-lsp + coc wiring
└── doc/stryke.txt        # :help vim-stryke

Standard Vim runtime layout, so pathogen / vim-plug / native packages add it to runtimepath with no special handling. Licensed MIT.

Compatibility

Editor / pluginStatus
Vim 8+Filetype, syntax, indent, ftplugin
NeovimSame runtime files
ALEstryke --lint linter
vim-lspstryke --lsp server
coc.nvimlanguageserver config in README