Re: [O] RE: [Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
Vladimir Alexiev vladi...@sirma.bg writes: I believe quoted strings are already handled, e.g., #+results: : (a b c) They are not. This leaves the quotes as part of the string. Alright, I've changed this behavior so that double-quoted strings are read into variable values (removing the quotes). For example #+results: spaces-wrapped-string - pass through with space #+begin_src emacs-lisp :var res=spaces-wrapped-string[0] res #+end_src #+results: : pass through with space Best -- Eric ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[O] RE: [Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
I've applied the patch attached to my previous email and unless there is a real push-back ... Could you add handling of quoted strings? And most importantly, document all of this in (org)var. Here is a merged dscription: If a value starts with one of ('` it is read as an emacs lisp sexp. If it starts with then it's read as a quoted string: start/end quotes are stripped, \ and \\ are unescaped (this is useful for embedding leading/trailing whitespace in strings). If it looks like a number, it's read as a number. Else it's read as a literal string, without any quotation or escaping. (Please note that | in tables is always interpreted as column separator and currently there is no way to quote it) ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [O] RE: [Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
Vladimir Alexiev vladi...@sirma.bg writes: I've applied the patch attached to my previous email and unless there is a real push-back ... Could you add handling of quoted strings? I believe quoted strings are already handled, e.g., #+results: elisp-looking-table | 1 | (a b c) | | 2 | (a b c) | #+headers: :var without=elisp-looking-table[0,1] #+headers::var with=elisp-looking-table[1,1] #+begin_src perl $with, $without #+end_src #+results: : (a b c) : (a b c) And most importantly, document all of this in (org)var. Here is a merged dscription: Thanks for the reminder, I have updated the documentation. Best -- Eric If a value starts with one of ('` it is read as an emacs lisp sexp. If it starts with then it's read as a quoted string: start/end quotes are stripped, \ and \\ are unescaped (this is useful for embedding leading/trailing whitespace in strings). If it looks like a number, it's read as a number. Else it's read as a literal string, without any quotation or escaping. (Please note that | in tables is always interpreted as column separator and currently there is no way to quote it) ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
RE: [O] RE: [Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
I believe quoted strings are already handled, e.g., #+results: : (a b c) They are not. This leaves the quotes as part of the string. Please add a second usage to the description: (this is useful for having leading/trailing whitespace in a string, or having a leading ('` yet preventing the emacs lisp treatment) ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
Hi Eric, Eric Schulte wrote: However I do agree that this would be onerous to have to wrap every cell of a table in double quotes... Aren't we forced to do so, right now? As in the following home-made example: #+TITLE: Show differences between files * Code Assuming you have two directories (namely =xhtml-dir= and =xhtml-dir-bak=, accessible from this local directory), the following blocks of code will compare named files (see column 2 of table) in them, in both /text/ and /binary/ versions. #+srcname: diff-text #+begin_src sh :var file= diff -sq --strip-trailing-cr xhtml-dir/$file xhtml-dir-bak/$file /dev/null case $? in 0) echo identical;; 1) echo differ;; 2) echo no such file;; *) echo ?;; esac #+end_src #+srcname: diff-binary #+begin_src sh :var file= diff -sq xhtml-dir/$file xhtml-dir-bak/$file /dev/null case $? in 0) echo identical;; 1) echo differ;; 2) echo no such file;; *) echo ?;; esac #+end_src * Results | FPH | File | Text | Binary| |-+---+---+---| | M | Icopreations.xhtml | identical | identical | | M | Ocuevaonspfiessai.xhtml | identical | differ| | M | Ocuevain-tut.xhtml | differ| differ| | M | Ocuevatagessai.xhtml| identical | differ| | M | Ocuf2-stg.xhtml | differ| differ| | M | Ocurolro.xhtml | identical | differ| | M | Ocuroliers.xhtml| differ| differ| | M | Ocurolredit.xhtml | identical | differ| | M | Ocusigletiquebc1233de.xhtml | differ| differ| | M | Rocsaieprestations.xhtml| identical | identical | #+TBLFM: $3='(sbe diff-text (file $2))::$4='(sbe diff-binary (file $2)) I had to enclose the filenames between double quotes, for the =sbe= code to work. Trying what you wrote on http://eschulte.github.com/babel-dev/DONE-literal-values-from-tables.html, that is using $$2 instead of $2 has the following behavior: when evaluating the table, Org prompts me for a Lisp expression!? Best regards, Seb -- Sébastien Vauban ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[O] Re: [Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
Hi Seb, earlier in this thread, I attached a patch which allows string results in tables which look like elisp to be interpreted literally, e.g., #+results: elisp-looking-table | 1 | (+ 1 1) | | 2 | (+ 2 2) | | 3 | (+ 3 3) | #+begin_src perl :var data=elisp-looking-table[1,1] $data #+end_src results in #+results: : (+ 2 2) rather than #+results: : 4 Trying what you wrote on http://eschulte.github.com/babel-dev/DONE-literal-values-from-tables.html, that is using $$2 instead of $2 has the following behavior: when evaluating the table, Org prompts me for a Lisp expression!? It like doubel dollar sign syntax in table evaluation has bit-rot. It appears that some other part of Org-mode now interprets the double dollar sign as a prompt to the user -- although I can't seem to find the relevant code. The `sbe' in-table evaluation could use some attention. Best -- Eric ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[O] Re: [Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
Vladimir Alexiev vladi...@sirma.bg writes: What syntax would you suggest to indicate that a variable is to be passed without the possibility of elisp evaluation I think this should be done with a header arg, since they have very flexible setup scheme: see (info (org)Using header arguments) values of header arguments can be set in six different ways - Ideally, the arg should be attached to #+tblname: since it's a characteristic of the table itself This would be a good way to go, however there is currently no support for attaching header arguments to tables, so this is not viable---unless there are enough other motivating use cases for attaching header arguments to tables and results, in which case this could be revisited. - If attached to #+begin_src: then it will be dissociated from the table, and all :var's of that line will be forced to use the same arg. - But that's good enough since it can be set in various ways. For me most useful: -- org-babel-default-header-args: global -- #+BABEL: per file The header arg should be called :read-as (or :var-read). Considerations: - should be quite distinct so it can be used as a property name - should use dash so it's analogous to no-expand Its values should be: - literal: If a value looks like a number, it's read as a number. Else it's read as a literal string. - elisp or nil (default): If a value starts with one of ('` it's read as emacs lisp. Else it's read as 'literal'. - quoted: If a value starts with then it's read as a quoted string: start and end quotes are stripped, and \ escaped quotes are unescaped (this is useful for embedding leading/trailing whitespace in strings). Else it's read as `literal'. - quoted_elisp: combination of `quoted' and `elisp' (I assume that using multiple values per arg is not supported) There are currently a number of header arguments which allow multiple arguments, e.g., :results. This above is about data coming from tables, since I haven't used the other two options (literal value and code block). The chosen solution should work for those too. The problem here is the same as in our other table indexing thread, namely it requires that some header arguments be parsed and their results available *before* the :var header arguments are parsed. I think that the only viable solution may involve adding something to the actual :var header argument, although I can't think of any obvious syntax there. I'm thinking that any of the above would introduce undue complexity to the header argument parsing. For the interim, I've applied the patch attached to my previous email and unless there is a real push-back from users who are embedding executable elisp code into tables and lists I think this solution is the best compromise between usability and simplicity. Thanks -- Eric Please note that org-babel-read says This is taken almost directly from `org-read-prop'. so the chosen solution should be compatible with that. But I can't find such function. Yes, the patch attached to my previous email fixes this documentation string. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
would be onerous to have to wrap every cell of a table in double quotes... I tried doing this as a workaround, but it is not since the quotes are passed to perl, and that's not what I want it would be a breaking change for anyone who is currently relying on the ability Right, that's why I think it should be an option. The default could stay as is, but should be documented. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
Re: [Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
Vladimir Alexiev vladi...@sirma.bg writes: would be onerous to have to wrap every cell of a table in double quotes... I tried doing this as a workaround, but it is not since the quotes are passed to perl, and that's not what I want it would be a breaking change for anyone who is currently relying on the ability Right, that's why I think it should be an option. The default could stay as is, but should be documented. What syntax would you suggest to indicate that a variable is to be passed without the possibility of elisp evaluation. I agree making this behavior optional would be ideal, but I couldn't think of an intuitive syntax. Cheers -- Eric ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[Orgmode] Re: org-babel-read should have option NOT to interpret as elisp
What syntax would you suggest to indicate that a variable is to be passed without the possibility of elisp evaluation I think this should be done with a header arg, since they have very flexible setup scheme: see (info (org)Using header arguments) values of header arguments can be set in six different ways - Ideally, the arg should be attached to #+tblname: since it's a characteristic of the table itself - If attached to #+begin_src: then it will be dissociated from the table, and all :var's of that line will be forced to use the same arg. - But that's good enough since it can be set in various ways. For me most useful: -- org-babel-default-header-args: global -- #+BABEL: per file The header arg should be called :read-as (or :var-read). Considerations: - should be quite distinct so it can be used as a property name - should use dash so it's analogous to no-expand Its values should be: - literal: If a value looks like a number, it's read as a number. Else it's read as a literal string. - elisp or nil (default): If a value starts with one of ('` it's read as emacs lisp. Else it's read as 'literal'. - quoted: If a value starts with then it's read as a quoted string: start and end quotes are stripped, and \ escaped quotes are unescaped (this is useful for embedding leading/trailing whitespace in strings). Else it's read as `literal'. - quoted_elisp: combination of `quoted' and `elisp' (I assume that using multiple values per arg is not supported) This above is about data coming from tables, since I haven't used the other two options (literal value and code block). The chosen solution should work for those too. Please note that org-babel-read says This is taken almost directly from `org-read-prop'. so the chosen solution should be compatible with that. But I can't find such function. ___ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode