On Tue, Sep 11, 2012 at 10:13 PM, Gary Johnson <gwjoh...@uvm.edu> wrote:
> I just put together a simple example repo on GitHub, containing a literate > programming solution to the Potter Kata ( > http://codingdojo.org/cgi-bin/wiki.pl?KataPotter) using Emacs' org-babel > mode. You can check it out here: > > https://github.com/lambdatronic/org-babel-example > > Also be sure to take a look at the canonical online org-babel docs: > > http://orgmode.org/worg/org-contrib/babel/ > > In particular the intro section: > > http://orgmode.org/worg/org-contrib/babel/intro.html > > And even though it's a little bit dated w.r.t. the current org-mode > version in Emacs 24, this journal article on Org-Mode's literate > programming and reproducible research features is really, really cool to > work through (lots of nice code examples): > > http://www.jstatsoft.org/v46/i03 > > Happy hacking, > ~Gary > That's very cool, great example ! Thanks > > On Saturday, September 8, 2012 4:24:38 AM UTC-4, Denis Labaye wrote: >> >> >> >> On Thu, Sep 6, 2012 at 6:42 PM, lambdatronic <gwjo...@uvm.edu> wrote: >> >>> For those people (like myself) who do a lot of Literate Programming in >>> Emacs using Clojure and org-babel, migrating to nrepl and nrepl.el is >>> somewhat non-trivial. This is because the existing Clojure support in >>> org-babel (ob-clojure.el) relies on slime and swank-clojure when running >>> org-babel-execute-src-block (which redirects to org-babel-execute:clojure >>> in ob-clojure.el). >>> >>> So clearly this is actually an issue for both nrepl.el and >>> ob-clojure.el, not simply one or the other. All the same, I've hacked >>> together a simple workaround that fixes the problem and makes Literate >>> Programming under nrepl possible once again. If there is some slick way >>> this could be worked into nrepl.el's codebase that wouldn't break its >>> existing behavior (as this does), I'd be excited to see it. >>> >>> Here we go: >>> >>> ;; Patch result table rendering bug in ob-clojure (NREPL version) >>> (defun nrepl-send-request-sync (request) >>> "Send a request to the backend synchronously (discouraged). >>> The result is a plist with keys :value, :stderr and :stdout." >>> (with-current-buffer "*nrepl-connection*" >>> (setq nrepl-sync-response nil) >>> (nrepl-send-request request (nrepl-sync-request-handler >>> (current-buffer))) >>> (while (not (plist-get nrepl-sync-response :done)) >>> (accept-process-output)) >>> nrepl-sync-response)) >>> >>> (defun org-babel-execute:clojure (body params) >>> "Execute a block of Clojure code with Babel." >>> (let ((result-plist (nrepl-send-string-sync >>> (org-babel-expand-body:clojure body params) nrepl-buffer-ns)) >>> (result-type (cdr (assoc :result-type params)))) >>> (org-babel-script-escape >>> (cond ((eq result-type 'value) (plist-get result-plist :value)) >>> ((eq result-type 'output) (plist-get result-plist :value)) >>> (t (message "Unknown :results >>> type!")))))) >>> >>> Have fun! >>> >> >> It seems to be very interesting, I am already using Emacs / org-mode / >> clojure a lot, I was aware of org-babel, but never used it. >> Would you have a simple example project (on github, ...) on how to >> bootstrap this ? >> >> Thanks, >> >> Denis >> >> >> >>> -- >>> You received this message because you are subscribed to the Google >>> Groups "Clojure" group. >>> To post to this group, send email to clo...@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+u...@**googlegroups.com >>> >>> For more options, visit this group at >>> http://groups.google.com/**group/clojure?hl=en<http://groups.google.com/group/clojure?hl=en> >>> >> >> -- > 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 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