branch: master
commit cd6583be1113fca16e77e1308b3503ab409885cc
Author: Oleh Krehel <[email protected]>
Commit: Oleh Krehel <[email protected]>
avy-jump.el (avi-all-windows): New defcustom
* avy-jump.el (avi--regex-candidates): When `avi-all-windows' is
non-nil, use all windows instead of just the current.
---
avy-jump.el | 35 ++++++++++++++++++++---------------
1 files changed, 20 insertions(+), 15 deletions(-)
diff --git a/avy-jump.el b/avy-jump.el
index 60f4f25..3d45065 100644
--- a/avy-jump.el
+++ b/avy-jump.el
@@ -75,25 +75,30 @@ POS is either a position or (BEG . END)."
#'aw--remove-leading-chars))))
(aw--done)))
+(defcustom avi-all-windows t
+ "When non-nil, loop though all windows for candidates."
+ :type 'boolean)
+
(defun avi--regex-candidates (regex &optional wnd beg end pred)
"Return all elements that match REGEX in WND.
Each element of the list is ((BEG . END) . WND)
When PRED is non-nil, it's a filter for matching point positions."
- (setq wnd (or wnd (selected-window)))
- (let ((we (or end (window-end (selected-window) t)))
- candidates)
- (save-window-excursion
- (select-window wnd)
- (save-excursion
- (goto-char (or beg (window-start)))
- (while (re-search-forward regex we t)
- (unless (get-char-property (point) 'invisible)
- (when (or (null pred)
- (funcall pred))
- (push (cons (cons (match-beginning 0)
- (match-end 0))
- wnd) candidates)))))
- (nreverse candidates))))
+ (let (candidates)
+ (dolist (wnd (if avi-all-windows
+ (window-list)
+ (list (selected-window))))
+ (with-selected-window wnd
+ (let ((we (or end (window-end (selected-window) t))))
+ (save-excursion
+ (goto-char (or beg (window-start)))
+ (while (re-search-forward regex we t)
+ (unless (get-char-property (point) 'invisible)
+ (when (or (null pred)
+ (funcall pred))
+ (push (cons (cons (match-beginning 0)
+ (match-end 0))
+ wnd) candidates))))))))
+ (nreverse candidates)))
(defvar avi--overlay-offset 0
"The offset to apply in `avi--overlay'.")