// VSCODE-ELISP — VS CODE SUPPORT FOR THE EMACS LISP LANGUAGE

filetype detection (*.el + elisp shebang) · standalone TextMate grammar (source.elisp) · LSP via elisp --lsp · DAP via elisp --dap

settings elisp.path / elisp.lsp.enabled / elisp.lsp.args · run Emacs Lisp: Run File (Ctrl+F5) · debug F5

Report GitHub
// Color scheme

>_VSCODE-ELISP — EMACS LISP IN VS CODE

Open a .el file and the whole language lights up. Emacs Lisp is the extension language of Emacs; elisp (the elisprs project) is a Rust implementation that lowers .el to the fusevm bytecode VM + Cranelift JIT. vscode-elisp registers the elisp language for *.el files, the .emacs / _emacs init files, and elisp shebangs, highlights with a standalone TextMate grammar (source.elisp) covering the special forms, builtin functions / subrs, keyword symbols, char literals, and quoting sugar, starts the elisp --lsp language server via vscode-languageclient, and debugs through elisp --dap.

Install

The elisp binary must be on $PATH for the language server and debugging (brew install menketechnologies/menketech/elisprs). Build and install the .vsix locally:

git clone https://github.com/MenkeTechnologies/vscode-elisp
cd vscode-elisp
npm install
npx @vscode/vsce package          # vscode-elisp-<version>.vsix
code --install-extension vscode-elisp-*.vsix

Or clone straight into your extensions dir for development: ~/.vscode/extensions/vscode-elisp.

What you get

Filetype detection

Every *.el file, plus the .emacs / _emacs init files, becomes the elisp language. Files with an elisp shebang are detected via firstLine.

Standalone grammar

A TextMate grammar (source.elisp) — special forms, definition names, builtin functions / subrs, keyword symbols, char literals, quoting sugar, strings, numbers.

Language server

Launches elisp --lsp (stdio JSON-RPC) through vscode-languageclient — diagnostics, hover, completion as the server provides.

Run

Emacs Lisp: Run File (Ctrl+F5 / editor-title ▶) saves and evaluates the active file as elisp <file> in an integrated terminal.

Debugging

Breakpoints, step over/into/out, call stack, scopes, variables, watch / hover, and run-without-debugging via the native debug adapter (elisp --dap).

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
Special forms (defun let let* cond lambda setq if when while)keyword.control.elisp
Definition names ((defun NAME …))entity.name.function.elisp
Builtin functions (car cdr cons mapcar funcall format message +)support.function.elisp
Keyword symbols (:test :key)constant.other.keyword.elisp
Char literals (?a ?\n)constant.character.elisp
Constants (t nil)constant.language.elisp
Numbers (42 3.14 #xFF)constant.numeric.elisp
Quoting (' ` , ,@ #')keyword.operator.quote.elisp

Strings (double-quoted with escapes), ; comments, and shebang lines are scoped too.

Language server settings

SettingDefault & effect
elisp.pathelisp — path to the executable
elisp.lsp.enabledtrue — start the server; set false for highlighting only
elisp.lsp.args["--lsp"] — args to start the server

The transport is omitted so the client spawns bare elisp --lsp and never appends --stdio. If the binary is missing, the extension shows one non-fatal warning and highlighting keeps working.

Compatibility

TargetStatus
VS Code 1.75+Grammar + LSP + DAP
VSCodium / OSS buildsSame extension
Syntax highlightingNo binary required
Language server & debugRequires elisp on PATH