In certain kinds of code it\'s relatively easy to cause an infinite loop without blowing the stack. When testing code of this nature using clojure-test, is there a way to abort
if all else fails.. alt-x slime-quit-lisp
and restart the REPL. try Psyllo's answer first of course.
As per this old discussion, adding (use 'clojure.contrib.repl-utils))
and (add-break-thread!)
to user.clj should enable you to press C-c C-c
for passing SIGINT to the long running evaluation/processe.
Yes, it is a common problem for programmers to write infinite loops in development :). And the answer is very simple. It's called "Interrupt Command" and it is C-c C-b
Leiningen has nothing to do with this. This is SLIME/Swank/Clojure. When you evaluate code in Emacs you are spawning a new thread within Clojure. SLIME keeps reference to those threads and shows you how many are running in the Emacs modeline. If you're in a graphical environment you can click the modeline where it indicates your namespace and see lots of options. One option is "Interrupt Command"
Eval (while true)
and C-c C-b
to get a dialog showing a java.lang.ThreadDeath
error with probably just one option. You can type 0
or q
to quit that thread, kill that error message buffer and return focus to your previous buffer.