forked from mirrors/org-mode
ox: Fix `org-export-with-backend'
* lisp/ox.el (org-export-with-backend): Ensure function will use provided back-end. * testing/lisp/test-ox.el: Add test.
This commit is contained in:
parent
35e5e5b8b0
commit
58b157956c
14
lisp/ox.el
14
lisp/ox.el
|
@ -3450,10 +3450,16 @@ the communication channel used for export, as a plist."
|
||||||
(org-export-barf-if-invalid-backend backend)
|
(org-export-barf-if-invalid-backend backend)
|
||||||
(let ((type (org-element-type data)))
|
(let ((type (org-element-type data)))
|
||||||
(if (memq type '(nil org-data)) (error "No foreign transcoder available")
|
(if (memq type '(nil org-data)) (error "No foreign transcoder available")
|
||||||
(let ((transcoder
|
(let* ((all-transcoders (org-export-get-all-transcoders backend))
|
||||||
(cdr (assq type (org-export-get-all-transcoders backend)))))
|
(transcoder (cdr (assq type all-transcoders))))
|
||||||
(if (functionp transcoder) (funcall transcoder data contents info)
|
(if (not (functionp transcoder))
|
||||||
(error "No foreign transcoder available"))))))
|
(error "No foreign transcoder available")
|
||||||
|
(funcall
|
||||||
|
transcoder data contents
|
||||||
|
(org-combine-plists
|
||||||
|
info (list :back-end backend
|
||||||
|
:translate-alist all-transcoders
|
||||||
|
:exported-data (make-hash-table :test 'eq :size 401)))))))))
|
||||||
|
|
||||||
|
|
||||||
;;;; For Export Snippets
|
;;;; For Export Snippets
|
||||||
|
|
|
@ -1082,7 +1082,18 @@ body\n")))
|
||||||
'((plain-text . (lambda (text contents info) "Failure"))))
|
'((plain-text . (lambda (text contents info) "Failure"))))
|
||||||
(org-export-define-backend 'test2
|
(org-export-define-backend 'test2
|
||||||
'((plain-text . (lambda (text contents info) "Success"))))
|
'((plain-text . (lambda (text contents info) "Success"))))
|
||||||
(org-export-with-backend 'test2 "Test")))))
|
(org-export-with-backend 'test2 "Test"))))
|
||||||
|
;; Provide correct back-end if transcoder needs to use recursive
|
||||||
|
;; calls anyway.
|
||||||
|
(should
|
||||||
|
(equal "Success"
|
||||||
|
(let (org-export--registered-backends)
|
||||||
|
(org-export-define-backend 'test
|
||||||
|
'((plain-text . (lambda (bold contents info) "Success"))
|
||||||
|
(headline . (lambda (headline contents info)
|
||||||
|
(org-export-data
|
||||||
|
(org-element-property :title headline))))))
|
||||||
|
(org-export-with-backend 'test "* Test")))))
|
||||||
|
|
||||||
(ert-deftest test-org-export/data-with-backend ()
|
(ert-deftest test-org-export/data-with-backend ()
|
||||||
"Test `org-export-data-with-backend' specifications."
|
"Test `org-export-data-with-backend' specifications."
|
||||||
|
|
Loading…
Reference in a new issue