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.
This commit is contained in:
Nicolas Goaziou 2017-12-16 13:44:56 +01:00
parent 5e30bbcd34
commit 84cb63a44a
2 changed files with 14 additions and 5 deletions

View File

@ -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)))))))

View File

@ -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