]> code.delx.au - gnu-emacs-elpa/commitdiff
Move switch-to-buffer to :display-transformer-fn
authorOleh Krehel <ohwoeowho@gmail.com>
Sat, 27 Feb 2016 12:40:00 +0000 (13:40 +0100)
committerOleh Krehel <ohwoeowho@gmail.com>
Sat, 27 Feb 2016 12:40:00 +0000 (13:40 +0100)
* ivy.el (ivy-read): Use also COLLECTION as a key for
  `display-transformer-fn'.
(ivy--format): Simplify.
(ivy-switch-buffer-transformer): New defun.
(ivy-set-display-transformer): Set 'ivy-switch-buffer and
'internal-complete-buffer to 'ivy-switch-buffer-transformer.

ivy.el

diff --git a/ivy.el b/ivy.el
index fe840c71d4dc436b62f38140d15b0a708a254b25..d500b8e9e667b224ce6d331d289927734903cae7 100644 (file)
--- a/ivy.el
+++ b/ivy.el
@@ -1259,7 +1259,10 @@ customizations apply to the current completion session."
                           ivy--extra-candidates))))))
       (setq ivy--extra-candidates '((original-source)))))
   (let ((recursive-ivy-last (and (active-minibuffer-window) ivy-last))
-        (transformer-fn (plist-get ivy--display-transformers-list caller)))
+        (transformer-fn
+         (plist-get ivy--display-transformers-list
+                    (or caller (and (functionp collection)
+                                    collection)))))
     (setq ivy-last
           (make-ivy-state
            :prompt prompt
@@ -2404,15 +2407,6 @@ CANDS is a list of strings."
                                    (if (string-match-p "/\\'" x)
                                        (propertize x 'face 'ivy-subdir)
                                      x))
-                                 cands)))
-            ((eq (ivy-state-collection ivy-last) 'internal-complete-buffer)
-             (setq cands (mapcar (lambda (x)
-                                   (let ((b (get-buffer x)))
-                                     (if (and b
-                                              (buffer-file-name b)
-                                              (buffer-modified-p b))
-                                         (propertize x 'face 'ivy-modified-buffer)
-                                       x)))
                                  cands))))
       (setq ivy--current (copy-sequence (nth index cands)))
       (when (setq transformer-fn (ivy-state-display-transformer-fn ivy-last))
@@ -2555,6 +2549,19 @@ Skip buffers that match `ivy-ignore-buffers'."
            res)
           res))))
 
+(ivy-set-display-transformer
+ 'ivy-switch-buffer 'ivy-switch-buffer-transformer)
+(ivy-set-display-transformer
+ 'internal-complete-buffer 'ivy-switch-buffer-transformer)
+
+(defun ivy-switch-buffer-transformer (str)
+  (let ((b (get-buffer str)))
+    (if (and b
+             (buffer-file-name b)
+             (buffer-modified-p b))
+        (propertize str 'face 'ivy-modified-buffer)
+      str)))
+
 ;;;###autoload
 (defun ivy-switch-buffer ()
   "Switch to another buffer."