From: Marc-Oliver Ihm <marc-oliver.ihm@online.de>
To: emacs-orgmode@gnu.org
Subject: [babel] Is there an elisp-way to see the header-arguments, that are passed to a #+call-line ?
Date: Sun, 05 Feb 2012 10:13:38 +0100 [thread overview]
Message-ID: <jglh82$673$1@dough.gmane.org> (raw)
Hi again,
is there an elisp-way to see the header-arguments, that are passed to a #+call-line ?
(This relates to my previous question "[babel] #+call-line removes hlines and headings ?", but has
shifted in subject, so I would like to start a new thread, which can be understood on its own ...)
I have tried the internal variable "params", but that only gives me the header-arguments
of the #+begin_src-block and NOT of the #+call-line.
This is illustrated in the example below:
#+call: parameters() :colnames yes
#+results: parameters()
| :colname-names | nil |
|----------------+------------------|
| :rowname-names | nil |
| :result-params | (silent replace) |
| :result-type | value |
| :comments | |
| :shebang | |
| :cache | no |
| :padline | |
| :noweb | no |
| :tangle | no |
| :exports | code |
| :results | silent |
| :session | none |
| :padnewline | yes |
| :hlines | yes |
| :colnames | no |
| :result-type | value |
| :result-params | (replace) |
| :rowname-names | nil |
| :colname-names | nil |
#+name: parameters
#+begin_src emacs-lisp
(mapcar (lambda (x) (list (car x) (cdr x))) params)
#+end_src
#+results: parameters
| :colname-names | nil |
| :rowname-names | nil |
| :result-params | (replace) |
| :result-type | value |
| :comments | |
| :shebang | |
| :cache | no |
| :padline | |
| :noweb | no |
| :tangle | no |
| :exports | code |
| :results | replace |
| :colnames | no |
| :hlines | yes |
| :padnewline | yes |
| :session | none |
The #+call line calls a #+begin_src-block named "parameters", which simple dumps the
content of the params-variable, which contains all the header arguments.
If I pass ":colnames yes" as a header argument, I nevertheless get dumped "no" in the example !
This is probably because the #+begin_src-block only has only access to its
own header-arguments (via the variable "params").
Therefore my question:
Is there any way to access the header-arguments of the #+call-line within the #+begin_src-block ?
Maybe with the "params" variable or maybe any other way ?
The reason I need to know this: The value of the header-argument ":colnames" of the #+call-line
governs, whether the #+begin_src-block is expected to return a table with or without column-names;
so to react accordingly (and not surprise users) I need to know within the #+begin_src-block
the value of the ":colnames" header-argument from the #+call-line.
Thanx a lot !
with kind regards, Marc-Oliver Ihm
P.s.: Possible solutions I can think of:
- Access the variable "params" not from the local scope but from the outer scope, however
I do not know, if elisp allows this.
- Pass the header-arguments of the #+call-line to the #+begin_src-block, but this would probably
require a patch to babel.
- Something even more elegant I just cannot figure out :-)
Am 30.01.2012 17:10, schrieb Eric Schulte:
>
> To explain the cause (if not rationale) for the current behavior; when
> executing a call line, an ephemeral code block is created at the point
> of the call line. The result of the called function is passed into this
> ephemeral block, and the output of the block is inserted into the
> buffer.
>
> This is why call lines have *two* possible sets of header arguments, one
> to pass to the original called code block, and one for local effect in
> the ephemeral block.
>
> The reason the colnames header argument is required for the call line
> and not the code block, is because hlines are only stripped when data
> passes *into* a code block as a variable. In this case the 'hlines are
> stripped when the table passes into the ephemeral code blocks.
>
> Hope the above is more illuminating that confusing,
>
next reply other threads:[~2012-02-05 9:13 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-02-05 9:13 Marc-Oliver Ihm [this message]
2012-02-05 16:22 ` [babel] Is there an elisp-way to see the header-arguments, that are passed to a #+call-line ? Eric Schulte
2012-02-05 16:45 ` Marc-Oliver Ihm
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='jglh82$673$1@dough.gmane.org' \
--to=marc-oliver.ihm@online.de \
--cc=emacs-orgmode@gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).