org-element-cache-map: Fix edge case when we move to not-yet-cached element
* lisp/org-element.el (org-element-cache-map): Make sure that there is always a cached element where we move START position. * testing/lisp/test-org-element.el (test-org-element/cache-map): New test. Co-authored-by: Morgan Smith <Morgan.J.Smith@outlook.com>
This commit is contained in:
parent
d73688faa4
commit
942a7320d0
|
@ -8292,8 +8292,11 @@ the cache."
|
|||
;; Reached LIMIT-COUNT. Abort.
|
||||
(when (and limit-count
|
||||
(>= count-predicate-calls-match
|
||||
limit-count))
|
||||
(cache-walk-abort)))
|
||||
limit-count))
|
||||
(cache-walk-abort))
|
||||
;; Make sure that we have a cached
|
||||
;; element at the new STAR.
|
||||
(when start (element-match-at-point)))
|
||||
;; Check if the buffer or cache has been modified.
|
||||
(unless (org-with-base-buffer nil
|
||||
(and (eq modified-tic org-element--cache-change-tic)
|
||||
|
|
|
@ -4983,6 +4983,18 @@ Text
|
|||
|
||||
|
||||
;;; Test Cache.
|
||||
(ert-deftest test-org-element/cache-map ()
|
||||
"Test `org-element-cache-map'."
|
||||
(org-test-with-temp-text "* headline\n:DRAWER:\nparagraph\n:END:\n* headline 2"
|
||||
(should
|
||||
(equal
|
||||
'(org-data headline section drawer paragraph headline)
|
||||
(org-element-cache-map #'car :granularity 'element))))
|
||||
(should
|
||||
(equal
|
||||
'(org-data headline section drawer paragraph)
|
||||
(org-test-with-temp-text "* headline\n:DRAWER:\nparagraph\n:END:"
|
||||
(org-element-cache-map #'car :granularity 'element)))))
|
||||
|
||||
(ert-deftest test-org-element/cache ()
|
||||
"Test basic expectations and common pitfalls for cache."
|
||||
|
|
Loading…
Reference in New Issue