>_EMACS-STRYKE — STRYKE IN EMACS
Open a .stk file and the whole language lights up. stryke is a highly parallel Perl 5 superset interpreter written in Rust. stryke-mode derives from prog-mode, font-locks the complete language surface (all 10,409 builtins, 90 keywords, 39 parallel primitives) from the binary's own reflection tables, indents brace blocks, and wires stryke --lsp into both eglot and lsp-mode.
Install
The stryke binary must be on $PATH for the language server (brew install stryke or build strykelang).
;; manual (add-to-list 'load-path "/path/to/emacs-stryke") (require 'stryke-mode) ;; use-package + built-in VC (use-package stryke-mode :mode "\\.stk\\'" :vc (:url "https://github.com/MenkeTechnologies/emacs-stryke"))
With eglot: M-x eglot in a .stk buffer, or (add-hook 'stryke-mode-hook #'eglot-ensure).
What you get
Filetype detection
Every *.stk file uses stryke-mode (auto-mode-alist); stryke shebangs are detected via interpreter-mode-alist.
Complete font-lock
All 10,409 builtins highlighted — not a curated subset, not a perl reskin.
Generated from the binary
scripts/gen-stdlib.sh dumps %b / %k / $c{parallel} from stryke and writes stryke-stdlib.el, so it never drifts.
Hash-table matcher
A single regexp-opt over 10,409 names overflows Emacs' regexp compiler, so builtins live in hash tables matched by a font-lock function in O(1) per identifier.
Language server
Registers stryke --lsp for eglot (built in since Emacs 29) and lsp-mode, both loaded lazily.
Verified
scripts/face-test.el byte-compiles the package and asserts the face at each probe token — proven to load and classify correctly.
Faces
| Token group | Face |
|---|---|
| Declarations / fn-intro / control / concurrency / word-ops | font-lock-keyword-face |
Phase hooks (BEGIN END INIT) | font-lock-preprocessor-face |
| Parallel builtins (39) | stryke-parallel-face |
| Builtins (10,409) | font-lock-builtin-face |
Types (Int Str Hash) | font-lock-type-face |
| Booleans / undef / magic constants | font-lock-constant-face |
Sigil variables, $_ topic | font-lock-variable-name-face |
| Strings / comments | via syntax table |
Language server & config
| Setting / command | Effect |
|---|---|
stryke-executable | "stryke" — path to the executable used for the server |
stryke-indent-offset | 4 — spaces per indent level |
M-x eglot | start the server via eglot (Emacs 29+) |
M-x lsp | start the server via lsp-mode |
Compatibility
| Target | Status |
|---|---|
| Emacs 27.1+ | Mode + font-lock + indent |
| eglot | Built in since Emacs 29; works on 27/28 if installed |
| lsp-mode | Registered client |
| Syntax highlighting | No binary required |