Improve ivy-switch-buffer transformer

- Highlights remote/tramp files with ivy-remote face
- Highlights non-file-visiting buffers with ivy-subdir face
- Highlight modified buffers with ivy-modified-buffer face
- Disable built-in ivy-switch-buffer transformer (redundant with our own
  transformer)
This commit is contained in:
Henrik Lissner 2019-04-10 19:22:29 -04:00
parent 5e8687cd45
commit 3ef2abfb22
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 16 additions and 3 deletions

View file

@ -19,9 +19,18 @@
Buffers that are considered unreal (see `doom-real-buffer-p') are dimmed with Buffers that are considered unreal (see `doom-real-buffer-p') are dimmed with
`+ivy-buffer-unreal-face'." `+ivy-buffer-unreal-face'."
(if (doom-real-buffer-p (get-buffer candidate)) (let ((b (get-buffer candidate)))
candidate (cond ((ignore-errors
(propertize candidate 'face +ivy-buffer-unreal-face))) (file-remote-p
(buffer-local-value 'default-directory b)))
(ivy-append-face candidate 'ivy-remote))
((doom-unreal-buffer-p b)
(ivy-append-face candidate +ivy-buffer-unreal-face))
((not (buffer-file-name b))
(ivy-append-face candidate 'ivy-subdir))
((buffer-modified-p b)
(ivy-append-face candidate 'ivy-modified-buffer))
(candidate))))
;;;###autoload ;;;###autoload
(defun +ivy-rich-buffer-icon (candidate) (defun +ivy-rich-buffer-icon (candidate)

View file

@ -106,6 +106,10 @@ immediately runs it on the current candidate (ending the ivy session)."
((all-the-icons-icon-for-file (:width 2 :align right)) ((all-the-icons-icon-for-file (:width 2 :align right))
(ivy-rich-candidate))))))) (ivy-rich-candidate)))))))
;; Remove built-in coloring of buffer list; we do our own
(setq ivy-switch-buffer-faces-alist nil)
(ivy-set-display-transformer 'internal-complete-buffer nil)
;; Highlight buffers differently based on whether they're in the same project ;; Highlight buffers differently based on whether they're in the same project
;; as the current project or not. ;; as the current project or not.
(let* ((plist (plist-get ivy-rich-display-transformers-list 'ivy-switch-buffer)) (let* ((plist (plist-get ivy-rich-display-transformers-list 'ivy-switch-buffer))