github.com/clojure-emacs/sayid ↗
A debugger for Clojure
Open this visualization on its own page →
Contributors
14
Lines of Code
1,167
From
2015-09-26
To
2020-09-02
About clojure-emacs/sayid
Sayid is an omniscient debugger and profiler for Clojure that works by intercepting and recording the inputs and outputs of functions at runtime. It can trace function calls recursively, capturing data even for nested invocations within functions. Users select which functions to trace either individually or by namespace, then explore the recorded data through querying, visualization, and profiling capabilities.
The project consists of three main components: the core library designed for direct REPL usage, nREPL middleware providing a flexible API, and a CIDER plugin offering the most polished user experience. The CIDER integration is the primary focus of development, providing extensive keyboard shortcuts and interactive buffers for navigating call trees, examining function arguments and return values, and applying deeper traces to investigate specific issues. The system also supports a third-party Vim plugin for users outside the Emacs ecosystem.
Sayid requires Clojure 1.7 or later and optional nREPL 0.4 or higher for editor integration. It can be added as a dependency via Leiningen or deps.edn, and CIDER users benefit from automatic dependency injection when using jack-in commands. The project includes comprehensive documentation accessible via help buffers within Emacs, along with recorded demonstrations showing real-world debugging workflows such as tracing through a vending machine implementation to locate logic errors.