浏览代码

Merge branch 'maint'

Nicolas Goaziou 11 年之前
父节点
当前提交
d55f0632b5
共有 2 个文件被更改,包括 29 次插入14 次删除
  1. 25 13
      lisp/org-element.el
  2. 4 1
      lisp/ox-org.el

+ 25 - 13
lisp/org-element.el

@@ -240,19 +240,6 @@ application to open them.")
 By default, all keywords setting attributes (i.e. \"ATTR_LATEX\")
 By default, all keywords setting attributes (i.e. \"ATTR_LATEX\")
 are affiliated keywords and need not to be in this list.")
 are affiliated keywords and need not to be in this list.")
 
 
-(defconst org-element--affiliated-re
-  (format "[ \t]*#\\+%s:"
-	  ;; Regular affiliated keywords.
-	  (format "\\(%s\\|ATTR_[-_A-Za-z0-9]+\\)\\(?:\\[\\(.*\\)\\]\\)?"
-		  (regexp-opt org-element-affiliated-keywords)))
-  "Regexp matching any affiliated keyword.
-
-Keyword name is put in match group 1.  Moreover, if keyword
-belongs to `org-element-dual-keywords', put the dual value in
-match group 2.
-
-Don't modify it, set `org-element-affiliated-keywords' instead.")
-
 (defconst org-element-keyword-translation-alist
 (defconst org-element-keyword-translation-alist
   '(("DATA" . "NAME")  ("LABEL" . "NAME") ("RESNAME" . "NAME")
   '(("DATA" . "NAME")  ("LABEL" . "NAME") ("RESNAME" . "NAME")
     ("SOURCE" . "NAME") ("SRCNAME" . "NAME") ("TBLNAME" . "NAME")
     ("SOURCE" . "NAME") ("SRCNAME" . "NAME") ("TBLNAME" . "NAME")
@@ -299,6 +286,31 @@ This list is checked after translations have been applied.  See
 Any keyword in this list will have its value parsed and stored as
 Any keyword in this list will have its value parsed and stored as
 a secondary string.")
 a secondary string.")
 
 
+(defconst org-element--affiliated-re
+  (format "[ \t]*#\\+\\(?:%s\\):\\(?: \\|$\\)"
+	  (concat
+	   ;; Dual affiliated keywords.
+	   (format "\\(?1:%s\\)\\(?:\\[\\(.*\\)\\]\\)?"
+		   (regexp-opt org-element-dual-keywords))
+	   "\\|"
+	   ;; Regular affiliated keywords.
+	   (format "\\(?1:%s\\)"
+		   (regexp-opt
+		    (org-remove-if
+		     #'(lambda (keyword)
+			 (member keyword org-element-dual-keywords))
+		     org-element-affiliated-keywords)))
+	   "\\|"
+	   ;; Export attributes.
+	   "\\(?1:ATTR_[-_A-Za-z0-9]+\\)"))
+  "Regexp matching any affiliated keyword.
+
+Keyword name is put in match group 1.  Moreover, if keyword
+belongs to `org-element-dual-keywords', put the dual value in
+match group 2.
+
+Don't modify it, set `org-element-affiliated-keywords' instead.")
+
 (defconst org-element-object-restrictions
 (defconst org-element-object-restrictions
   (let* ((standard-set
   (let* ((standard-set
 	  (remq 'plain-link (remq 'table-cell org-element-all-successors)))
 	  (remq 'plain-link (remq 'table-cell org-element-all-successors)))

+ 4 - 1
lisp/ox-org.el

@@ -115,7 +115,10 @@ setting of `org-html-htmlize-output-type' is 'css."
 (defun org-org-identity (blob contents info)
 (defun org-org-identity (blob contents info)
   "Transcode BLOB element or object back into Org syntax.
   "Transcode BLOB element or object back into Org syntax.
 CONTENTS is its contents, as a string or nil.  INFO is ignored."
 CONTENTS is its contents, as a string or nil.  INFO is ignored."
-  (org-export-expand blob contents t))
+  (let ((case-fold-search t))
+    (replace-regexp-in-string
+     "^[ \t]*#\\+ATTR_[-_A-Za-z0-9]+:\\(?: .*\\)?\n" ""
+     (org-export-expand blob contents t))))
 
 
 (defun org-org-headline (headline contents info)
 (defun org-org-headline (headline contents info)
   "Transcode HEADLINE element back into Org syntax.
   "Transcode HEADLINE element back into Org syntax.