summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2014-09-02 12:30:57 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2014-09-02 12:33:35 +0200
commit2de0c1c3da1e7f9859b82d8af0167c60545c5c5f (patch)
tree68c93e84f4d2e049812b1ef7299804acd43f964f
parent37bf0576f2f2894c6e37239ee8db63a3ef21a840 (diff)
downloadorg-mode-2de0c1c3da1e7f9859b82d8af0167c60545c5c5f.tar.gz
Fix 37bf05
* 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
-rw-r--r--lisp/org.el22
-rw-r--r--testing/lisp/test-org-element.el2
2 files changed, 16 insertions, 8 deletions
diff --git a/lisp/org.el b/lisp/org.el
index af450cc..1a6d028 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -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)
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index fdd654f..5e8f0ff 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -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)