From: Aaron Ecay <aaronecay@gmail.com>
To: Nicolas Goaziou <mail@nicolasgoaziou.fr>
Cc: emacs-orgmode@gnu.org
Subject: Re: org tables into R?
Date: Mon, 05 Jan 2015 23:27:38 -0500 [thread overview]
Message-ID: <87r3v8v8hx.fsf@gmail.com> (raw)
In-Reply-To: <87zj9xa1ni.fsf@nicolasgoaziou.fr>
[-- Attachment #1: Type: text/plain, Size: 1285 bytes --]
Hi Nicolas,
2015ko urtarrilak 5an, Nicolas Goaziou-ek idatzi zuen:
>
> Hello,
>
> Aaron Ecay <aaronecay@gmail.com> writes:
>
>> Recently(-ish), Nicolas updated the org-table functions to use the
>> export framework. One of the drawbacks of this approach (as you have
>> brought to our attention) is that export filters are invoked. This
>> should probably be disabled.
>
> Indeed. I removed user-defined filters and hooks. Thank you.
>
>> Another drawback is the detection of unexpanded macros (which will be
>> triggered e.g. if a tabular babel result has macro-like {{{text}}} in
>> it). A proof-of-concept patch for this is attached.
>
> I don't think it needs to be fixed: macro would then be silently
> dropped, which is a step backwards.
You are correct about the silent dropping of macro-like text. However,
with current master that case gives an undefined macro error, which is
even worse. Try this (in emacs -Q with org and ESS in the load-path) to
see it:
#+name: foo
#+begin_src R
c("foo","{{{bar}}}")
#+end_src
> OTOH "ob-R.el" should consider using ":raw t" parameter for its table
> conversion function.
I think :raw is needed in ‘org-babel-insert-result’ in addition to my
previous patch. New patch attached.
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-babel-fix-macros-in-tabular-output.patch --]
[-- Type: text/x-diff, Size: 2996 bytes --]
From 4d2985ba88d2ba0c35ff715a7285469e8040d4b0 Mon Sep 17 00:00:00 2001
From: Aaron Ecay <aaronecay@gmail.com>
Date: Sun, 4 Jan 2015 18:14:26 -0500
Subject: [PATCH] [babel] fix macros in tabular output
* lisp/ox.el (org-export-as): Support :sloppy-macros plist entry.
* lisp/org-table.el (orgtbl-to-generic): Use it.
* lisp/ob-R.el (org-babel-R-assign-elisp):
* lisp/ob-core.el (org-babel-insert-result): Use :raw argument to
org-table conversion.
---
lisp/ob-R.el | 2 +-
lisp/ob-core.el | 2 +-
lisp/org-table.el | 2 +-
lisp/ox.el | 3 ++-
4 files changed, 5 insertions(+), 4 deletions(-)
diff --git a/lisp/ob-R.el b/lisp/ob-R.el
index 2470b4f..6f76aa5 100644
--- a/lisp/ob-R.el
+++ b/lisp/ob-R.el
@@ -239,7 +239,7 @@ This function is called by `org-babel-execute-src-block'."
(min (if lengths (apply 'min lengths) 0)))
;; Ensure VALUE has an orgtbl structure (depth of at least 2).
(unless (listp (car value)) (setq value (list value)))
- (let ((file (orgtbl-to-tsv value '(:fmt org-babel-R-quote-tsv-field)))
+ (let ((file (orgtbl-to-tsv value '(:raw t :fmt org-babel-R-quote-tsv-field)))
(header (if (or (eq (nth 1 value) 'hline) colnames-p)
"TRUE" "FALSE"))
(row-names (if rownames-p "1" "NULL")))
diff --git a/lisp/ob-core.el b/lisp/ob-core.el
index 93fcb2a..9ff83f2 100644
--- a/lisp/ob-core.el
+++ b/lisp/ob-core.el
@@ -2213,7 +2213,7 @@ code ---- the results are extracted in the syntax of the source
(lambda (el) (or (listp el) (eq el 'hline)))
result)
result (list result))
- '(:fmt (lambda (cell) (format "%s" cell)))) "\n"))
+ '(:raw t :fmt (lambda (cell) (format "%s" cell)))) "\n"))
(goto-char beg) (when (org-at-table-p) (org-table-align)))
((and (listp result) (not (funcall proper-list-p result)))
(insert (format "%s\n" result)))
diff --git a/lisp/org-table.el b/lisp/org-table.el
index 6b33eda..7a53d7a 100644
--- a/lisp/org-table.el
+++ b/lisp/org-table.el
@@ -4834,7 +4834,7 @@ This may be either a string or a function of two arguments:
(table-cell . ,(org-table--to-generic-cell params))
;; Section. Return contents to avoid garbage around table.
(section . (lambda (s c i) c))))
- 'body-only (org-combine-plists params '(:with-tables t))))))
+ 'body-only (org-combine-plists params '(:with-tables t :sloppy-macros t))))))
(defun org-table--generic-apply (value name &optional with-cons &rest args)
(cond ((null value) nil)
diff --git a/lisp/ox.el b/lisp/ox.el
index f47baef..0fcfc04 100644
--- a/lisp/ox.el
+++ b/lisp/ox.el
@@ -2885,7 +2885,8 @@ Return code as a string."
(cons "email" (or (plist-get info :email) ""))
(cons "title"
(org-element-interpret-data (plist-get info :title))))
- 'finalize)
+ (unless (plist-get info :sloppy-macros)
+ 'finalize))
;; Parse buffer.
(setq tree (org-element-parse-buffer nil visible-only))
;; Handle left-over uninterpreted elements or objects in
--
2.2.1
[-- Attachment #3: Type: text/plain, Size: 282 bytes --]
There are several usages of orgtbl-to-* functions in babel (R, awk,
gnuplot, shell, sqlite, sql). Org-plot also uses one. The attached
patch adds :raw to the ob-R call, but if I understand correctly probably
all of them should add it. Should I do that?
Thanks,
--
Aaron Ecay
next prev parent reply other threads:[~2015-01-06 4:27 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-02 19:57 org tables into R? Michael Gauland
2015-01-02 20:13 ` Andreas Leha
2015-01-02 22:45 ` Vikas Rawal
2015-01-04 10:01 ` Andreas Leha
2015-01-05 0:10 ` Aaron Ecay
2015-01-05 11:48 ` Nicolas Goaziou
2015-01-06 4:27 ` Aaron Ecay [this message]
2015-01-06 23:08 ` Nicolas Goaziou
2015-01-06 23:17 ` Aaron Ecay
2015-01-06 23:38 ` Nicolas Goaziou
2015-01-06 10:14 ` Andreas Leha
2015-01-06 11:02 ` Rainer M Krug
2015-01-06 12:07 ` Andreas Leha
2015-01-06 13:37 ` Rainer M Krug
2015-01-06 17:49 ` Aaron Ecay
2015-01-07 9:01 ` Rainer M Krug
2015-01-04 3:19 ` Michael Gauland
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.orgmode.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=87r3v8v8hx.fsf@gmail.com \
--to=aaronecay@gmail.com \
--cc=emacs-orgmode@gnu.org \
--cc=mail@nicolasgoaziou.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).