From f694c3d996bfd5d7a853751f08eda5ea70ea0d6f Mon Sep 17 00:00:00 2001 From: Nicolas Goaziou Date: Sun, 22 Jan 2012 09:44:52 +0100 Subject: [PATCH] org-export: Fix some errors and corner cases with macros * contrib/lisp/org-export.el (org-export-get-inbuffer-options): Replace macro with an empty string when no value is provided. Ignore macros with an ill-formed key. --- contrib/lisp/org-export.el | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/contrib/lisp/org-export.el b/contrib/lisp/org-export.el index 42fe808f5..bb3b2974e 100644 --- a/contrib/lisp/org-export.el +++ b/contrib/lisp/org-export.el @@ -986,12 +986,24 @@ dependencies." ((string= key "OPTIONS") (org-export-parse-option-keyword val backend)) ((string= key "MACRO") - (string-match "^\\([-a-zA-Z0-9_]+\\)[ \t]+\\(.*?[ \t]*$\\)" - val) - (plist-put nil - (intern (concat ":macro-" - (downcase (match-string 1 val)))) - (match-string 2 val)))) + (when (string-match + "^\\([-a-zA-Z0-9_]+\\)\\(?:[ \t]+\\(.*?\\)[ \t]*$\\)?" + val) + (let ((key (intern + (concat ":macro-" + (downcase (match-string 1 val))))) + (value (match-string 2 val))) + (cond + ((not value) "") + ((string-match "\\`(eval\\>" value) (list key value)) + (t + (list + key + ;; If user explicitly asks for a newline, be + ;; sure to preserve it from further filling + ;; with `hard-newline'. + (replace-regexp-in-string + "\\\\n" hard-newline value)))))))) plist))))) ;; 2. Standard options, as in `org-export-option-alist'. (let* ((all (append org-export-option-alist