Skip to content
Tech News
← Back to articles

Maak.el: Lisp machine command runner in Emacs, infinitely extensible and Scheme

read original get O'Reilly "Mastering Emacs" by Mickey Petersen → more articles
Why This Matters

Maak.el is an Emacs package that hooks the Guile Scheme-based Maak command runner into the editor, letting developers discover, inspect and run project tasks with rich completion instead of wrangling Makefiles. It's a small but telling example of the ongoing effort to replace ad-hoc build DSLs with a general-purpose programming language, in this case Lisp on both sides of the integration.

Key Takeaways
Worth a Look

O'Reilly "Mastering Emacs" by Mickey Petersen — If maak.el has you wiring Guile Scheme build tasks into your editor, Mastering Emacs is the go-to guide for getting the most out of the environment itself. It walks through buffers, completion, and customization so tools like Vertico-powered task runners feel natural rather than fiddly.

See O'Reilly "Mastering Emacs" by Mickey Petersen on Amazon → Affiliate link — we may earn a commission on purchases, at no extra cost to you. Product picked by AI based on this article; it is not a tested recommendation.

maak.el — Maak integration for Emacs

maak.el brings seamless integration for Maak: The infinitely extensible command runner, control plane and project automator à la Make (Guile Scheme - Lisp) into your Emacs workflow. Maak replaces archaic Makefiles with the elegance and power of GNU Guile Scheme. With maak.el , you can discover, inspect, and execute your Maak tasks directly from the comfort of Emacs, complete with rich minibuffer completions.

Most build tools invent their own limited domain-specific language. Maak embraces the powerful λ Lisp and the amazing Guile Scheme programming language. This also means your code is flexible, robust and reliable (+declarative) for at least the next 50 years.

Automatic Project Discovery: Automatically locates your root maak.scm file using dominating-file heuristics.

file using dominating-file heuristics. Smart Visibility Parsing: Respects your Maak configuration's #:export lists—only showing public tasks (or all, if no exports).

lists—only showing public tasks (or all, if no exports). Polished Completion UI: Implements aligned columns in your preferred completion framework (Vertico, Ivy, Helm, or native completing-read ) showcasing task signatures and docstrings.

) showcasing task signatures and docstrings. Interactive Argument Gathering: If a task expects parameters, maak.el will sequentially prompt you for them in the minibuffer before executing.

will sequentially prompt you for them in the minibuffer before executing. Native Compilation Buffers: Executes tasks asynchronously via Emacs's native compile system, keeping shell-escaping watertight and allowing you to jump straight to errors.

Using standard Emacs properties, your tasks are dynamically formatted in completion list. It will render beautifully aligned columns matching your theme's default font lock faces.

Thanks to Lisp being universal, and Scheme and Emacs Lisp being mutually parseable, maak.el parses maak.scm locally and cleanly, while being aware of S-exps, comments, etc.

... continue reading