(t
(setq p-address address)))
- ;; Remove elements of the mailbox part that are not relevant for
- ;; display, even if they are required during transport.
(when p-name
- ;; Outer double quotes.
- (when (string-match "^\"\\(.*\\)\"$" p-name)
- (setq p-name (match-string 1 p-name)))
-
+ ;; Remove elements of the mailbox part that are not relevant for
+ ;; display, even if they are required during transport:
+ ;;
;; Backslashes.
- (setq p-name (replace-regexp-in-string "\\\\" "" p-name)))
+ (setq p-name (replace-regexp-in-string "\\\\" "" p-name))
+
+ ;; Outer single and double quotes, which might be nested.
+ (loop
+ with start-of-loop
+ do (setq start-of-loop p-name)
+
+ when (string-match "^\"\\(.*\\)\"$" p-name)
+ do (setq p-name (match-string 1 p-name))
+
+ when (string-match "^'\\(.*\\)'$" p-name)
+ do (setq p-name (match-string 1 p-name))
+
+ until (string= start-of-loop p-name)))
;; If the address is 'foo@bar.com <foo@bar.com>' then show just
;; 'foo@bar.com'.
;; compatible with the existing implementation. This just sets it
;; to after the first header.
(notmuch-show-insert-headers headers)
- ;; Headers should include a blank line (backwards compatibility).
- (insert "\n")
(save-excursion
(goto-char content-start)
;; If the subject of this message is the same as that of the
(setq notmuch-show-previous-subject bare-subject)
(setq body-start (point-marker))
+ ;; A blank line between the headers and the body.
+ (insert "\n")
(notmuch-show-insert-body msg (plist-get msg :body) depth)
;; Ensure that the body ends with a newline.
(unless (bolp)
(notmuch-show-next-open-message))
;; Set the header line to the subject of the first open message.
- (setq header-line-format (notmuch-show-strip-re (notmuch-show-get-subject)))
+ (setq header-line-format (notmuch-show-strip-re (notmuch-show-get-pretty-subject)))
(notmuch-show-mark-read)))
(define-key map "-" 'notmuch-show-remove-tag)
(define-key map "+" 'notmuch-show-add-tag)
(define-key map "x" 'notmuch-show-archive-thread-then-exit)
- (define-key map "a" 'notmuch-show-archive-thread-then-next)
+ (define-key map "a" 'notmuch-show-archive-message-then-next)
+ (define-key map "A" 'notmuch-show-archive-thread-then-next)
(define-key map "N" 'notmuch-show-next-message)
(define-key map "P" 'notmuch-show-previous-message)
(define-key map "n" 'notmuch-show-next-open-message)
(defun notmuch-show-get-depth ()
(notmuch-show-get-prop :depth))
+(defun notmuch-show-get-pretty-subject ()
+ (notmuch-prettify-subject (notmuch-show-get-subject)))
+
(defun notmuch-show-set-tags (tags)
"Set the tags of the current message."
(notmuch-show-set-prop :tags tags)
;; If a small number of lines from the previous message are
;; visible, realign so that the top of the current message is at
;; the top of the screen.
- (if (<= (count-screen-lines (window-start) start-of-message)
- next-screen-context-lines)
- (progn
- (goto-char (notmuch-show-message-top))
- (notmuch-show-message-adjust)))
+ (when (<= (count-screen-lines (window-start) start-of-message)
+ next-screen-context-lines)
+ (goto-char (notmuch-show-message-top))
+ (notmuch-show-message-adjust))
;; Move to the top left of the window.
(goto-char (window-start)))
(t
(goto-char (point-max))))))
(defun notmuch-show-previous-open-message ()
- "Show the previous message."
+ "Show the previous open message."
(interactive)
(while (and (notmuch-show-goto-message-previous)
(not (notmuch-show-message-visible-p))))
"Archive the current message, then show the next open message in the current thread."
(interactive)
(notmuch-show-archive-message)
- (notmuch-show-next-open-message))
+ (notmuch-show-next-open-message t))
(defun notmuch-show-stash-cc ()
"Copy CC field of current message to kill-ring."