diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2014-09-02 12:30:57 +0200 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2014-09-02 12:33:35 +0200 |
commit | 2de0c1c3da1e7f9859b82d8af0167c60545c5c5f (patch) | |
tree | 68c93e84f4d2e049812b1ef7299804acd43f964f | |
parent | 37bf0576f2f2894c6e37239ee8db63a3ef21a840 (diff) | |
download | org-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.el | 22 | ||||
-rw-r--r-- | testing/lisp/test-org-element.el | 2 |
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) |