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.