2013/6/8 Jay Fields <j...@jayfields.com <javascript:>>

> My favorite recent addition - I can run my app from within emacs, allowing 
>> me to change my app with a simple C-x C-e and see my changes immediately in 
>> the running app (no restart, refresh or reload necessary). 
>
>
> Would you mind to extend on that ?
>
> How is this done, exactly ?
>

Sure. I assume you have some top level function that you call to 'start' 
your application. If you ever use 'lein run', then I'm probably talking 
about the -main function in whatever namespace you specify as your main 
namespace 
(e.g. 
https://github.com/technomancy/leiningen/blob/master/sample.project.clj#L130)

Let's pretend your main namespace is my-main.

First I start a new nrepl. M-x nrepl-jack-in
Then I open my-main in a new buffer. C-x C-f my_main.clj
(If there isn't one already) I put a comment at the bottom of the 
namespace. c-tab
In the comment, I put (-main) and, after the parenthesis, I C-x C-e to 
evaluate the previous form.

At that point my app is running from within Emacs. Now I can go to any form 
in the codebase and C-x C-e, which will evaluate the form in my running 
nrepl, which is also running my app. Let's say I have some function that's 
being called every minute and printing the time via println. I can go to 
that function and change the format of the output, C-x C-e the entire 
function, and the next println will be in my new format. There are a few 
gotchas (it's problematic to redef a defmulti, once you've passed a f in as 
a parameter you can't redef it), but for the 95% case I don't need to do 
anything special - it just works.

Cheers, Jay

-- 
-- 
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