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.

Reply via email to