mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-21 18:38:08 +01:00
emacs: Elide the display of repeated subjects in thread display mode.
Collapsed messages do not show a "Subject:" line if the subject is the same as that of the previous message.
This commit is contained in:
parent
42f1a13374
commit
e6d31a5435
1 changed files with 24 additions and 10 deletions
|
@ -381,17 +381,24 @@ current buffer, if possible."
|
|||
(defun notmuch-show-make-symbol (type)
|
||||
(make-symbol (concat "notmuch-show-" type)))
|
||||
|
||||
(defun notmuch-show-strip-re (string)
|
||||
(replace-regexp-in-string "^\\([Rr]e: *\\)+" "" string))
|
||||
|
||||
(defvar notmuch-show-previous-subject "")
|
||||
(make-variable-buffer-local 'notmuch-show-previous-subject)
|
||||
|
||||
(defun notmuch-show-insert-msg (msg depth)
|
||||
"Insert the message MSG at depth DEPTH in the current thread."
|
||||
(let ((headers (plist-get msg :headers))
|
||||
;; Indentation causes the buffer offset of the start/end
|
||||
;; points to move, so we must use markers.
|
||||
message-start message-end
|
||||
content-start content-end
|
||||
headers-start headers-end
|
||||
body-start body-end
|
||||
(headers-invis-spec (notmuch-show-make-symbol "header"))
|
||||
(message-invis-spec (notmuch-show-make-symbol "message")))
|
||||
(let* ((headers (plist-get msg :headers))
|
||||
;; Indentation causes the buffer offset of the start/end
|
||||
;; points to move, so we must use markers.
|
||||
message-start message-end
|
||||
content-start content-end
|
||||
headers-start headers-end
|
||||
body-start body-end
|
||||
(headers-invis-spec (notmuch-show-make-symbol "header"))
|
||||
(message-invis-spec (notmuch-show-make-symbol "message"))
|
||||
(bare-subject (notmuch-show-strip-re (plist-get headers :Subject))))
|
||||
|
||||
;; Set `buffer-invisibility-spec' to `nil' (a list), otherwise
|
||||
;; removing items from `buffer-invisibility-spec' (which is what
|
||||
|
@ -428,10 +435,17 @@ current buffer, if possible."
|
|||
(insert "\n")
|
||||
(save-excursion
|
||||
(goto-char content-start)
|
||||
(forward-line 1)
|
||||
;; If the subject of this message is the same as that of the
|
||||
;; previous message, don't display it when this message is
|
||||
;; collapsed.
|
||||
(when (not (string= notmuch-show-previous-subject
|
||||
bare-subject))
|
||||
(forward-line 1))
|
||||
(setq headers-start (point-marker)))
|
||||
(setq headers-end (point-marker))
|
||||
|
||||
(setq notmuch-show-previous-subject bare-subject)
|
||||
|
||||
(setq body-start (point-marker))
|
||||
(notmuch-show-insert-body msg (plist-get msg :body) depth)
|
||||
;; Ensure that the body ends with a newline.
|
||||
|
|
Loading…
Reference in a new issue