summaryrefslogtreecommitdiff
path: root/helm-buffers.el
diff options
context:
space:
mode:
Diffstat (limited to 'helm-buffers.el')
-rw-r--r--helm-buffers.el107
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.