Re: [O] Does org export have something like Lisp quasiquote and unquote?
Eric Schulte writes: > Oleh writes: > >>> >>> Think of code blocks as macros with optional interactive expansion. If >>> you don't execute the code block you need not ever see the results, >>> however with an additional ":exports results" header argument the code >>> block will be executed and replaced with it's results on export. >>> >>> Take a look at the (info "(org) Working With Source Code") portion of >>> the Org-mode manual. >>> >> >> Thanks, I'll look there. >> Is it possible to have a code block that evals to a string wrapped in >> #+BEGIN_HTML, #+END_HTML and be treated as a HTML block on export? >> > > Yes, see (info "(org) results"). As Eric suggested, the simplest is something like ":results value html" or ":results output html". But if you need something more involved, please keep reading. I recently had to use something similar, where the result of a code block would need to be wrapped in #+begin_src / #+end_src. After much help from this list, I ended up with this solution: http://orgmode.org/worg/org-hacks.html#sec-1-10-4 You can ignore / replace the "fetchsrc" bit with the code you want to evaluate, and adapt the "wrap-coq" to your setting. Alan
Re: [O] Does org export have something like Lisp quasiquote and unquote?
Oleh writes: >> >> Think of code blocks as macros with optional interactive expansion. If >> you don't execute the code block you need not ever see the results, >> however with an additional ":exports results" header argument the code >> block will be executed and replaced with it's results on export. >> >> Take a look at the (info "(org) Working With Source Code") portion of >> the Org-mode manual. >> > > Thanks, I'll look there. > Is it possible to have a code block that evals to a string wrapped in > #+BEGIN_HTML, #+END_HTML and be treated as a HTML block on export? > Yes, see (info "(org) results"). > > regards, > Oleh -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D
Re: [O] Does org export have something like Lisp quasiquote and unquote?
> > Think of code blocks as macros with optional interactive expansion. If > you don't execute the code block you need not ever see the results, > however with an additional ":exports results" header argument the code > block will be executed and replaced with it's results on export. > > Take a look at the (info "(org) Working With Source Code") portion of > the Org-mode manual. > Thanks, I'll look there. Is it possible to have a code block that evals to a string wrapped in #+BEGIN_HTML, #+END_HTML and be treated as a HTML block on export? regards, Oleh
Re: [O] Does org export have something like Lisp quasiquote and unquote?
Oleh writes: >> The following will do what you want. >> >> set the value >> #+begin_src lisp :results silent >> (defvar foo '(defun square (x) (* x x))) >> #+end_src >> >> #+begin_src lisp :results output pp code >> foo >> #+end_src >> >> #+RESULTS: >> #+BEGIN_SRC lisp >> >> (DEFUN SQUARE (X) (* X X)) >> #+END_SRC >> >> Best, >> >> -- >> Eric Schulte >> https://cs.unm.edu/~eschulte >> PGP: 0x614CA05D > > Thanks, Eric, > > but this isn't what I had in mind. I want the org-mode file to remain > unchanged while behaving as if it was changed, something like C > macros: C compiler is not aware of macros and I'm not aware of the > expanded code, but we get along nicely anyway. > Think of code blocks as macros with optional interactive expansion. If you don't execute the code block you need not ever see the results, however with an additional ":exports results" header argument the code block will be executed and replaced with it's results on export. Take a look at the (info "(org) Working With Source Code") portion of the Org-mode manual. Hope this helps, > > First use-case is that I'm writing documentation for a library of > functions, so some of them are mentioned a few times. I'd like to > refer to them not by name, which can be subjected to change but by a > file local variable. For instance, I've got a link in a table > referring to a heading. They both have the same name and I'd like to > keep them consistent, but I don't want to do it manually. > > Second use-case is that I'm generating a HTML block with > `htmlize-buffer' that I want to include in the document. I'd prefer > not to have hundreds of lines of HTML that correspond to 3 lines of > code that they're supposed to represent. I'd rather generate this HTML > via this macro mechanism that I hope exists in some form, maybe in > conjunction with a makefile-like mechanism. > > Here's the org file that I'm working on: > https://raw.github.com/abo-abo/lispy/gh-pages/index.org. > As you see a lot of redundancy there and also several huge ugly HTML blocks. > Btw, is there a way to #include HTML blocks? > Here's the export result: http://abo-abo.github.io/lispy/. > > regards, > Oleh -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D
Re: [O] Does org export have something like Lisp quasiquote and unquote?
> The following will do what you want. > > set the value > #+begin_src lisp :results silent > (defvar foo '(defun square (x) (* x x))) > #+end_src > > #+begin_src lisp :results output pp code > foo > #+end_src > > #+RESULTS: > #+BEGIN_SRC lisp > > (DEFUN SQUARE (X) (* X X)) > #+END_SRC > > Best, > > -- > Eric Schulte > https://cs.unm.edu/~eschulte > PGP: 0x614CA05D Thanks, Eric, but this isn't what I had in mind. I want the org-mode file to remain unchanged while behaving as if it was changed, something like C macros: C compiler is not aware of macros and I'm not aware of the expanded code, but we get along nicely anyway. First use-case is that I'm writing documentation for a library of functions, so some of them are mentioned a few times. I'd like to refer to them not by name, which can be subjected to change but by a file local variable. For instance, I've got a link in a table referring to a heading. They both have the same name and I'd like to keep them consistent, but I don't want to do it manually. Second use-case is that I'm generating a HTML block with `htmlize-buffer' that I want to include in the document. I'd prefer not to have hundreds of lines of HTML that correspond to 3 lines of code that they're supposed to represent. I'd rather generate this HTML via this macro mechanism that I hope exists in some form, maybe in conjunction with a makefile-like mechanism. Here's the org file that I'm working on: https://raw.github.com/abo-abo/lispy/gh-pages/index.org. As you see a lot of redundancy there and also several huge ugly HTML blocks. Btw, is there a way to #include HTML blocks? Here's the export result: http://abo-abo.github.io/lispy/. regards, Oleh
Re: [O] Does org export have something like Lisp quasiquote and unquote?
Oleh writes: > Hi all, > > I'd like to perform Elisp operations on org-mode buffer while exporting. > > Something like this (the comma unquotes like in Lisp quasiquote): > > ,(setq foo "(defun square (x)\n (* x x))") > > #+begin_src lisp > ,foo > #+end_src > #+BEGIN_HTML > ,(with-current-buffer >(with-current-buffer (get-buffer-create "*temp*") > (lisp-mode) > (insert (upcase foo)) > (htmlize-buffer)) > (kill-buffer "*temp*") > (buffer-string)) > #+END_HTML > > And I want it to be equivalent to: > > #+begin_src lisp > (defun square (x) > (* x x)) > #+end_src > #+BEGIN_HTML > > #+END_HTML > > Is something like this possible? > > regards, > Oleh > The following will do what you want. set the value #+begin_src lisp :results silent (defvar foo '(defun square (x) (* x x))) #+end_src #+begin_src lisp :results output pp code foo #+end_src #+RESULTS: #+BEGIN_SRC lisp (DEFUN SQUARE (X) (* X X)) #+END_SRC Best, -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D
[O] Does org export have something like Lisp quasiquote and unquote?
Hi all, I'd like to perform Elisp operations on org-mode buffer while exporting. Something like this (the comma unquotes like in Lisp quasiquote): ,(setq foo "(defun square (x)\n (* x x))") #+begin_src lisp ,foo #+end_src #+BEGIN_HTML ,(with-current-buffer (with-current-buffer (get-buffer-create "*temp*") (lisp-mode) (insert (upcase foo)) (htmlize-buffer)) (kill-buffer "*temp*") (buffer-string)) #+END_HTML And I want it to be equivalent to: #+begin_src lisp (defun square (x) (* x x)) #+end_src #+BEGIN_HTML #+END_HTML Is something like this possible? regards, Oleh