Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-29 Thread Eric Schulte
Achim Gratz  writes:

> Eric Schulte writes:
>> I just pushed up a fix, I now only get 1 failing test locally, but it is
>> related to table alignment so I believe it must be unrelated to this
>> commit.
>
> I confirm the fix.  As to your oither test fail, it doesn't show up for
> me and it most certainly shouldn't show up for you if you started the
> test suite via "make test-dirty".  Is that not working for you?
>

With "make test-dirty" I get all tests passing as expected.  The table
alignment error was from running the test suite interactively with the
`org-test-run-all-tests' function, so it is probably due to something
specific to my config.

Thanks,

>
>
> Regards,
> Achim.

-- 
Eric Schulte
http://cs.unm.edu/~eschulte



Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-29 Thread Achim Gratz
Eric Schulte writes:
> I just pushed up a fix, I now only get 1 failing test locally, but it is
> related to table alignment so I believe it must be unrelated to this
> commit.

I confirm the fix.  As to your oither test fail, it doesn't show up for
me and it most certainly shouldn't show up for you if you started the
test suite via "make test-dirty".  Is that not working for you?


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Factory and User Sound Singles for Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds




Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-29 Thread Eric Schulte
Achim Gratz  writes:

> Eric Schulte writes:
>> I've just pushed up that patch.
>
> …which breaks testing:
>
> 10 unexpected results:
>FAILED  ob-exp/use-case-of-reading-entry-properties
>FAILED  test-ob-header-arg-defaults/global/call
>FAILED  test-ob-header-arg-defaults/global/noweb
>FAILED  test-ob-header-arg-defaults/tree/accumulate/call
>FAILED  test-ob-header-arg-defaults/tree/accumulate/noweb
>FAILED  test-ob-header-arg-defaults/tree/complex/call
>FAILED  test-ob-header-arg-defaults/tree/complex/noweb
>FAILED  test-ob-header-arg-defaults/tree/overwrite/call
>FAILED  test-ob-header-arg-defaults/tree/overwrite/noweb
>FAILED  test-ob-lob/call-with-header-arguments
>
> with 
>
> (wrong-type-argument consp nil)
>
> None of these tests deal with table arguments AFAICS.
>

I just pushed up a fix, I now only get 1 failing test locally, but it is
related to table alignment so I believe it must be unrelated to this
commit.

Best,

>
>
> Regards,
> Achim.

-- 
Eric Schulte
http://cs.unm.edu/~eschulte



Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-28 Thread Achim Gratz
Eric Schulte writes:
> I've just pushed up that patch.

…which breaks testing:

10 unexpected results:
   FAILED  ob-exp/use-case-of-reading-entry-properties
   FAILED  test-ob-header-arg-defaults/global/call
   FAILED  test-ob-header-arg-defaults/global/noweb
   FAILED  test-ob-header-arg-defaults/tree/accumulate/call
   FAILED  test-ob-header-arg-defaults/tree/accumulate/noweb
   FAILED  test-ob-header-arg-defaults/tree/complex/call
   FAILED  test-ob-header-arg-defaults/tree/complex/noweb
   FAILED  test-ob-header-arg-defaults/tree/overwrite/call
   FAILED  test-ob-header-arg-defaults/tree/overwrite/noweb
   FAILED  test-ob-lob/call-with-header-arguments

with 

(wrong-type-argument consp nil)

None of these tests deal with table arguments AFAICS.


Regards,
Achim.
-- 
+<[Q+ Matrix-12 WAVE#46+305 Neuron microQkb Andromeda XTk Blofeld]>+

Factory and User Sound Singles for Waldorf Blofeld:
http://Synth.Stromeko.net/Downloads.html#WaldorfSounds




Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-28 Thread Rick Frankel
On Fri, Jul 26, 2013 at 06:54:08PM -0600, Eric Schulte wrote:
> Rick Frankel  writes:
> The later is not valid call line syntax, see [1] for a full description
> of the call line syntax.  In effect what happens in the latter case, is
> you set :colnames to "yes]".

Oh, ok. I just saw other people using that syntax on the  list so wondered.

> Thanks for you help debugging this.

my pleasure. ust wish i understood the code well enought to provide
patches instead :{.

rick



Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-26 Thread Eric Schulte
Rick Frankel  writes:

> On Fri, Jul 26, 2013 at 11:53:33AM -0600, Eric Schulte wrote:
>> Rick Frankel  writes:
>> 
>> > I have debugged why the :colnames argument is not respected as to
>> > removing the header from a table var.
>
>> Thanks for taking the time to find the root of this problem.  I believe
>> I've fixed this by change the `org-babel-merge-params' function so that
>> when the value of a variable is update, then colname-names and
>> rowname-names values saved for that variable are removed.
>> 
>> In my local tests the attached patch fixes this issue.  If it works for
>> you as well then I'll apply it.
>
> Works for me. Thanx, this will simplify a lot of code (e.g., the
> example dot-from-tables that was floating around last week)
>
> Aside... It's difficult for me to follow the code, so can you explain
> the why the different results between:
>
> #+call: emacs-echo(table=with-hline2) :colnames yes
>
> #+results:
> | B | C | D |
> |---+---+---|
> | 3 | 4 | 5 |
> | 6 | 7 | 8 |
>
> and
>
> #+call: emacs-echo(table=with-hline2)[:colnames yes]
>
> #+results:
> | B | C | D |
>

