2026.11.03
Open sourcing language servers for Make, CMake, and Ninja
Editor tooling for build files has always been thin. Your IDE will happily navigate your C, Go, or Rust code — and then drop you into a Makefile or a CMakeLists.txt as if it were a README. Completion is guesswork, syntax errors surface at build time, and jump-to-definition might as well not exist.
I’m happy to announce three language servers, written in Go, now open source:
make-lsp— targets full GNU Make parity for editor workflows. It ships aCOMPATIBILITY.mdmatrix covering what is and isn’t supported, benchmarks, and a changelog.cmake-lsp— a CMake lexer/parser/LSP whose language behavior is locked by differential testing against a realcmakeexecutable: lexing, block nesting, and command arities are pinned by regression tests derived fromcmake -Pprobes.ninja-lsp— completion and diagnostics for Ninja files, built on a hybrid memory pool with automatic tuning for lexer/parser workloads.
How they were built
In the spirit of honesty: this suite was developed AI-assisted. I authored the specs, reviewed the output, and validated the compatibility and benchmark claims myself. The design work — what to parse, how to structure the servers, where to be strict — is mine; the heavy lifting of turning those specs into code was shared with an AI collaborator.
That’s also why the projects emphasize verifiability: the compatibility
matrix in makelsp and the benchmarks aren’t marketing, they’re how the
claims get checked.
Try them
Any editor that speaks the Language Server Protocol will do. Point your LSP client of choice at the server binary, open a Makefile, CMakeLists.txt, or build.ninja, and you should get completion and diagnostics out of the box.
Issues, compatibility reports, and benchmark numbers from machines other than mine are all welcome.