emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] master 6d4f2b3 34/57: Fix the error switching to non-existent buf


From: Oleh Krehel
Subject: [elpa] master 6d4f2b3 34/57: Fix the error switching to non-existent buffers
Date: Tue, 19 May 2015 14:21:34 +0000

branch: master
commit 6d4f2b321636515582ec6fb234d261c031462a11
Author: Oleh Krehel <address@hidden>
Commit: Oleh Krehel <address@hidden>

    Fix the error switching to non-existent buffers
    
    * ivy.el (ivy-read): Use `ivy-add-virtual-buffers'.
    (ivy-buffer-list): Remove.
    (ivy-add-virtual-buffers): New defun.
    (ivy--switch-buffer-action): New defun, consider `ivy--current' being
    zero length.
    (ivy-switch-buffer): Use `ivy--switch-buffer-action'.
    
    Fixes #101
---
 ivy.el |   60 +++++++++++++++++++++++++++++-------------------------------
 1 files changed, 29 insertions(+), 31 deletions(-)

diff --git a/ivy.el b/ivy.el
index feed8c3..b9fbf0b 100644
--- a/ivy.el
+++ b/ivy.el
@@ -637,13 +637,15 @@ RE-BUILDER is a lambda that transforms text into a regex."
              (setq initial-input nil)))
           ((eq collection 'internal-complete-buffer)
            (setq coll
-                 (mapcar (lambda (x)
-                           (if (with-current-buffer x
-                                 (file-remote-p
-                                  (abbreviate-file-name default-directory)))
-                               (propertize x 'face 'ivy-remote)
-                             x))
-                         (all-completions "" collection predicate))))
+                 (ivy-add-virtual-buffers
+                  (mapcar
+                   (lambda (x)
+                     (if (with-current-buffer x
+                           (file-remote-p
+                            (abbreviate-file-name default-directory)))
+                         (propertize x 'face 'ivy-remote)
+                       x))
+                   (all-completions "" collection predicate)))))
           ((or (functionp collection)
                (vectorp collection)
                (listp (car collection)))
@@ -1134,9 +1136,6 @@ CANDS is a list of strings."
 
 (defvar recentf-list)
 (defvar ido-use-faces)
-(defvar ido-process-ignore-lists)
-(defvar ido-ignored-list)
-(declare-function ido-make-buffer-list "ido")
 
 (defun ivy--virtual-buffers ()
   "Adapted from `ido-add-virtual-buffers-to-list'."
@@ -1169,33 +1168,32 @@ CANDS is a list of strings."
       (setq ivy--virtual-buffers (nreverse virtual-buffers))
       (mapcar #'car ivy--virtual-buffers))))
 
-(defun ivy-buffer-list ()
-  "Return the current list of buffers.
-See `ido-make-buffer-list'."
-  (require 'ido)
-  (setq ivy--virtual-buffers nil)
-  (let ((ido-process-ignore-lists t)
-        ido-ignored-list)
-    (delete-dups
-     (append (ido-make-buffer-list nil)
-             (and
-              ivy-use-virtual-buffers
-              (ivy--virtual-buffers))))))
+(defun ivy-add-virtual-buffers (buffer-list)
+  "Add virtual buffers to BUFFER-LIST."
+  (delete-dups
+   (append
+    buffer-list
+    (and ivy-use-virtual-buffers
+         (ivy--virtual-buffers)))))
+
+(defun ivy--switch-buffer-action ()
+  "Finalizer for `ivy-switch-buffer'."
+  (if (zerop (length ivy--current))
+      (switch-to-buffer
+       ivy-text nil 'force-same-window)
+    (let ((virtual (assoc ivy--current ivy--virtual-buffers)))
+      (if virtual
+          (find-file (cdr virtual))
+        (switch-to-buffer
+         ivy--current nil 'force-same-window)))))
 
 (defun ivy-switch-buffer ()
   "Switch to another buffer."
   (interactive)
   (if (not ivy-mode)
       (call-interactively 'switch-to-buffer)
-    (let ((bl (ivy-buffer-list)))
-      (ivy-read "Switch to buffer: " bl
-                :action
-                (lambda ()
-                  (let ((virtual (assoc ivy--current ivy--virtual-buffers)))
-                    (if virtual
-                        (find-file (cdr virtual))
-                      (switch-to-buffer
-                       ivy--current nil 'force-same-window))))))))
+    (ivy-read "Switch to buffer: " 'internal-complete-buffer
+              :action #'ivy--switch-buffer-action)))
 
 (provide 'ivy)
 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]