]> code.delx.au - gnu-emacs-elpa/commitdiff
ivy.el (ivy-switch-buffer-occur): Add
authorjustbur <justin@burkett.cc>
Thu, 17 Mar 2016 12:57:30 +0000 (08:57 -0400)
committerjustbur <justin@burkett.cc>
Thu, 17 Mar 2016 13:04:12 +0000 (09:04 -0400)
Simple occur function for ivy-switch-buffer that drops into a ibuffer
session with the selected buffers filtered.

Fixes #438

ivy.el

diff --git a/ivy.el b/ivy.el
index b5a8d08ac8dd0cdd462731e28e50b52a67fbe0b9..2148880b9c26d224e81321d29862431eac365ed5 100644 (file)
--- a/ivy.el
+++ b/ivy.el
@@ -2582,6 +2582,13 @@ Skip buffers that match `ivy-ignore-buffers'."
         (propertize str 'face 'ivy-modified-buffer)
       str)))
 
+(defun ivy-switch-buffer-occur ()
+  "Occur function for `ivy-switch-buffer' that uses `ibuffer'."
+  (let* ((cand-regexp
+          (concat "\\(" (mapconcat #'regexp-quote ivy--old-cands "\\|") "\\)"))
+         (new-qualifier `((name . ,cand-regexp))))
+    (ibuffer nil (buffer-name) new-qualifier)))
+
 ;;;###autoload
 (defun ivy-switch-buffer ()
   "Switch to another buffer."
@@ -2756,6 +2763,9 @@ When `ivy-calling' isn't nil, call `ivy-occur-press'."
   (setq ivy--occurs-list
         (plist-put ivy--occurs-list cmd occur)))
 
+(ivy-set-occur 'ivy-switch-buffer 'ivy-switch-buffer-occur)
+(ivy-set-occur 'ivy-switch-buffer-other-window 'ivy-switch-buffer-occur)
+
 (defun ivy--occur-insert-lines (cands)
   (dolist (str cands)
     (add-text-properties