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

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

[elpa] externals/org b363ec04a2: Merge branch 'bugfix'


From: ELPA Syncer
Subject: [elpa] externals/org b363ec04a2: Merge branch 'bugfix'
Date: Tue, 31 Jan 2023 16:57:59 -0500 (EST)

branch: externals/org
commit b363ec04a21e1cab67767f3c10a8dd08d75f8597
Merge: 0d01a198bc 32b64607ad
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>

    Merge branch 'bugfix'
---
 lisp/org-element.el      | 35 +++++++++++++++++++++--------------
 testing/lisp/test-org.el | 16 +++++++++++++++-
 2 files changed, 36 insertions(+), 15 deletions(-)

diff --git a/lisp/org-element.el b/lisp/org-element.el
index e8a8b60e75..57f168f606 100644
--- a/lisp/org-element.el
+++ b/lisp/org-element.el
@@ -7411,14 +7411,16 @@ the cache."
         (org-element-at-point to-pos)
         (cl-macrolet ((cache-root
                         ;; Use the most optimal version of cache available.
-                        () `(if (memq granularity '(headline 
headline+inlinetask))
-                                (org-element--headline-cache-root)
-                              (org-element--cache-root)))
+                        () `(org-with-base-buffer nil
+                              (if (memq granularity '(headline 
headline+inlinetask))
+                                  (org-element--headline-cache-root)
+                                (org-element--cache-root))))
                       (cache-size
                         ;; Use the most optimal version of cache available.
-                        () `(if (memq granularity '(headline 
headline+inlinetask))
-                                org-element--headline-cache-size
-                              org-element--cache-size))
+                        () `(org-with-base-buffer nil
+                              (if (memq granularity '(headline 
headline+inlinetask))
+                                  org-element--headline-cache-size
+                                org-element--cache-size)))
                       (cache-walk-restart
                         ;; Restart tree traversal after AVL tree re-balance.
                         () `(when node
@@ -7448,8 +7450,9 @@ the cache."
                               ;; Avoid extra staff like timer cancels et al
                               ;; and only call 
`org-element--cache-sync-requests' when
                               ;; there are pending requests.
-                              (when org-element--cache-sync-requests
-                                (org-element--cache-sync (current-buffer)))
+                              (org-with-base-buffer nil
+                                (when org-element--cache-sync-requests
+                                  (org-element--cache-sync (current-buffer))))
                               ;; Call `org-element--parse-to' directly 
avoiding any
                               ;; kind of `org-element-at-point' overheads.
                               (if restrict-elements
@@ -7520,8 +7523,9 @@ the cache."
                               tmpnext-start))
                       ;; Check if cache does not have gaps.
                       (cache-gapless-p
-                        () `(eq org-element--cache-change-tic
-                                (alist-get granularity 
org-element--cache-gapless))))
+                        () `(org-with-base-buffer nil
+                              (eq org-element--cache-change-tic
+                                  (alist-get granularity 
org-element--cache-gapless)))))
           ;; The core algorithm is simple walk along binary tree.  However,
           ;; instead of checking all the tree elements from first to last
           ;; (like in `avl-tree-mapcar'), we begin from FROM-POS skipping
@@ -7649,7 +7653,9 @@ the cache."
                         ;; In the process, we may alter the buffer,
                         ;; so also keep track of the cache state.
                         (progn
-                          (setq modified-tic org-element--cache-change-tic)
+                          (setq modified-tic
+                                (org-with-base-buffer nil
+                                  org-element--cache-change-tic))
                           (setq cache-size (cache-size))
                           ;; When NEXT-RE/FAIL-RE is provided, skip to
                           ;; next regexp match after :begin of the current
@@ -7683,7 +7689,7 @@ the cache."
                               ;;
                               ;; Call FUNC.  FUNC may move point.
                               (setq org-element-cache-map-continue-from nil)
-                              (if org-element--cache-map-statistics
+                              (if (org-with-base-buffer nil 
org-element--cache-map-statistics)
                                   (progn
                                     (setq before-time (float-time))
                                     (push (funcall func data) result)
@@ -7723,8 +7729,9 @@ the cache."
                                            start))
                               (setq start nil))
                             ;; Check if the buffer has been modified.
-                            (unless (and (eq modified-tic 
org-element--cache-change-tic)
-                                         (eq cache-size (cache-size)))
+                            (unless (org-with-base-buffer nil
+                                      (and (eq modified-tic 
org-element--cache-change-tic)
+                                           (eq cache-size (cache-size))))
                               ;; START may no longer be valid, update
                               ;; it to beginning of real element.
                               ;; Upon modification, START may lay
diff --git a/testing/lisp/test-org.el b/testing/lisp/test-org.el
index e69452b258..36c5a878e0 100644
--- a/testing/lisp/test-org.el
+++ b/testing/lisp/test-org.el
@@ -2741,6 +2741,7 @@ SCHEDULED: <2014-03-04 tue.>"
                          (org-element-property
                           :begin (org-element-at-point))))))
               (buffer-string))))
+  ;; Move point.
   (should
    (= 1
       (org-test-with-temp-text "* H1\n** H1.1\n** H1.2\n"
@@ -2760,7 +2761,20 @@ SCHEDULED: <2014-03-04 tue.>"
              (push (org-element-property :title (org-element-at-point)) acc)
              (setq org-map-continue-from
                    (line-end-position 2))))
-          (length acc))))))
+          (length acc)))))
+  ;; Modifications inside indirect buffer.
+  (should
+   (= 3
+      (org-test-with-temp-text "<point>* H1\n** H1.1\n** H1.2\n"
+        (with-current-buffer (org-get-indirect-buffer)
+          (let ((acc 0))
+            (org-map-entries
+             (lambda ()
+               (cl-incf acc)
+               (beginning-of-line 2)
+               (insert "test\n")
+               (beginning-of-line -1)))
+            acc))))))
 
 (ert-deftest test-org/edit-headline ()
   "Test `org-edit-headline' specifications."



reply via email to

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