diff --git a/contrib/lisp/org-export.el b/contrib/lisp/org-export.el index 6023b3310..a5edc0ada 100644 --- a/contrib/lisp/org-export.el +++ b/contrib/lisp/org-export.el @@ -777,7 +777,7 @@ structure of the values."))) ;;; The Communication Channel ;; ;; During export process, every function has access to a number of -;; properties. They are of three types: +;; properties. They are of two types: ;; ;; 1. Environment options are collected once at the very beginning of ;; the process, out of the original buffer and configuration. @@ -790,10 +790,6 @@ structure of the values."))) ;; 2. Tree properties are extracted directly from the parsed tree, ;; just before export, by `org-export-collect-tree-properties'. ;; -;; 3. Local options are updated during parsing, and their value -;; depends on the level of recursion. For now, only `:ignore-list' -;; belongs to that category. -;; ;; Here is the full list of properties available during transcode ;; process, with their category (option, tree or local) and their ;; value type. @@ -861,7 +857,7 @@ structure of the values."))) ;; ;; + `:ignore-list' :: List of elements and objects that should be ;; ignored during export. -;; - category :: local +;; - category :: tree ;; - type :: list of elements and objects ;; ;; + `:input-file' :: Full path to input file, if any. @@ -878,7 +874,7 @@ structure of the values."))) ;; ;; + `:parse-tree' :: Whole parse tree, available at any time during ;; transcoding. -;; - category :: global +;; - category :: option ;; - type :: list (as returned by `org-element-parse-buffer') ;; ;; + `:preserve-breaks' :: Non-nil means transcoding should preserve @@ -909,6 +905,12 @@ structure of the values."))) ;; - category :: option ;; - type :: symbol (nil, t) ;; +;; + `:translate-alist' :: Alist between element and object types and +;; transcoding functions relative to the current back-end. +;; Special keys `template' and `plain-text' are also possible. +;; - category :: option +;; - type :: alist (SYMBOL . FUNCTION) +;; ;; + `:with-archived-trees' :: Non-nil when archived subtrees should ;; also be transcoded. If it is set to the `headline' symbol, ;; only the archived headline's name is retained. @@ -1056,24 +1058,25 @@ inferior to file-local settings." ;; First install #+BIND variables. (org-export-install-letbind-maybe) ;; Get and prioritize export options... - (let ((options (org-combine-plists - ;; ... from global variables... - (org-export-get-global-options backend) - ;; ... from buffer's attributes... - (org-export-get-buffer-attributes) - ;; ... from an external property list... - ext-plist - ;; ... from in-buffer settings... - (org-export-get-inbuffer-options - backend - (and buffer-file-name - (org-remove-double-quotes buffer-file-name))) - ;; ... and from subtree, when appropriate. - (and subtreep (org-export-get-subtree-options)) - ;; Also install back-end symbol. - `(:back-end ,backend)))) - ;; Return plist. - options)) + (org-combine-plists + ;; ... from global variables... + (org-export-get-global-options backend) + ;; ... from buffer's attributes... + (org-export-get-buffer-attributes) + ;; ... from an external property list... + ext-plist + ;; ... from in-buffer settings... + (org-export-get-inbuffer-options + backend + (and buffer-file-name (org-remove-double-quotes buffer-file-name))) + ;; ... and from subtree, when appropriate. + (and subtreep (org-export-get-subtree-options)) + ;; Also install back-end symbol and its translation table. + `(:back-end + ,backend + :translate-alist + ,(let ((trans-alist (intern (format "org-%s-translate-alist" backend)))) + (when (boundp trans-alist) (symbol-value trans-alist)))))) (defun org-export-parse-option-keyword (options &optional backend) "Parse an OPTIONS line and return values as a plist. @@ -1641,12 +1644,8 @@ INFO is a plist containing export directives." (let ((type (org-element-type blob))) ;; Return contents only for complete parse trees. (if (eq type 'org-data) (lambda (blob contents info) contents) - (let ((translate-alist - (intern (format "org-%s-translate-alist" - (plist-get info :back-end))))) - (when (boundp translate-alist) - (let ((transcoder (cdr (assq type (symbol-value translate-alist))))) - (and (fboundp transcoder) transcoder))))))) + (let ((transcoder (cdr (assq type (plist-get info :translate-alist))))) + (and (fboundp transcoder) transcoder))))) (defun org-export-data (data info) "Convert DATA into current back-end format.