]> code.delx.au - gnu-emacs-elpa/commitdiff
avy-jump.el (avi-all-windows): New defcustom
authorOleh Krehel <ohwoeowho@gmail.com>
Mon, 4 May 2015 17:52:11 +0000 (19:52 +0200)
committerOleh Krehel <ohwoeowho@gmail.com>
Mon, 4 May 2015 17:54:19 +0000 (19:54 +0200)
* avy-jump.el (avi--regex-candidates): When `avi-all-windows' is
  non-nil, use all windows instead of just the current.

avy-jump.el

index 60f4f2543e46f20c6e1530710d7967d017f9905c..3d450653312c73c44c4a810d67150cfbff91bdd7 100644 (file)
@@ -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'.")