[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/org c9b80f06d4 3/3: org-fold-core-next-folding-state-ch
From: |
ELPA Syncer |
Subject: |
[elpa] externals/org c9b80f06d4 3/3: org-fold-core-next-folding-state-change: Optimize performance |
Date: |
Thu, 13 Jul 2023 12:58:41 -0400 (EDT) |
branch: externals/org
commit c9b80f06d4cf085adc373af50c8a80ffc27f4cd0
Author: Ihor Radchenko <yantar92@posteo.net>
Commit: Ihor Radchenko <yantar92@posteo.net>
org-fold-core-next-folding-state-change: Optimize performance
* lisp/org-fold-core.el (org-fold-core-next-folding-state-change):
Avoid repetitive searches all to way to LIMIT. Instead, limit the
next searches by the limit computer by previous.
---
lisp/org-fold-core.el | 21 +++++++++++++--------
1 file changed, 13 insertions(+), 8 deletions(-)
diff --git a/lisp/org-fold-core.el b/lisp/org-fold-core.el
index f14881b045..e6a9d5a2b5 100644
--- a/lisp/org-fold-core.el
+++ b/lisp/org-fold-core.el
@@ -910,14 +910,19 @@ Search backwards when PREVIOUS-P is non-nil."
(unless spec-or-alias
(setq spec-or-alias (org-fold-core-folding-spec-list)))
(setq pos (or pos (point)))
- (apply (if previous-p
- #'max
- #'min)
- (mapcar (if previous-p
- (lambda (prop) (max (or limit (point-min))
(previous-single-char-property-change pos prop nil (or limit (point-min)))))
- (lambda (prop) (next-single-char-property-change pos prop
nil (or limit (point-max)))))
- (mapcar (lambda (el)
(org-fold-core--property-symbol-get-create el nil t))
- spec-or-alias))))
+ (let ((limit (or limit (if previous-p (point-min) (point-max)))))
+ (catch :limit
+ (dolist (prop (mapcar
+ (lambda (el)
+ (org-fold-core--property-symbol-get-create el nil t))
+ spec-or-alias))
+ (when (= limit pos) (throw :limit limit))
+ (setq
+ limit
+ (if previous-p
+ (previous-single-char-property-change pos prop nil limit)
+ (next-single-char-property-change pos prop nil limit))))
+ limit)))
(defun org-fold-core-previous-folding-state-change (&optional spec-or-alias
pos limit)
"Call `org-fold-core-next-folding-state-change' searching backwards."