Hello Thomas and Charles,

ccbe...@ucsd.edu writes:

> A simple example: generate code in sh that is run in emacs-lisp

This is almost what I want, with two differences: I don't want to run
the generated code, but to pretty-print it, and I want to do this with
another language than emacs-lisp.

> #+name: make-elisp
> #+BEGIN_SRC sh :exports none :var fun="+"
> echo "(" $fun "1 2)"
> #+END_SRC
>
> #+BEGIN_SRC emacs-lisp :noweb yes :exports results
> <<make-elisp()>>
> #+END_SRC
>
> #+RESULTS:
> : 3
>
> #+BEGIN_SRC emacs-lisp :noweb yes :exports results
> <<make-elisp("-")>>
> #+END_SRC
>
> #+RESULTS:
> : -1
>
> #+BEGIN_SRC emacs-lisp :noweb yes :exports results
> <<make-elisp("list")>>
> #+END_SRC
>
> #+RESULTS:
> | 1 | 2 |

I tried this, but I cannot make it fit my purpose. What I want is a
function that will create an org mode source block to be exported as
nicely formatted source code.

Here is what I tried:

#+name: fetchcoq
#+BEGIN_SRC sh :exports none :var f="demo.v"
head $f
#+END_SRC

#+BEGIN_SRC coq :noweb yes :exports code
<<fetchcoq("demo.v")>>
#+END_SRC

If I export this, I get a block with lists, as if the results of
"fetchcoq" was translated into an elisp data structure:

,----
| (("Definition toto : forall x" "exists y" "x = y.") ("" "" "") ("Lemma foo: 
forall x" "x=x." ""))
`----

I tried this alternate approach, to directly generate the block:

#+name: fetchcoq2
#+BEGIN_SRC sh :exports none :results raw :var f="demo.v"
echo "#+BEGIN_SRC coq"
head $f
echo
echo "#+END_SRC"
#+END_SRC

#+call: fetchcoq2("demo.v")

But then I get a result like this, with extra quoting:

#+RESULTS:
: #+BEGIN_SRC coq
: Definition toto : forall x, exists y, x = y.
: 
: Lemma foo: forall x, x=x.
: #+END_SRC

I feel like I'm missing something obvious. ":results code" is exactly
what I want (put the results in a SRC block), but I don't know how to
specify the headers of the generated code block.

Thanks,

Alan

Reply via email to