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

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

[elpa] externals/ivy-hydra 1b6f3cf 244/395: Improve ivy-switch-buffer-tr


From: Basil L. Contovounesios
Subject: [elpa] externals/ivy-hydra 1b6f3cf 244/395: Improve ivy-switch-buffer-transformer
Date: Thu, 25 Feb 2021 08:32:12 -0500 (EST)

branch: externals/ivy-hydra
commit 1b6f3cf24027f4de749564a3ed6eb96a64b73abe
Author: Basil L. Contovounesios <contovob@tcd.ie>
Commit: Oleh Krehel <ohwoeowho@gmail.com>

    Improve ivy-switch-buffer-transformer
    
    * ivy.el (ivy--remote-name): Remove as it doesn't make sense to
    expand a buffer name against its default-directory.
    (ivy--remote-buffer-p): New function.
    (ivy-switch-buffer-transformer): Use it to annotate remote buffer
    names during completion.
    
    Re #2532
    Fixes #2538
---
 ivy.el | 33 ++++++++++++++++++---------------
 1 file changed, 18 insertions(+), 15 deletions(-)

diff --git a/ivy.el b/ivy.el
index bf01f20..8b2aaa7 100644
--- a/ivy.el
+++ b/ivy.el
@@ -4587,25 +4587,28 @@ Skip buffers that match `ivy-ignore-buffers'."
     (add-face-text-property 0 (length str) face t str))
   str)
 
-(defun ivy--remote-name (str dir)
-  (ivy-append-face (expand-file-name str dir) 'ivy-remote))
+(defun ivy--remote-buffer-p (buffer)
+  "Return non-nil if BUFFER object is visiting a remote file.
+If that is the case, value is a string identifying the remote
+connection."
+  (let ((dir (buffer-local-value 'default-directory buffer)))
+    (ignore-errors (file-remote-p dir))))
 
 (defun ivy-switch-buffer-transformer (str)
   "Transform candidate STR when switching buffers."
   (let ((buf (get-buffer str)))
-    (if buf
-        (let ((dir (buffer-local-value 'default-directory buf))
-              (mode (buffer-local-value 'major-mode buf)))
-          (cond
-            ((and dir (ignore-errors (file-remote-p dir)))
-             (ivy--remote-name str dir))
-            ((not (verify-visited-file-modtime buf))
-             (ivy-append-face str 'ivy-modified-outside-buffer))
-            ((buffer-modified-p buf)
-             (ivy-append-face str 'ivy-modified-buffer))
-            (t
-             (ivy-append-face str (cdr (assq mode 
ivy-switch-buffer-faces-alist))))))
-      str)))
+    (cond ((not buf) str)
+          ((let ((remote (ivy--remote-buffer-p buf)))
+             (when remote
+               (format "%s (%s)" (ivy-append-face str 'ivy-remote) remote))))
+          ((not (verify-visited-file-modtime buf))
+           (ivy-append-face str 'ivy-modified-outside-buffer))
+          ((buffer-modified-p buf)
+           (ivy-append-face str 'ivy-modified-buffer))
+          (t
+           (let* ((mode (buffer-local-value 'major-mode buf))
+                  (face (cdr (assq mode ivy-switch-buffer-faces-alist))))
+             (ivy-append-face str face))))))
 
 (defun ivy-switch-buffer-occur (cands)
   "Occur function for `ivy-switch-buffer' using `ibuffer'.



reply via email to

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