February 25, 2026
Macros vs Autocomplete: FIGHT!
Show HN: Scheme-langserver – Digest incomplete code with static analysis
New Scheme helper promises smarter code — fans cheer, purists panic
TLDR: Scheme-langserver aims to bring smart autocomplete and code navigation to Scheme, even when your code is unfinished, using static analysis. Commenters are split between excitement for real tooling and skepticism that Lisp macros can be analyzed, sparking jokes, bug snark, and calls to fund the solo developer.
A solo developer just dropped Scheme-langserver, a brainy helper that tries to understand your Scheme code even when it's half-written. Instead of relying on a running REPL (read–eval–print loop), it uses static analysis to deliver autocomplete, go‑to definition, hover docs and even type hints under a Scheme standard known as R6RS. It plugs into VSCode and plays with the Akku package manager. The dev admits there are “many many bugs,” runs it part‑time, mirrored repos due to regional access hurdles, and asks for donations to keep the lights on.
Comments lit up like a macro fireworks show. Fans cheered: finally, Scheme gets grown‑up tooling. Purists thundered: you can’t tame Lisp macros with static tricks, good luck! Pragmatists shrugged: if it completes local names in unfinished files, ship it. Memes flew—“Parentheses as a Service,” “Akku? More like AAA for Lisp,” and one legend dubbed the planned type‑inference book “the Silmarillion of parentheses.” Skeptics poked the bug list, while supporters offered test cases and coffee money. The hottest debate: REPL‑first vs analysis‑first—do you prioritize live execution or deep code understanding? Either way, the community’s watching every bracket. Early testers report it works with Chez Scheme 9.x, with 10.0 next on deck. Fingers crossed for smoother completions soon.
Key Points
- •Scheme-langserver implements LSP for Scheme using static code analysis to handle incomplete code, providing completion, goto definition, and type inference.
- •The author provides a formal paper citation for ELS’25 in Zurich with a DOI and notes mirrored repositories due to GitHub access issues for Chinese IPs.
- •The tool contrasts with existing Lisp langservers (e.g., Geiser, racket langserver, swish-lint) that rely on REPL/tokenizers and struggle with local scopes in incomplete code.
- •Compatibility includes the Akku package manager and testing on Chez Scheme 9.4 and 9.5, with planned testing for 10.0.0.
- •Release 2.0.3 fixes pretty-print bugs mixing with standard I/O; ongoing work includes bug fixes, profiling, a type inference book, and planned data flow analysis and a VSCode plugin.