feat(mu4e): show size in part/attachment picker

This commit is contained in:
TEC 2021-09-11 23:19:30 +08:00
parent b05d8e8082
commit b489ae6452
No known key found for this signature in database
GPG key ID: 779591AFDB81F06C

View file

@ -192,10 +192,10 @@ Acts like a singular `mu4e-view-save-attachments', without the saving."
(dolist (part parts) (dolist (part parts)
(let ((fname (cdr (assoc 'filename (assoc "attachment" (cdr part)))))) (let ((fname (cdr (assoc 'filename (assoc "attachment" (cdr part))))))
(when fname (when fname
(push (cons (if (featurep 'all-the-icons) (push (cons (concat (format "%-2s " (car part))
(concat (all-the-icons-icon-for-file fname) (when (featurep 'all-the-icons) (all-the-icons-icon-for-file fname))
" " fname) (format " %s " fname)
fname) (format "(%s)" (file-size-human-readable (with-current-buffer (cadr part) (buffer-size)))))
part) part)
files)))) files))))
(if files (if files
@ -210,7 +210,8 @@ Acts like a singular `mu4e-view-save-attachments', without the saving."
(mu4e~view-mime-part-to-temp-file (cdr (+mu4e-view-select-attachment))))) (mu4e~view-mime-part-to-temp-file (cdr (+mu4e-view-select-attachment)))))
(defun +mu4e-view-select-part () (defun +mu4e-view-select-part ()
(let ((parts (mu4e~view-gather-mime-parts)) partinfo labeledparts maxfnamelen fnamefmt) (let ((parts (mu4e~view-gather-mime-parts)) partinfo labeledparts
maxfnamelen fnamefmt maxsizelen sizefmt)
(dolist (part parts) (dolist (part parts)
(push (list :index (car part) (push (list :index (car part)
:mimetype (if (string= "text/plain" (caaddr part)) :mimetype (if (string= "text/plain" (caaddr part))
@ -220,16 +221,20 @@ Acts like a singular `mu4e-view-save-attachments', without the saving."
(caaddr part)) (caaddr part))
:type (car (nth 5 part)) :type (car (nth 5 part))
:filename (cdr (assoc 'filename (assoc "attachment" (cdr part)))) :filename (cdr (assoc 'filename (assoc "attachment" (cdr part))))
:size (file-size-human-readable (with-current-buffer (cadr part) (buffer-size)))
:part part) :part part)
partinfo)) partinfo))
(setq maxfnamelen (apply #'max 7 (mapcar (lambda (i) (length (plist-get i :filename))) partinfo)) (setq maxfnamelen (apply #'max 7 (mapcar (lambda (i) (length (plist-get i :filename))) partinfo))
fnamefmt (format " %%-%ds " maxfnamelen)) fnamefmt (format " %%-%ds " maxfnamelen)
maxsizelen (apply #'max (mapcar (lambda (i) (length (plist-get i :size))) partinfo))
sizefmt (format "%%-%ds " maxsizelen))
(dolist (pinfo partinfo) (dolist (pinfo partinfo)
(push (cons (concat (propertize (format "%-2s " (plist-get pinfo :index)) 'face '(bold font-lock-type-face)) (push (cons (concat (propertize (format "%-2s " (plist-get pinfo :index)) 'face '(bold font-lock-type-face))
(when (featurep 'all-the-icons) (when (featurep 'all-the-icons)
(all-the-icons-icon-for-file (or (plist-get pinfo :filename) ""))) (all-the-icons-icon-for-file (or (plist-get pinfo :filename) "")))
(format fnamefmt (or (plist-get pinfo :filename) (format fnamefmt (or (plist-get pinfo :filename)
(propertize (plist-get pinfo :type) 'face '(italic font-lock-doc-face)))) (propertize (plist-get pinfo :type) 'face '(italic font-lock-doc-face))))
(format sizefmt (propertize (plist-get pinfo :size) 'face 'font-lock-builtin-face))
(propertize (plist-get pinfo :mimetype) 'face 'font-lock-constant-face)) (propertize (plist-get pinfo :mimetype) 'face 'font-lock-constant-face))
(plist-get pinfo :part)) (plist-get pinfo :part))
labeledparts)) labeledparts))