branch: externals/org
commit 83a55c6febdf59934af7ed47ead722c0211ba874
Author: Ihor Radchenko <yanta...@posteo.net>
Commit: Ihor Radchenko <yanta...@posteo.net>

    org-element: Fix parsing top-level property drawer after comment and blanks
    
    * lisp/org-element.el (org-element--current-element): Trust parser
    mode when deciding whether we are at property drawer or not.
    Requiring blank lines + `bob' is not accurate are we may have comment
    lines before top-level drawer.  Also, the other check (preceded by
    non-blank line) was not exactly precise and still relied upon parser
    mode to be set correctly.  So, let's do it all the way.
    * testing/lisp/test-org-element.el 
(test-org-element/property-drawer-parser):
    Add new test case.
    
    Reported-by: @inkbottle:matrix.org
---
 lisp/org-element.el              | 9 +--------
 testing/lisp/test-org-element.el | 4 ++++
 2 files changed, 5 insertions(+), 8 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index 56c03a0aa7..7dd9afc858 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -4718,14 +4718,7 @@ element it has to parse."
         ;; Property drawer.
         ((and (pcase mode
                (`planning (eq ?* (char-after (line-beginning-position 0))))
-               ((or `property-drawer `top-comment)
-                 ;; See https://debbugs.gnu.org/cgi/bugreport.cgi?bug=63225#80
-                 (save-excursion
-                   (forward-line -1)   ; faster than beginning-of-line
-                   (skip-chars-forward "[:blank:]") ; faster than looking-at-p
-                   (or (not (eolp)) ; very cheap
-                       ;; Document-wide property drawer may be preceded by 
blank lines.
-                       (progn (skip-chars-backward " \t\n\r") (bobp)))))
+               ((or `property-drawer `top-comment) t)
                (_ nil))
              (looking-at-p org-property-drawer-re))
         (org-element-property-drawer-parser limit))
diff --git a/testing/lisp/test-org-element.el b/testing/lisp/test-org-element.el
index a491892e43..2e85df3634 100644
--- a/testing/lisp/test-org-element.el
+++ b/testing/lisp/test-org-element.el
@@ -2856,6 +2856,10 @@ Outside list"
    (eq 'property-drawer
        (org-test-with-temp-text "# C\n# C\n<point>:PROPERTIES:\n:prop: 
value\n:END:"
         (org-element-type (org-element-at-point)))))
+  (should
+   (eq 'property-drawer
+       (org-test-with-temp-text "\n  \t\n# C\n# C\n  
\n\n\n<point>:PROPERTIES:\n:prop: value\n:END:"
+        (org-element-type (org-element-at-point)))))
   (should
    (eq 'property-drawer
        (org-test-with-temp-text "\n<point>:PROPERTIES:\n:prop: value\n:END:"

Reply via email to