// EMACS-STRYKE — EMACS MAJOR MODE FOR THE STRYKE LANGUAGE

filetype detection (*.stk + stryke shebang) · font-lock generated from the stryke binary (all 10,409 builtins, hash-table matcher) · brace-aware indent · LSP via stryke --lsp

eglot + lsp-mode · settings stryke-executable / stryke-indent-offset · Package-Requires emacs 27.1

Report GitHub

>_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 groupFace
Declarations / fn-intro / control / concurrency / word-opsfont-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 constantsfont-lock-constant-face
Sigil variables, $_ topicfont-lock-variable-name-face
Strings / commentsvia syntax table

Language server & config

Setting / commandEffect
stryke-executable"stryke" — path to the executable used for the server
stryke-indent-offset4 — spaces per indent level
M-x eglotstart the server via eglot (Emacs 29+)
M-x lspstart the server via lsp-mode

Compatibility

TargetStatus
Emacs 27.1+Mode + font-lock + indent
eglotBuilt in since Emacs 29; works on 27/28 if installed
lsp-modeRegistered client
Syntax highlightingNo binary required