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