vim-elisp — Engineering Report
Grammar is mirrored, not guessed
The syntax grammar in syntax/elisp.vim is built from the
elisprs language server's own corpus (src/lsp.rs:
SPECIAL_FORMS + SUBRS). The 18 special forms and
the built-in subr set that Vim highlights are exactly the surface the
language server knows, so highlighting and completion stay in agreement.
Lisp indentation
Emacs Lisp is an S-expression language, so indentation is delegated to
Vim's built-in lisp indenter rather than a brace-column rule.
lispwords is populated with the special forms plus common
binders (let, when, dolist,
save-excursion, …) so their bodies indent by a fixed offset.
Run wiring
There is no separate lint / parse-only mode: elisp FILE.el
lowers the file to fusevm bytecode and evaluates it, surfacing parse and
runtime errors alike. :make and :ElispRun both
route through elisp % into the quickfix list.
LSP / DAP contract
The language server and debug adapter are launched with only
--lsp or --dap — never with an appended
--stdio, which the binary rejects before the JSON-RPC
handshake. The plugin registers elisp --lsp with vim-lsp and
documents coc.nvim and nvim-dap configurations.
elisp FILE.el evaluate a file (lowered to fusevm, run on fusevm)
elisp -e EXPR evaluate an expression and print its value
elisp --lsp language server over stdio
elisp --dap debug adapter over stdio