From 84cb63a44aaee9b97884903f4576b761a837724f Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sat, 16 Dec 2017 13:44:56 +0100 Subject: [PATCH] ox: Fix plain text export with `org-export-with-backend' * lisp/ox.el (org-export-with-backend): Handle arity for plain text transcoder. * testing/lisp/test-ox.el (test-org-export/with-backend): Add test. --- lisp/ox.el | 4 +++- testing/lisp/test-ox.el | 15 +++++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/lisp/ox.el b/lisp/ox.el index 8ea47d8ba..ba7065116 100644 --- a/lisp/ox.el +++ b/lisp/ox.el @@ -3699,7 +3699,9 @@ the communication channel used for export, as a plist." :translate-alist all-transcoders :exported-data (make-hash-table :test #'eq :size 401))))) ;; `:internal-references' are shared across back-ends. - (prog1 (funcall transcoder data contents new-info) + (prog1 (if (eq type 'plain-text) + (funcall transcoder data new-info) + (funcall transcoder data contents new-info)) (plist-put info :internal-references (plist-get new-info :internal-references))))))) diff --git a/testing/lisp/test-ox.el b/testing/lisp/test-ox.el index 8b2ef8105..70d22a7a0 100644 --- a/testing/lisp/test-ox.el +++ b/testing/lisp/test-ox.el @@ -1771,12 +1771,19 @@ Footnotes[fn:2], foot[fn:test] and [fn:inline:inline footnote] (equal "Success" (let (org-export-registered-backends) (org-export-define-backend 'test - '((plain-text . (lambda (text contents info) "Failure")))) + '((verbatim . (lambda (text contents info) "Failure")))) (org-export-define-backend 'test2 - '((plain-text . (lambda (text contents info) "Success")))) - (org-export-with-backend 'test2 "Test")))) + '((verbatim . (lambda (text contents info) "Success")))) + (org-export-with-backend 'test2 '(verbatim (:value "=Test=")))))) + ;; Corner case: plain-text transcoders have a different arity. + (should + (equal "Success" + (org-export-with-backend + (org-export-create-backend + :transcoders '((plain-text . (lambda (text info) "Success")))) + "Test"))) ;; Provide correct back-end if transcoder needs to use recursive - ;; calls anyway. + ;; calls. (should (equal "Success\n" (let ((test-back-end