Thanks for the great example Gary! I've been meaning to try org-babel out for a while but never got around to it.

I just tried your example and when I run org-babel-tangle the code blocks are not expanded into the source file, but rather the code block names are just inserted into the source destination (e.g. <<find-discounted-subsets>> instead of the actual function). Any ideas on what may be wrong? Do you have global settings that are perhaps making the tangle work differently on your setup? I was able to export the document to HTML just fine and execute the clojure code, so the only issue appears to be tangling.

I'm using Emacs 24 and the only org specific code I have is applying your provided patch after requiring ob-clojure.

Thanks again for the example,
Ben

On 9/11/12 2:13 PM, Gary Johnson 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

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

Reply via email to