summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2016-11-10 00:25:34 +0100
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2016-11-10 00:25:34 +0100
commit9f98979ff0cf23c7e3115f5205e601351d339d10 (patch)
treecc784368c7365b1efab456dc8735341b3e32e727
parent1dc6c4bc9ce21be6d5c1a7d623cd917e5a1224e6 (diff)
downloadorg-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.el6
-rw-r--r--testing/lisp/test-org-element.el10
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 "