Browse Source

ox-org: Preserve affiliated keywords

* lisp/ox.el (org-export-expand): Optionally add affiliated keywords
  to results.
* lisp/ox-org.el (org-org-identity): Use new argument for
  `org-export-expand'.
Nicolas Goaziou 12 years ago
parent
commit
eba04bfb3c
2 changed files with 12 additions and 6 deletions
  1. 1 1
      lisp/ox-org.el
  2. 11 5
      lisp/ox.el

+ 1 - 1
lisp/ox-org.el

@@ -119,7 +119,7 @@ setting of `org-html-htmlize-output-type' is 'css."
 (defun org-org-identity (blob contents info)
   "Transcode BLOB element or object back into Org syntax.
 CONTENTS is its contents, as a string or nil.  INFO is ignored."
-  (org-export-expand blob contents))
+  (org-export-expand blob contents t))
 
 (defun org-org-headline (headline contents info)
   "Transcode HEADLINE element back into Org syntax.

+ 11 - 5
lisp/ox.el

@@ -2246,13 +2246,19 @@ according to export options INFO, stored as a plist."
     (table (plist-get info :with-tables))
     (otherwise t)))
 
-(defun org-export-expand (blob contents)
+(defun org-export-expand (blob contents &optional with-affiliated)
   "Expand a parsed element or object to its original state.
+
 BLOB is either an element or an object.  CONTENTS is its
-contents, as a string or nil."
-  (funcall
-   (intern (format "org-element-%s-interpreter" (org-element-type blob)))
-   blob contents))
+contents, as a string or nil.
+
+When optional argument WITH-AFFILIATED is non-nil, add affiliated
+keywords before output."
+  (let ((type (org-element-type blob)))
+    (concat (and with-affiliated (memq type org-element-all-elements)
+		 (org-element--interpret-affiliated-keywords blob))
+	    (funcall (intern (format "org-element-%s-interpreter" type))
+		     blob contents))))
 
 (defun org-export-ignore-element (element info)
   "Add ELEMENT to `:ignore-list' in INFO.