emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Rick Frankel <rick@rickster.com>
To: Eric Schulte <schulte.eric@gmail.com>
Cc: emacs-orgmode <emacs-orgmode@gnu.org>
Subject: [Bug] #+call does not respect :colnames argument
Date: Fri, 26 Jul 2013 11:12:48 -0400	[thread overview]
Message-ID: <1e44d3b3697f439e425399908547d946@mail.rickster.com> (raw)

Eric-

I have debugged why the :colnames argument is not respected as to
removing the header from a table var.

* Given
#+name: with-hline
| A | B | C |
|---+---+---|
| 1 | 2 | 3 |
| 4 | 5 | 6 |

#+name: with-hline2
| B | C | D |
|---+---+---|
| 2 | 3 | 4 |
| 5 | 6 | 7 |

#+name: emacs-echo
#+BEGIN_SRC emacs-lisp :var table=with-hline :colnames yes
(mapcar (lambda (x) (mapcar '1+ x)) table)
#+END_SRC

#+call: emacs-echo(table=with-hline2)[:colnames yes]

* Evaluation
When the `#+call' line is executed, `org-babel-process-params' is
called multiple times. When it is called the last time to process
the actual input (here, calling =emacs-echo= with the param
=with-hline2=), the `:colname-names' parameter has already been (to
=(table "A" "B" "C")=, taken from the variable in the source blocks
header) as a side-effect of the call to
`org-babel-get-src-block-info'. So, when the block is executed later
in the function, then next call to `org-babel-process-params' does
not call disassemble table (taking into account the value of
`:colnames') but uses =processed-vars= directly instead, causing the 
full
table to be used without calling `org-babel-disassemble-tables'.

Here's the relevant section of code from `org-babel-process-params':

#+BEGIN_SRC emacs-lisp
(if (and (assoc :colname-names params)
(assoc :rowname-names params))
(list processed-vars)
(org-babel-disassemble-tables
processed-vars
(cdr (assoc :hlines params))
(cdr (assoc :colnames params))
(cdr (assoc :rownames params))))
#+END_SRC

And here's a cleaned-up debug trace:

#+BEGIN_EXAMPLE
(list processed-vars)
;; called again later in execute-src-block, does not properly parse 
=with-hline2= var
org-babel-process-params(((:comments . "") (:shebang . "") (:cache . 
"no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports . 
"results") (:results . "silent") (:var . "table=with-hline2") (:hlines . 
"yes") (:padnewline . "yes") (:session . "none") (:colnames . "yes") 
(:result-type . value) (:result-params "replace") (:rowname-names) 
(:colname-names (table "A" "B" "C"))))
;; calls disassemble-tables and returns with :colname-names set
org-babel-process-params(((:comments . "") (:shebang . "") (:cache . 
"no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports . 
"results") (:results . "replace") (:var . "table=with-hline") (:colnames 
. "yes") (:session . "none") (:padnewline . "yes") (:hlines . "yes")))
org-babel-get-src-block-info()
org-babel-execute-src-block(nil nil ((:var . "table=with-hline2") 
(:results . "silent")))
org-babel-ref-resolve("emacs-echo(table=with-hline2)[:colnames yes]")
org-babel-ref-parse("results=emacs-echo(table=with-hline2)[:colnames 
yes]")
org-babel-process-params(((:comments . "") (:shebang . "") (:cache . 
"no") (:padline . "") (:noweb . "no") (:tangle . "no") (:exports . 
"results") (:results . "replace") (:var . 
"results=emacs-echo(table=with-hline2)[:colnames yes]") (:colnames . 
"no") (:hlines . "yes") (:padnewline . "yes") (:session . "none")))
org-babel-lob-execute(("emacs-echo(table=with-hline2)[:colnames yes]" 
nil 0 nil))
#+END_EXAMPLE

rick

             reply	other threads:[~2013-07-26 15:12 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-07-26 15:12 Rick Frankel [this message]
2013-07-26 17:53 ` [Bug] #+call does not respect :colnames argument Eric Schulte
2013-07-26 20:52   ` Rick Frankel
2013-07-27  0:54     ` Eric Schulte
2013-07-29  1:10       ` Rick Frankel
2013-07-29  4:18       ` Achim Gratz
2013-07-29 14:00         ` Eric Schulte
2013-07-29 17:01           ` Achim Gratz
2013-07-29 17:20             ` Eric Schulte

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=1e44d3b3697f439e425399908547d946@mail.rickster.com \
    --to=rick@rickster.com \
    --cc=emacs-orgmode@gnu.org \
    --cc=schulte.eric@gmail.com \
    /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).