Fix 37bf05
authorNicolas Goaziou <mail@nicolasgoaziou.fr>
Tue, 2 Sep 2014 10:30:57 +0000 (12:30 +0200)
committerNicolas Goaziou <mail@nicolasgoaziou.fr>
Tue, 2 Sep 2014 10:33:35 +0000 (12:33 +0200)
* lisp/org.el (org-re-property): Fix regexp.  Improve docstring.
* testing/lisp/test-org-element.el (test-org-element/node-property):
  Update test.

Thanks to Daimrod for reporting it.
http://permalink.gmane.org/gmane.emacs.orgmode/90383

lisp/org.el
testing/lisp/test-org-element.el

index af450cc..1a6d028 100644 (file)
@@ -6152,13 +6152,21 @@ Use `org-reduced-level' to remove the effect of `org-odd-levels'."
 (defvar org-font-lock-keywords nil)
 
 (defsubst org-re-property (property &optional literal allow-null)
-   "Return a regexp matching a PROPERTY line.
- Match group 3 will be set to the value if it exists."
-   (concat "^\\(?4:[ \t]*\\)\\(?1::\\(?2:"
-         (if literal property (regexp-quote property))
-         "\\):\\)\\(?:[ \t]+\\(?3:[^ \t\r\n].*?\\)\\)"
-         (and allow-null "?")
-         "\\(?5:[ \t]*\\)$"))
+  "Return a regexp matching a PROPERTY line.
+
+When optional argument LITERAL is non-nil, do not quote PROPERTY.
+This is useful when PROPERTY is a regexp.  When ALLOW-NULL is
+non-nil, match properties even without a value.
+
+Match group 3 is set to the value when it exists.  If there is no
+value and ALLOW-NULL is non-nil, it is set to the empty string."
+  (concat
+   "^\\(?4:[ \t]*\\)"
+   (format "\\(?1::\\(?2:%s\\):\\)"
+          (if literal property (regexp-quote property)))
+   (if allow-null
+       "\\(?:\\(?3:$\\)\\|[ \t]+\\(?3:.*?\\)\\)\\(?5:[ \t]*\\)$"
+     "[ \t]+\\(?3:[^ \r\t\n]+.*?\\)\\(?5:[ \t]*\\)$")))
 
 (defconst org-property-re
   (org-re-property ".*?" 'literal t)
index fdd654f..5e8f0ff 100644 (file)
@@ -1495,7 +1495,7 @@ e^{i\\pi}+1=0
         (org-element-type (org-element-at-point)))))
   ;; Accept empty properties.
   (should
-   (equal '(("foo" "value") ("bar" nil))
+   (equal '(("foo" "value") ("bar" ""))
          (org-test-with-temp-text ":PROPERTIES:\n:foo: value\n:bar:\n:END:"
            (org-element-map (org-element-parse-buffer) 'node-property
              (lambda (p)