mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2025-01-25 20:15:22 +00:00
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)
|
||||
(let ((type (org-element-type data)))
|
||||
(if (memq type '(nil org-data)) (error "No foreign transcoder available")
|
||||
(let ((transcoder
|
||||
(cdr (assq type (org-export-get-all-transcoders backend)))))
|
||||
(if (functionp transcoder) (funcall transcoder data contents info)
|
||||
(error "No foreign transcoder available"))))))
|
||||
(let* ((all-transcoders (org-export-get-all-transcoders backend))
|
||||
(transcoder (cdr (assq type all-transcoders))))
|
||||
(if (not (functionp transcoder))
|
||||
(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
|
||||
|
@ -1082,7 +1082,18 @@ body\n")))
|
||||
'((plain-text . (lambda (text contents info) "Failure"))))
|
||||
(org-export-define-backend 'test2
|
||||
'((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 ()
|
||||
"Test `org-export-data-with-backend' specifications."
|
||||
|
Loading…
Reference in New Issue
Block a user