emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] [babel] BUG in call lines


From: Marc-Oliver Ihm
Subject: Re: [O] [babel] BUG in call lines
Date: Thu, 22 Mar 2012 21:04:19 +0100
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:10.0.2) Gecko/20120216 Thunderbird/10.0.2

Hi Andreas,

I think the behaviour you have discovered is governed by the constant 
org-babel-block-lob-one-liner-regexp;
However, tweaking this regular expression the right way seems to be really hard 
(impossible):

 
http://stackoverflow.com/questions/546433/regular-expression-to-match-outer-brackets

,so the only option seems to be to write a function to do the matching 
correctly,
but which is probably a big task ...

So as I understand things, I would recommend to stick with the current 
behaviour and use your workaround :-)


with kind regards, Marc


Am 22.03.2012 09:42, schrieb Andreas Leha:
Hi all,

there seems to be a bug in call lines:

Suppose, I have a src block with two parameters:

#+name: insert_hline
#+header: :var fulltable=mytable() :var after_row=1
#+begin_src emacs-lisp
   (let ((rrr (cons (quote hline) fulltable))
         (bottomrows (nthcdr after_row fulltable))
         (toprows (reverse (nthcdr (- (length fulltable) after_row) (reverse 
fulltable)))))
     (setcdr rrr bottomrows)
     (setcdr (nthcdr (- after_row 1) fulltable) rrr)
     fulltable)
  #+end_src

As first argument I would like to pass the results of a second
source block:
#+name: mytable
#+begin_src R
   data.frame(par=1:3, val=1:3)
#+end_src

#+results: mytable
| 1 | 1 |
| 2 | 2 |
| 3 | 3 |

So, what I do is:

#+call: insert_hline(fulltable=mytable(),after_row=1) :hlines yes :colnames no

#+results: insert_hline(fulltable=mytable()
| 1 | 1 |
|---+---|
| 2 | 2 |
| 3 | 3 |

But the #+results: name is shortened.

So, the following won't produce another results block, but wrongly update
the block above:
#+call: insert_hline(fulltable=mytable(),after_row=2) :hlines yes :colnames no


The problem seems to be the ")" within the parameter list stopping
some parsing.

Note: This works as expected
#+call: insert_hline[:var fulltable=mytable() :var after_row=1]() :hlines yes 
:colnames no

#+results: insert_hline[:var fulltable=mytable() :var after_row=1]()
| 1 | 1 |
|---+---|
| 2 | 2 |
| 3 | 3 |

#+call: insert_hline[:var fulltable=mytable() :var after_row=2]() :hlines yes 
:colnames no

#+results: insert_hline[:var fulltable=mytable() :var after_row=2]()
| 1 | 1 |
| 2 | 2 |
|---+---|
| 3 | 3 |


Regards,
Andreas








reply via email to

[Prev in Thread] Current Thread [Next in Thread]