mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 02:48: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)
|
(defun notmuch-show-make-symbol (type)
|
||||||
(make-symbol (concat "notmuch-show-" 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)
|
(defun notmuch-show-insert-msg (msg depth)
|
||||||
"Insert the message MSG at depth DEPTH in the current thread."
|
"Insert the message MSG at depth DEPTH in the current thread."
|
||||||
(let ((headers (plist-get msg :headers))
|
(let* ((headers (plist-get msg :headers))
|
||||||
;; Indentation causes the buffer offset of the start/end
|
;; Indentation causes the buffer offset of the start/end
|
||||||
;; points to move, so we must use markers.
|
;; points to move, so we must use markers.
|
||||||
message-start message-end
|
message-start message-end
|
||||||
content-start content-end
|
content-start content-end
|
||||||
headers-start headers-end
|
headers-start headers-end
|
||||||
body-start body-end
|
body-start body-end
|
||||||
(headers-invis-spec (notmuch-show-make-symbol "header"))
|
(headers-invis-spec (notmuch-show-make-symbol "header"))
|
||||||
(message-invis-spec (notmuch-show-make-symbol "message")))
|
(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
|
;; Set `buffer-invisibility-spec' to `nil' (a list), otherwise
|
||||||
;; removing items from `buffer-invisibility-spec' (which is what
|
;; removing items from `buffer-invisibility-spec' (which is what
|
||||||
|
@ -428,10 +435,17 @@ current buffer, if possible."
|
||||||
(insert "\n")
|
(insert "\n")
|
||||||
(save-excursion
|
(save-excursion
|
||||||
(goto-char content-start)
|
(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-start (point-marker)))
|
||||||
(setq headers-end (point-marker))
|
(setq headers-end (point-marker))
|
||||||
|
|
||||||
|
(setq notmuch-show-previous-subject bare-subject)
|
||||||
|
|
||||||
(setq body-start (point-marker))
|
(setq body-start (point-marker))
|
||||||
(notmuch-show-insert-body msg (plist-get msg :body) depth)
|
(notmuch-show-insert-body msg (plist-get msg :body) depth)
|
||||||
;; Ensure that the body ends with a newline.
|
;; Ensure that the body ends with a newline.
|
||||||
|
|
Loading…
Reference in a new issue