org-element-cache: Honour org-odd-levels-only

* lisp/org-element.el (org-element--parse-to): Fix incorrect heading
regexps when `org-odd-levels-only' is non-nil.
(org-element--cache-before-change): Use reduced level for
`org-element--cache-change-warning' when headlines are modified.
This commit is contained in:
Ihor Radchenko 2021-11-14 15:09:47 +08:00
parent c3f4573758
commit 577b987972
No known key found for this signature in database
GPG key ID: 6470762A7DA11D8B

View file

@ -6394,7 +6394,10 @@ If you observe Emacs hangs frequently, please report this to Org mode mailing li
(unless (when (and (/= 1 (org-element-property :level element))
(re-search-forward
(rx-to-string
`(and bol (repeat 1 ,(1- (org-element-property :level element)) "*") " "))
`(and bol (repeat 1 ,(1- (let ((level (org-element-property :level element)))
(if org-odd-levels-only (1- (* level 2)) level)))
"*")
" "))
pos t))
(beginning-of-line)
t)
@ -6406,7 +6409,10 @@ If you observe Emacs hangs frequently, please report this to Org mode mailing li
(goto-char pos)
(re-search-backward
(rx-to-string
`(and bol (repeat ,(org-element-property :level element) "*") " "))
`(and bol (repeat ,(let ((level (org-element-property :level element)))
(if org-odd-levels-only (1- (* level 2)) level))
"*")
" "))
elem-end t))))
(setq mode (org-element--next-mode mode type nil)))
;; A non-greater element contains point: return it.
@ -6524,7 +6530,7 @@ The function returns the new value of `org-element--cache-change-warning'."
until (= min-level 1))
(goto-char beg)
(beginning-of-line)
(or min-level
(or (and min-level (org-reduced-level min-level))
(when (looking-at-p "^[ \t]*#\\+CATEGORY:")
'org-data)
t))))))