Ritz was originally based on swank-clojure and was originally called swank-clj. The last swank-clj release is 0.1.6.
This is alpha quality.
- Break on uncaught exceptions and breakpoints.
- Allows stepping from breakpoints
- Allows evaluation of expressions in the context of a stack frame
- Inspection of locals in any stack frame
- Disassembly of functions from symbol or stack frame
Should work with clojure 1.2.0, 1.2.1 and 1.3.0-alpha7.
Install the slime-ritz.el contrib from marmalade.
A compatible slime.el is in slime/slime.el. It is available as a
package file you can
and install with
M-x package-install-file. Note that you may need to remove
this package to use
[ritz "0.1.7"] to your project.clj
lein plugin install ritz 0.1.7.
For cake, add the following (with the correct jdk path), to
project.classpath = /usr/lib/jvm/java-6-sun/lib/tools.jar
For lein, add the tools.jar to the dev-resources-path:
If you would like to browse into the clojure java sources then add the following
:dev-dependencies, with the appropriate clojure version.
[org.clojure/clojure "1.2.1" :classifier "sources"]
For clojure 1.2.0, you will need the following instead:
To be able to see Java sources when using openjdk, add the
src.zip to you
classpath. e.g. for lein:
To run with jpda:
To run without jpda:
lein ritz 4005 localhost :server-ns ritz.repl
To run with a maven project:
To set a breakpoint, eval
ritz.el from src/main/elisp, put the cursor
on the line where you want a breakpoint, and
Note that breakpoints disappear on recompilation at the moment.
To list breakpoints, use
M-x slime-list-breakpoints or press
b in the
slime-selector. In the listing you can use the following keys
- e enable
- d disable
- g refresh list
- k remove breakpoint
- v view source location
Specify the location of local javadoc using
.emacs file. Note that this requires a connection, so should be in
(defun my-javadoc-setup () (slime-javadoc-local-paths (list (concat (expand-file-name "~") "/lisp/docs/java")))) (add-hook 'slime-connected-hook 'my-javadoc-setup)
slime-javadoc, bound to
C-c b by default, will open javadoc in
the browser you have set up in emacs.
If you use slime with multiple lisps, you can isolate clojure specific
setup by using
Recompilation of clojure code creates new classes, with the same location as the code they replace. Recompilation therefore looses breakpoints, which are set on the old code. Setting breakpoints by line number finds all the old code too.
Allow customisations of which exceptions are trapped by ritz.
A pure JDI backend, that doesn't require swank in the target VM is certainly a possibility.
A slime-eval-symbol-at-point would be useful (requires determining the frame in the current sldb stacktrace using file and line number).
Add watchpoints with logging of locals to an emacs buffer or file.
Run swank server and JDI debugger in the same process to have a single JVM and keep memory usage down
Run swank and debugger in a seperate JVM process. Attach to any -Xdebug enabled JVM process.
Run swank server in process and attach slime as required. This requires the debugger to run in process.
Copyright (C) 2010, 2011 Hugo Duncan
Distributed under the Eclipse Public License.