emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/org 328be6d: org-element--parse-to: Fix skipping siblin


From: ELPA Syncer
Subject: [elpa] externals/org 328be6d: org-element--parse-to: Fix skipping sibling optimisation
Date: Wed, 1 Dec 2021 20:57:21 -0500 (EST)

branch: externals/org
commit 328be6df40368ddfc7572b6d99f55c76abfa611c
Author: Ihor Radchenko <yantar92@gmail.com>
Commit: Ihor Radchenko <yantar92@gmail.com>

    org-element--parse-to: Fix skipping sibling optimisation
    
    * lisp/org-element.el (org-element--parse-to): Fallback to normal
    parsing when there are no siblings between POS and ELEM-END.
    
    Reported in
    https://github.com/yantar92/org/issues/38#issuecomment-982830497
---
 lisp/org-element.el | 20 ++++++++++++--------
 1 file changed, 12 insertions(+), 8 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index f42fa2a..84c1b72 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -6420,14 +6420,18 @@ If you observe Emacs hangs frequently, please report 
this to Org mode mailing li
                        ;; may exist though.  Parse starting from the
                        ;; last sibling or from ELEM-END if there are
                        ;; no other siblings.
-                       (goto-char pos)
-                       (re-search-backward
-                        (rx-to-string
-                         `(and bol (repeat ,(let ((level (org-element-property 
:level element)))
-                                              (if org-odd-levels-only (1- (* 
level 2)) level))
-                                           "*")
-                               " "))
-                        elem-end t))))
+                       (let ((p (point)))
+                         (goto-char pos)
+                         (unless
+                             (re-search-backward
+                              (rx-to-string
+                               `(and bol (repeat ,(let ((level 
(org-element-property :level element)))
+                                                    (if org-odd-levels-only 
(1- (* level 2)) level))
+                                                 "*")
+                                     " "))
+                              elem-end t)
+                           ;; Roll-back to normal parsing.
+                           (goto-char p))))))
                 (setq mode (org-element--next-mode mode type nil)))
                ;; A non-greater element contains point: return it.
                ((not (memq type org-element-greater-elements))



reply via email to

[Prev in Thread] Current Thread [Next in Thread]