CIDER is the Clojure(Script) Interactive Development Environment that Rocks!
CIDER extends Emacs with support for interactive programming in Clojure. The
features are centered around
cider-mode, an Emacs minor-mode that complements
clojure-mode supports editing Clojure source files,
cider-mode adds support for interacting with a running Clojure process for
compilation, debugging, definition and documentation lookup, running tests and
Please consider supporting financially its ongoing development.
Programmers are expected to program in a very dynamic and incremental manner, constantly re-evaluating existing Clojure definitions and adding new ones to their running applications. You never stop/start a Clojure application while using CIDER - you're constantly interacting with it and changing it.
You can find more details about the typical CIDER workflow in the Interactive Programming section. While we're a bit short on video tutorials, you can check out this tutorial about SLIME to get a feel about what do we mean by an "Interactive Development Environment". There are plenty of differences between CIDER and SLIME, but the core ideas are pretty much the same (and SLIME served as the principle inspiration for CIDER).
CIDER's built on top of nREPL, the Clojure networked REPL server.
CIDER's basic architecture looks something like this:
Clojure code gets executed by an nREPL server. CIDER sends requests to the server and processes its responses. The server's functionality is augmented by additional nREPL middleware, designed specifically to address the needs of an interactive development environment like CIDER. Much of the middleware we developed for CIDER is editor-agnostic and is being used by other Clojure development environments as well (e.g. vim-fireplace & CCW).
CIDER packs plenty of features. Here are some of them (in no particular order):
- Powerful REPL
- Interactive code evaluation
- Compilation notes (error and warning highlighting)
- Human-friendly stacktraces
- Smart code completion
- Definition lookup
- Documentation lookup
- Resource lookup
- Value inspector
- Function tracing
- Interactive macroexpansion
- Enhanced Clojure font-locking and indentation
- Grimoire integration
- Smart code reloading
- Pretty-printing of results
- Classpath browser
- Namespace browser
- REPL history browser
- nREPL session management
- Minibuffer code evaluation
- Integration with company-mode
- Support for working with multiple simultaneous nREPL connections