diff options
Diffstat (limited to 'helm-buffers.el')
-rw-r--r-- | helm-buffers.el | 107 |
1 files changed, 59 insertions, 48 deletions
diff --git a/helm-buffers.el b/helm-buffers.el index 13bf81f0..c15e29b0 100644 --- a/helm-buffers.el +++ b/helm-buffers.el @@ -153,6 +153,11 @@ this source is accessible and properly loaded." "Face for buffer file names in `helm-buffers-list'." :group 'helm-buffers-faces) +(defface helm-buffer-archive + '((t (:foreground "Gold"))) + "Face for archive file names in `helm-buffers-list'." + :group 'helm-buffers-faces) + (defface helm-non-file-buffer '((t (:inherit italic))) "Face used for non-file buffers in `helm-buffers-list'." @@ -365,58 +370,64 @@ See `ido-make-buffer-list' for more infos." (helm-aif default-directory (abbreviate-file-name it)))) (file-name (helm-aif (buffer-file-name buf) (abbreviate-file-name it))) (name (buffer-name buf)) - (name-prefix (when (and dir (or (file-remote-p dir) - (and (fboundp 'tramp-archive-file-name-p) - (tramp-archive-file-name-p dir)))) - (propertize "@ " 'face 'helm-ff-prefix)))) + (name-prefix (when (and dir (file-remote-p dir)) + (propertize "@ " 'face 'helm-ff-prefix))) + (archive-p (and (fboundp 'tramp-archive-file-name-p) + (tramp-archive-file-name-p dir)))) (when name-prefix - (setq dir (helm-url-unhex-string dir) + ;; Remote tramp buffer names may be hexified, make them more readable. + (setq dir (helm-url-unhex-string dir) name (helm-url-unhex-string name))) - ;; No fancy things on remote buffers. - (if (and name-prefix helm-buffer-skip-remote-checking) + ;; Handle tramp archive buffers specially. + (if archive-p (helm-buffer--show-details name name-prefix file-name size mode dir - 'helm-buffer-file 'helm-buffer-process nil details 'filebuf) - (cond - ( ;; A dired buffer. - (rassoc buf dired-buffers) - (helm-buffer--show-details - name name-prefix dir size mode dir - 'helm-buffer-directory 'helm-buffer-process nil details 'dired)) - ;; A buffer file modified somewhere outside of emacs.=>red - ((and file-name - (file-exists-p file-name) - (not (verify-visited-file-modtime buf))) - (helm-buffer--show-details - name name-prefix file-name size mode dir - 'helm-buffer-saved-out 'helm-buffer-process nil details 'modout)) - ;; A new buffer file not already saved on disk (or a deleted file) .=>indianred2 - ((and file-name (not (file-exists-p file-name))) - (helm-buffer--show-details - name name-prefix file-name size mode dir - 'helm-buffer-not-saved 'helm-buffer-process nil details 'notsaved)) - ;; A buffer file modified and not saved on disk.=>orange - ((and file-name (buffer-modified-p buf)) - (helm-buffer--show-details - name name-prefix file-name size mode dir - 'helm-buffer-modified 'helm-buffer-process nil details 'mod)) - ;; A buffer file not modified and saved on disk.=>green - (file-name - (helm-buffer--show-details - name name-prefix file-name size mode dir - 'helm-buffer-file 'helm-buffer-process nil details 'filebuf)) - ;; A non-file, modified buffer - ((with-current-buffer name - (and helm-buffers-tick-counter - (/= helm-buffers-tick-counter (buffer-modified-tick)))) - (helm-buffer--show-details - name (and proc name-prefix) dir size mode dir - 'helm-buffer-modified 'helm-buffer-process proc details 'nofile-mod)) - ;; Any non--file buffer.=>italic - (t - (helm-buffer--show-details - name (and proc name-prefix) dir size mode dir - 'helm-non-file-buffer 'helm-buffer-process proc details 'nofile)))))) + 'helm-buffer-archive 'helm-buffer-process nil details 'filebuf) + ;; No fancy things on remote buffers. + (if (and name-prefix helm-buffer-skip-remote-checking) + (helm-buffer--show-details + name name-prefix file-name size mode dir + 'helm-buffer-file 'helm-buffer-process nil details 'filebuf) + (cond + (;; A dired buffer. + (rassoc buf dired-buffers) + (helm-buffer--show-details + name name-prefix dir size mode dir + 'helm-buffer-directory 'helm-buffer-process nil details 'dired)) + ;; A buffer file modified somewhere outside of emacs.=>red + ((and file-name + (file-exists-p file-name) + (not (verify-visited-file-modtime buf))) + (helm-buffer--show-details + name name-prefix file-name size mode dir + 'helm-buffer-saved-out 'helm-buffer-process nil details 'modout)) + ;; A new buffer file not already saved on disk (or a deleted file) .=>indianred2 + ((and file-name (not (file-exists-p file-name))) + (helm-buffer--show-details + name name-prefix file-name size mode dir + 'helm-buffer-not-saved 'helm-buffer-process nil details 'notsaved)) + ;; A buffer file modified and not saved on disk.=>orange + ((and file-name (buffer-modified-p buf)) + (helm-buffer--show-details + name name-prefix file-name size mode dir + 'helm-buffer-modified 'helm-buffer-process nil details 'mod)) + ;; A buffer file not modified and saved on disk.=>green + (file-name + (helm-buffer--show-details + name name-prefix file-name size mode dir + 'helm-buffer-file 'helm-buffer-process nil details 'filebuf)) + ;; A non-file, modified buffer + ((with-current-buffer name + (and helm-buffers-tick-counter + (/= helm-buffers-tick-counter (buffer-modified-tick)))) + (helm-buffer--show-details + name (and proc name-prefix) dir size mode dir + 'helm-buffer-modified 'helm-buffer-process proc details 'nofile-mod)) + ;; Any non--file buffer.=>italic + (t + (helm-buffer--show-details + name (and proc name-prefix) dir size mode dir + 'helm-non-file-buffer 'helm-buffer-process proc details 'nofile))))))) (defun helm-highlight-buffers (buffers _source) "Transformer function to highlight BUFFERS list. |