summaryrefslogtreecommitdiff
path: root/emacs
diff options
context:
space:
mode:
authorDavid Edmondson <dme@dme.org>2010-03-23 10:06:00 +0000
committerCarl Worth <cworth@cworth.org>2010-04-21 13:05:39 -0700
commitb93c5749fd43d384630e16c373ae8e372cc3ae1c (patch)
treed0e7daa695746e5c5732cdb94838972be044d3a0 /emacs
parent3b3da097d88795fe9a6fca419f32fd59aa2da418 (diff)
emacs/notmuch-show.el: Improved part labelling
If a text/plain part is not the first part in a message, add a label in order that a user can see that multiple parts are present. If a part has a 'filename' attribute, include it in any label describing the part.
Diffstat (limited to 'emacs')
-rw-r--r--emacs/notmuch-show.el26
1 files changed, 17 insertions, 9 deletions
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index 8668481..f5822a0 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -202,17 +202,24 @@ message at DEPTH in the current thread."
(narrow-to-region start (point-max))
(run-hooks 'notmuch-show-markup-headers-hook)))))
-(defun notmuch-show-insert-part-header (content-type)
+(defun notmuch-show-insert-part-header (content-type &optional name)
(let ((start (point)))
;; XXX dme: Make this a more useful button (save the part, display
;; external, etc.)
- (insert "[ Part of type " content-type ". ]\n")
+ (insert "[ Part of type "
+ content-type
+ (if name (concat " named " name) "")
+ ". ]\n")
(overlay-put (make-overlay start (point)) 'face 'bold)))
;; Functions handling particular MIME parts.
-(defun notmuch-show-insert-part-text/plain (part content-type depth)
+(defun notmuch-show-insert-part-text/plain (part content-type nth depth)
(let ((start (point)))
+ ;; If this text/plain part is not the first part in the message,
+ ;; insert a header to make this clear.
+ (if (> nth 1)
+ (notmuch-show-insert-part-header content-type (plist-get part :filename)))
(insert (plist-get part :content))
(save-excursion
(save-restriction
@@ -220,16 +227,16 @@ message at DEPTH in the current thread."
(run-hook-with-args 'notmuch-show-insert-text/plain-hook depth))))
t)
-(defun notmuch-show-insert-part-text/* (part content-type depth)
+(defun notmuch-show-insert-part-text/* (part content-type nth depth)
;; Handle all text types other than text/html.
(if (string-equal "text/html" content-type)
nil
- (notmuch-show-insert-part-header content-type)
+ (notmuch-show-insert-part-header content-type (plist-get part :filename))
(insert (plist-get part :content))
t))
-(defun notmuch-show-insert-part-*/* (part content-type depth)
- (notmuch-show-insert-part-header content-type)
+(defun notmuch-show-insert-part-*/* (part content-type nth depth)
+ (notmuch-show-insert-part-header content-type (plist-get part :filename))
t)
;; Functions for determining how to handle MIME parts.
@@ -257,11 +264,12 @@ message at DEPTH in the current thread."
(defun notmuch-show-insert-bodypart (part depth)
"Insert the body part PART at depth DEPTH in the current thread."
(let* ((content-type (downcase (plist-get part :content-type)))
- (handlers (notmuch-show-handlers-for content-type)))
+ (handlers (notmuch-show-handlers-for content-type))
+ (nth (plist-get part :id)))
;; Run the content handlers until one of them returns a non-nil
;; value.
(while (and handlers
- (not (funcall (car handlers) part content-type depth)))
+ (not (funcall (car handlers) part content-type nth depth)))
(setq handlers (cdr handlers))))
;; Ensure that the part ends with a carriage return.
(if (not (bolp))