I have an implementation of this that's thoroughly integrated into vim. clojure code: https://github.com/dgrnbrg/redl vim plugin: https://github.com/dgrnbrg/vim-redl
The code itself is written with core.async, and is capable of monitoring a thread, inspecting its stack while its running, stopping it, and programmatically creating breakpoints that give you a repl with captured locals. I'd love for this work to be extended to a generic nrepl handler, but I don't have the time to do so at the moment. On Friday, January 24, 2014 6:46:23 PM UTC-5, Jarrod Swart wrote: > > The second version of The Joy of Clojure talks about building a debugging > repl that allows insertion of breakpoints into code. Perhaps something > similar could be done here. > > On Friday, January 24, 2014 4:38:59 PM UTC-5, t x wrote: >> >> Found it, apparently it's >> >> debug-repl => swank-clojure => CDT => ritz >> >> It appears cider does not yet support this, so ritz is probably the "most >> powerful" at the moment. >> >> >> On Fri, Jan 24, 2014 at 3:39 AM, t x <txre...@gmail.com> wrote: >> >>> Hi, >>> >>> One thing I miss from pre-Clojure scheme days is as follows: >>> >>> ## What I want >>> >>> 1 => (foo) ;; I'm calling foo at the repl >>> ... foo executes ... >>> ... at some point, an exception is thrown ... >>> >>> 2 => my interpreter _starts a new repl_ >>> * at the point where the exception was thrown >>> * lets me examine local environment variables >>> * lets me execute commands >>> * lets me "resume" the execution >>> >>> >>> ## Why "it can't work" >>> >>> Now, I understand why this can not work in general in Clojure, i.e. the >>> following example: >>> >>> (defn foo [] >>> (.someJavaFunctionThatThrowsException object)) >>> >>> In this case, the above is impossible since the exception is thrown from >>> _java land_ rather than Clojure land. >>> >>> >>> ## Why it might work >>> >>> Now, I'm not writing any code in java. The work I'm doing is pure >>> clojure. I can throw when the exception is thrown. >>> >>> >>> Is there some library, where instead of doing >>> >>> (defn foo [] >>> ... >>> (throw (ex-data ...)) >>> ...) >>> >>> I instead do: >>> >>> (defn foo [] >>> ... >>> (something-went-wrong-please-fire-up-a-repl) >>> ...) >>> >>> ? >>> >>> Thanks! >>> >> >> -- -- You received this message because you are subscribed to the Google Groups "Clojure" group. To post to this group, send email to clojure@googlegroups.com Note that posts from new members are moderated - please be patient with your first post. To unsubscribe from this group, send email to clojure+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/clojure?hl=en --- You received this message because you are subscribed to the Google Groups "Clojure" group. To unsubscribe from this group and stop receiving emails from it, send an email to clojure+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.