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.
This commit is contained in:
Nicolas Goaziou 2012-01-22 09:44:52 +01:00
parent fc93b6f340
commit f694c3d996
1 changed files with 18 additions and 6 deletions

View File

@ -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