mirror of
https://git.savannah.gnu.org/git/emacs/org-mode.git
synced 2024-09-29 22:07:49 +00:00
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
This commit is contained in:
parent
b170b23a5b
commit
328be6df40
|
@ -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))
|
||||
|
|
Loading…
Reference in a new issue