emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] [PATCH] Strip text properties from string code block arguments


From: Daniel Gerber
Subject: Re: [O] [PATCH] Strip text properties from string code block arguments
Date: Wed, 08 Jan 2014 11:03:14 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:24.0) Gecko/20100101 Thunderbird/24.2.0

Hi Bastien,

On 07/01/2014 18:31, Bastien wrote:
Daniel Gerber<address@hidden>  writes:

This change in org-babel-python-var-to-python makes python code blocks
accept a string with text properties (as one gets when referring
another code block). I guess there should be something similar for
other languages.
I don't understand why properties would be a problem here.
Can you elaborate a bit on this?
The problem is that formatting as s-expression puts them into python code.

Here is what I want to do.

First edit a query string:
#+RESULTS: query
#+BEGIN_SRC sparql
  select *
  where { ?x rdf:label "x\\r"@en }
#+END_SRC

(The trick of naming this block with #+results: is so that:
  1. org-edit-src-code uses the right mode
  2. the code block is not evaluated
  3. its body is passed as a string to other code blocks.
For lack of a better idea...)

Use the query string verbatim in another language:
#+NAME: py
#+BEGIN_SRC python :var q=query
  # return some_graph.query(q)
  return q
#+END_SRC

But now calling py() or tangling would give a syntax error because
#+BEGIN_SRC elisp :var q=query
  (org-babel-python-var-to-python q)
#+END_SRC

#+RESULTS:
: ""#("select *
: where { ?x rdf:label \"x\\\\r\"@en }
: " 0 9 (face org-block font-lock-multiline t wrap-prefix #(" " 0 2 (face org-indent)) line-prefix nil font-lock-fontified t fontified t) 9 30 (face org-block font-lock-multiline t wrap-prefix #(" " 0 2 (face org-indent)) line-prefix nil font-lock-fontified t fontified t) 30 35 (face org-block font-lock-multiline t font-lock-fontified t wrap-prefix #(" " 0 2 (face org-indent)) line-prefix nil fontified t) 35 40 (face org-block font-lock-multiline t font-lock-fontified t wrap-prefix #(" " 0 2 (face org-indent)) line-prefix nil fontified t) 40 41 (face org-block font-lock-multiline t wrap-prefix #(" " 0 2 (face org-indent)) line-prefix nil font-lock-fontified t fontified t) 41 42 (face org-block font-lock-multiline t wrap-prefix #(" " 0 2 (face org-indent)) line-prefix nil font-lock-fontified t fontified t))""

If org-babel-python-var-to-python does
#+BEGIN_SRC elisp :var q=query
  (format "%S" (substring-no-properties q))
#+END_SRC

#+RESULTS:
: "select *
: where { ?x rdf:label \"x\\\\r\"@en }
: "

then both evaluation and tangling work fine:
#+CALL: py()

#+RESULTS:
: select *
:     where { ?x rdf:label "x\\r"@en }


Best,
Daniel



reply via email to

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