Re: [O] Table (used a "spreadsheet") org-sbe issues when the value is a string
Alex Bennéewrites: > So more correctly when org-confirm-babel-evaluate is set it breaks due > to info not containing a character position for the TBLFM code. I fixed > this by patching org-babel-check-confirm-evaluate: > > modified lisp/ob-core.el > @@ -242,7 +242,8 @@ should be asked whether to allow evaluation." > (and export (equal eval "query-export")) > (if (functionp org-confirm-babel-evaluate) > (save-excursion > - (goto-char (nth 5 info)) > + (when (nth 5 info) > + (goto-char (nth 5 info))) > (funcall org-confirm-babel-evaluate > ;; language, code block body > (nth 0 info) (nth 1 info))) > > I'm not sure the goto-char is legitimate anyway as the documentation for > org-confirm-babel-evaluate says nothing about point being set while it > executes. I agree and removed `goto-char'. Thank you for the analysis and the patch. Regards,
Re: [O] Table (used a "spreadsheet") org-sbe issues when the value is a string
Alex Bennéewrites: > Nicolas Goaziou writes: > >> Hello, >> >> Alex Bennée writes: >> >>> So calling scramble-string works as expected... >>> >>> #+tblname: reversed-strings >>> | abcde | #ERROR | >>> >>> | flibble | #ERROR | >>> | dibble | #ERROR | >>> | xyzzy | #ERROR | >>> | another | #ERROR | >>> >>> #+TBLFM: $2='(org-sbe scramble-string (str $$1)) >> >> I cannot reproduce it. I get: > > Hmm it turns out this interferes: > > ;; See > http://emacs.stackexchange.com/questions/499/finding-and-executing-org-babel-snippets-programatically > (defun my-babel-hashed-confirm (lang body) > > (setq org-confirm-babel-evaluate 'my-babel-hashed-confirm) > > Resetting to org-confirm-babel-evaluate to nil and it works. So more correctly when org-confirm-babel-evaluate is set it breaks due to info not containing a character position for the TBLFM code. I fixed this by patching org-babel-check-confirm-evaluate: modified lisp/ob-core.el @@ -242,7 +242,8 @@ should be asked whether to allow evaluation." (and export (equal eval "query-export")) (if (functionp org-confirm-babel-evaluate) (save-excursion - (goto-char (nth 5 info)) + (when (nth 5 info) + (goto-char (nth 5 info))) (funcall org-confirm-babel-evaluate ;; language, code block body (nth 0 info) (nth 1 info))) I'm not sure the goto-char is legitimate anyway as the documentation for org-confirm-babel-evaluate says nothing about point being set while it executes. -- Alex Bennée
Re: [O] Table (used a "spreadsheet") org-sbe issues when the value is a string
Nicolas Goaziouwrites: > Hello, > > Alex Bennée writes: > >> So calling scramble-string works as expected... >> >> #+tblname: reversed-strings >> | abcde | #ERROR | >> >> | flibble | #ERROR | >> | dibble | #ERROR | >> | xyzzy | #ERROR | >> | another | #ERROR | >> >> #+TBLFM: $2='(org-sbe scramble-string (str $$1)) > > I cannot reproduce it. I get: Hmm it turns out this interferes: ;; See http://emacs.stackexchange.com/questions/499/finding-and-executing-org-babel-snippets-programatically (defun my-babel-hashed-confirm (lang body) "Check against known hashes before prompting for confirmation. See `org-confirm-babel-evaluate'." (let ((check (list lang (md5 body ;; If not hashed, prompt (if (not (member check my-org-babel-hashes)) ;; Ask if you want to hash (if (yes-or-no-p "Store hash for block? ") ;; Hash is added, proceed with evaluation (progn (add-to-list 'my-org-babel-hashes check) 'nil) ;; Return 't to prompt for evaluation 't) (message "Valid hash auto-confirmed") 'nil))) (setq org-confirm-babel-evaluate 'my-babel-hashed-confirm) Resetting to org-confirm-babel-evaluate to nil and it works. > > #+name: reversed-strings > | abcde | edcba | > | flibble | elbbilf | > | dibble | elbbid | > | xyzzy | yzzyx | > | another | rehtona | > #+TBLFM: $2='(org-sbe scramble-string (str $$1)) > >> Even calling org-sbe directly from a source block: >> >> #+name: call-scramble-string-via-sbe >> #+begin_src emacs-lisp :var val="thing" >> >> (org-sbe scramble-string (str val)) >> #+end_src > > AFAIK, `org-sbe' is limited to tables. I was trying to replicate the way TBLFM compiles the macro. > > Regards, -- Alex Bennée
Re: [O] Table (used a "spreadsheet") org-sbe issues when the value is a string
Hello, Alex Bennéewrites: > So calling scramble-string works as expected... > > #+tblname: reversed-strings > | abcde | #ERROR | > > | flibble | #ERROR | > | dibble | #ERROR | > | xyzzy | #ERROR | > | another | #ERROR | > > #+TBLFM: $2='(org-sbe scramble-string (str $$1)) I cannot reproduce it. I get: #+name: reversed-strings | abcde | edcba | | flibble | elbbilf | | dibble | elbbid | | xyzzy | yzzyx | | another | rehtona | #+TBLFM: $2='(org-sbe scramble-string (str $$1)) > Even calling org-sbe directly from a source block: > > #+name: call-scramble-string-via-sbe > #+begin_src emacs-lisp :var val="thing" > > (org-sbe scramble-string (str val)) > #+end_src AFAIK, `org-sbe' is limited to tables. Regards, -- Nicolas Goaziou
Re: [O] Table (used a "spreadsheet") org-sbe issues when the value is a string
Nicolas Goaziouwrites: > Hello, > > Frederick Giasson writes: > >> Now, if I put a string in the format column, I al getting the following: >> >> >> >> #+NAME: average-dataset-size >> #+BEGIN_SRC clojure :var f="turtle" :exports none :results value >> (identity f) #+END_SRC >> >> #+RESULTS: average-dataset-size >> : turtle >> >> >> | Format | Sizes distribution in MB | Average size in MB | >> |+--+| >> | turtle | | #ERROR | >> #+TBLFM: $3='(org-sbe "average-dataset-size" (f $1)) >> >> > > According to `org-sbe' docstring, it should be > > #+TBLFM: $3='(org-sbe "average-dataset-size" (f $$1)) > > Documentation could be drastically improved in that area, the manual is > not even talking about `org-sbe'. Even this doesn't seem to work. In my case: #+name: scramble-string #+begin_src emacs-lisp :var str="abcde" (apply #'string (reverse (string-to-list str))) #+end_src #+RESULTS: scramble-string : edcba So far so good #+call: scramble-string(str="whatever-foo") #+RESULTS: : oof-revetahw So calling scramble-string works as expected... #+tblname: reversed-strings | abcde | #ERROR | | flibble | #ERROR | | dibble | #ERROR | | xyzzy | #ERROR | | another | #ERROR | #+TBLFM: $2='(org-sbe scramble-string (str $$1)) Hmm no dice... the debugger lists: Substitution history of formula Orig: '(org-sbe scramble-string (str $$1)) $xyz-> '(org-sbe scramble-string (str $$1)) @r$c-> '(org-sbe scramble-string (str $$1)) $1->'(org-sbe scramble-string (str $"abcde")) Result: #ERROR Format: NONE Final: #ERROR Even calling org-sbe directly from a source block: #+name: call-scramble-string-via-sbe #+begin_src emacs-lisp :var val="thing" (org-sbe scramble-string (str val)) #+end_src So is this just broken untested functionality or are there any working examples from which we could reverse engineer the proper docstring? -- Alex Bennée
Re: [O] Table (used a "spreadsheet") org-sbe issues when the value is a string
Hello, Frederick Giassonwrites: > Now, if I put a string in the format column, I al getting the following: > > > > #+NAME: average-dataset-size > #+BEGIN_SRC clojure :var f="turtle" :exports none :results value > (identity f) #+END_SRC > > #+RESULTS: average-dataset-size > : turtle > > > | Format | Sizes distribution in MB | Average size in MB | > |+--+| > | turtle | | #ERROR | > #+TBLFM: $3='(org-sbe "average-dataset-size" (f $1)) > > According to `org-sbe' docstring, it should be #+TBLFM: $3='(org-sbe "average-dataset-size" (f $$1)) Documentation could be drastically improved in that area, the manual is not even talking about `org-sbe'. Regards, -- Nicolas Goaziou
[O] Table (used a "spreadsheet") org-sbe issues when the value is a string
Hi Everybody, I am experiencing a few issues trying to update a cell value using =org-sbe= when the value of a column is a string. Here is an example that works when the value is a number: #+NAME: average-dataset-size #+BEGIN_SRC clojure :var f="turtle" :exports none :results value (identity f) #+END_SRC #+RESULTS: average-dataset-size : turtle | Format | Sizes distribution in MB | Average size in MB | |+--+| | 7 | | 7 | #+TBLFM: $3='(org-sbe "average-dataset-size" (f $1)) Now, if I put a string in the format column, I al getting the following: #+NAME: average-dataset-size #+BEGIN_SRC clojure :var f="turtle" :exports none :results value (identity f) #+END_SRC #+RESULTS: average-dataset-size : turtle | Format | Sizes distribution in MB | Average size in MB | |+--+| | turtle | | #ERROR | #+TBLFM: $3='(org-sbe "average-dataset-size" (f $1)) The debugging session I have is (which doesn't tell me with Result: is #ERROR): Substitution history of formula Orig: ? $xyz-> '(org-sbe "average-dataset-size" (f $1)) @r$c-> '(org-sbe "average-dataset-size" (f $1)) $1->'(org-sbe "average-dataset-size" (f "turtle")) Result: #ERROR Format: NONE Final: #ERROR Note #1: (identity) is a function in Clojure that returns the same value that is in input. I am wondering if this is a bug, or something that I am missing in how to use these features? Thanks for helping, Fred