diff options
author | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2016-11-10 00:25:34 +0100 |
---|---|---|
committer | Nicolas Goaziou <mail@nicolasgoaziou.fr> | 2016-11-10 00:25:34 +0100 |
commit | 9f98979ff0cf23c7e3115f5205e601351d339d10 (patch) | |
tree | cc784368c7365b1efab456dc8735341b3e32e727 | |
parent | 1dc6c4bc9ce21be6d5c1a7d623cd917e5a1224e6 (diff) | |
download | org-mode-9f98979ff0cf23c7e3115f5205e601351d339d10.tar.gz |
org-element: Prevent parsing meta-data after blank lines
* lisp/org-element.el (org-element--current-element): Check that
planning info and property drawers are correctly located before
parsing them.
* testing/lisp/test-org-element.el (test-org-element/planning-parser):
(test-org-element/property-drawer-parser): Add tests.
-rw-r--r-- | lisp/org-element.el | 6 | ||||
-rw-r--r-- | testing/lisp/test-org-element.el | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/lisp/org-element.el b/lisp/org-element.el index 51b1ca4..b86244e 100644 --- a/lisp/org-element.el +++ b/lisp/org-element.el @@ -3845,10 +3845,14 @@ element it has to parse." (or (save-excursion (org-with-limited-levels (outline-next-heading))) limit))) ;; Planning. - ((and (eq mode 'planning) (looking-at org-planning-line-re)) + ((and (eq mode 'planning) + (eq ?* (char-after (line-beginning-position 0))) + (looking-at org-planning-line-re)) (org-element-planning-parser limit)) ;; Property drawer. ((and (memq mode '(planning property-drawer)) + (eq ?* (char-after (line-beginning-position + (if (eq mode 'planning) 0 -1)))) (looking-at org-property-drawer-re)) (org-element-property-drawer-parser limit)) ;; When not at bol, point is at the beginning of an item or diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el index c164de7..2a507f8 100644 --- a/testing/lisp/test-org-element.el +++ b/testing/lisp/test-org-element.el @@ -1971,6 +1971,11 @@ Outside list" (eq 'planning (org-test-with-temp-text "* H\n# Comment\n<point>DEADLINE: <2012-03-29 thu.>" + (org-element-type (org-element-at-point))))) + (should-not + (eq 'planning + (org-test-with-temp-text + "* H\n\n<point>DEADLINE: <2012-03-29 thu.>" (org-element-type (org-element-at-point)))))) @@ -2013,6 +2018,11 @@ Outside list" (org-test-with-temp-text "* H\nParagraph\n<point>:PROPERTIES:\nparagraph\n:END:" (org-element-type (org-element-at-point))))) + (should-not + (eq 'property-drawer + (org-test-with-temp-text + "* H\n\n<point>:PROPERTIES:\n:prop: value\n:END:" + (org-element-type (org-element-at-point))))) ;; Handle non-empty blank line at the end of buffer. (should (org-test-with-temp-text "* H\n<point>:PROPERTIES:\n:END:\n " |