The later is not valid call line syntax, see [1] for a full description
of the call line syntax.  In effect what happens in the latter case, is
you set :colnames to "yes]".

I've just pushed up that patch.

Thanks for you help debugging this.

>
>
> thanx again,
> rick


Footnotes: 
[1]  (info "(org)Evaluating Code Blocks")

-- 
Eric Schulte
http://cs.unm.edu/~eschulte



Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-26 Thread Rick Frankel
On Fri, Jul 26, 2013 at 11:53:33AM -0600, Eric Schulte wrote:
> Rick Frankel  writes:
> 
> > I have debugged why the :colnames argument is not respected as to
> > removing the header from a table var.

> Thanks for taking the time to find the root of this problem.  I believe
> I've fixed this by change the `org-babel-merge-params' function so that
> when the value of a variable is update, then colname-names and
> rowname-names values saved for that variable are removed.
> 
> In my local tests the attached patch fixes this issue.  If it works for
> you as well then I'll apply it.

Works for me. Thanx, this will simplify a lot of code (e.g., the
example dot-from-tables that was floating around last week)

Aside... It's difficult for me to follow the code, so can you explain
the why the different results between:

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

#+results:
| B | C | D |
|---+---+---|
| 3 | 4 | 5 |
| 6 | 7 | 8 |

and

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

#+results:
| B | C | D |


thanx again,
rick



Re: [O] [Bug] #+call does not respect :colnames argument

2013-07-26 Thread Eric Schulte
Rick Frankel  writes:

> 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

Hi Rick,

Thanks for taking the time to find the root of this problem.  I believe
I've fixed this by change the `org-babel-merge-params' function so that
when the value of a variable is update, then colname-names and
rowname-names values saved for that variable are removed.

In my local tests the attached patch fixes this issue.  If it works for
you as well then I'll apply it.

Thanks,

>From e789367e7ec4badd74e9aafb0249aa8798842f65 Mon Sep 17 00:00:00 2001
From: Eric Schulte 
Date: Fri, 26 Jul 2013 11:48:51 -0600
Subject: [PATCH] delete colnames/rownames for replaced variables

  Thanks to Rick Frankel for help debugging this problem.

* lisp/ob-core.el (org-babel-merge-params): When merging parameters, if
  a variable is replaced with a new value, then delete colnames/rownames
  for the original value of that variable.
---
 lisp/ob-core.el | 40 +---
 1 file changed, 29 insertions(+), 11 deletions(-)

diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index b213c2a..c2722db 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -2269,7 +2269,8 @@ parameters when merging lists."
 new-params))
 			result-params)
 		  output)))
-	 params results exports tangle noweb cache vars shebang comments padline)
+	 params results exports tangle noweb cache vars shebang comments padline
+	 clearnames)
 
 (mapc
  (lambda (plist)
@@ -2286,21 +2287,25 @@ parameters when merging lists."
 		   (setq vars
 			 (append
 			  (if (member name (mapcar #'car vars))
-			  (delq nil
-(mapcar
- (lambda (p)
-   (unless (equal (car p) name) p))
- vars))
+			  (progn
+(push name clearnames)
+(delq nil
+  

[O] [Bug] #+call does not respect :colnames argument

2013-07-26 Thread Rick Frankel

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