[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/consult 633b34244f: Revert "More efficient invisible re
From: |
ELPA Syncer |
Subject: |
[elpa] externals/consult 633b34244f: Revert "More efficient invisible region restoration in Org" |
Date: |
Thu, 1 Dec 2022 01:57:26 -0500 (EST) |
branch: externals/consult
commit 633b34244faabd299fe5ec5b213fba0a5f631cd6
Author: Daniel Mendler <mail@daniel-mendler.de>
Commit: Daniel Mendler <mail@daniel-mendler.de>
Revert "More efficient invisible region restoration in Org"
This reverts commit 42c485b721ca2e1e3919850aa39b06da789e7dfa.
---
consult.el | 63 ++++++++++++++++++++++++++++++--------------------------------
1 file changed, 30 insertions(+), 33 deletions(-)
diff --git a/consult.el b/consult.el
index cace3ac556..00a6ec06f3 100644
--- a/consult.el
+++ b/consult.el
@@ -1363,38 +1363,36 @@ See `isearch-open-necessary-overlays' and
`isearch-open-overlay-temporary'."
(when (invisible-p (overlay-get ov 'invisible))
(funcall fun ov))))))
-(defun consult--invisible-opener ()
- "Create function to temporarily open overlays which hide the current line.
+(defun consult--invisible-open-temporarily ()
+ "Temporarily open overlays which hide the current line.
See `isearch-open-necessary-overlays' and `isearch-open-overlay-temporary'."
(if (and (derived-mode-p #'org-mode) (fboundp 'org-fold-show-set-visibility))
;; New Org 9.6 fold-core API
+ ;; TODO The provided Org API `org-fold-show-set-visibility' cannot be
used
+ ;; efficiently. We obtain all regions in the whole buffer in order to
+ ;; restore them. A better show API would return all the applied
+ ;; modifications such that we can restore the ones which got modified.
(let ((regions (delq nil (org-fold-core-get-regions
- :with-markers t :from (point-min) :to
(point-max))))
- restore)
- (lambda (open)
- (when restore
- (pcase-dolist (`(,beg ,end ,spec) regions)
- (org-fold-core-region beg end t spec))
- (setq restore nil))
- (when open
- (org-fold-show-set-visibility 'local)
- (setq restore t))))
+ :with-markers t :from (point-min) :to
(point-max)))))
+ (org-fold-show-set-visibility 'local)
+ (list (lambda ()
+ (pcase-dolist (`(,beg ,end ,spec) regions)
+ (org-fold-core-region beg end t spec)
+ (when (markerp beg) (set-marker beg nil))
+ (when (markerp end) (set-marker end nil))))))
(let (restore)
- (lambda (open)
- (mapc #'funcall restore)
- (setq restore nil)
- (dolist (ov (let ((inhibit-field-text-motion t))
- (and open
- (overlays-in (line-beginning-position)
(line-end-position)))))
- (let ((inv (overlay-get ov 'invisible)))
- (when (and (invisible-p inv) (overlay-get ov
'isearch-open-invisible))
- (push (if-let (fun (overlay-get ov
'isearch-open-invisible-temporary))
- (progn
- (funcall fun ov nil)
- (lambda () (funcall fun ov t)))
- (overlay-put ov 'invisible nil)
- (lambda () (overlay-put ov 'invisible inv)))
- restore))))))))
+ (dolist (ov (let ((inhibit-field-text-motion t))
+ (overlays-in (line-beginning-position)
(line-end-position))))
+ (let ((inv (overlay-get ov 'invisible)))
+ (when (and (invisible-p inv) (overlay-get ov
'isearch-open-invisible))
+ (push (if-let (fun (overlay-get ov
'isearch-open-invisible-temporary))
+ (progn
+ (funcall fun ov nil)
+ (lambda () (funcall fun ov t)))
+ (overlay-put ov 'invisible nil)
+ (lambda () (overlay-put ov 'invisible inv)))
+ restore))))
+ restore)))
(defun consult--jump-1 (pos)
"Go to POS and recenter."
@@ -1435,14 +1433,13 @@ The function can be used as the `:state' argument of
`consult--read'."
(let ((saved-min (point-min-marker))
(saved-max (point-max-marker))
(saved-pos (point-marker))
- (open-invisible (consult--invisible-opener))
- overlays)
+ overlays invisible)
(set-marker-insertion-type saved-max t) ;; Grow when text is inserted
(lambda (action cand)
(when (eq action 'preview)
- (funcall open-invisible nil)
+ (mapc #'funcall invisible)
(mapc #'delete-overlay overlays)
- (setq overlays nil)
+ (setq invisible nil overlays nil)
(if (not cand)
;; If position cannot be previewed, return to saved position
(let ((saved-buffer (marker-buffer saved-pos)))
@@ -1453,8 +1450,8 @@ The function can be used as the `:state' argument of
`consult--read'."
(goto-char saved-pos)))
;; Handle positions with overlay information
(consult--jump-1 (or (car-safe cand) cand))
- (funcall open-invisible 'open)
- (setq overlays
+ (setq invisible (consult--invisible-open-temporarily)
+ overlays
(list (save-excursion
(let ((vbeg (progn (beginning-of-visual-line) (point)))
(vend (progn (end-of-visual-line) (point)))
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [elpa] externals/consult 633b34244f: Revert "More efficient invisible region restoration in Org",
ELPA Syncer <=