From: David Edmondson <dme@dme.org>
To: notmuch@notmuchmail.org
Subject: [PATCH 2/2] emacs: Add more processing of displayed headers.
Date: Thu, 26 Jan 2012 08:17:51 +0000 [thread overview]
Message-ID: <1327565871-19729-3-git-send-email-dme@dme.org> (raw)
In-Reply-To: <1327565871-19729-1-git-send-email-dme@dme.org>
Wrap headers to the width of the window and indent continuations.
---
emacs/notmuch-show.el | 43 ++++++++++++++++++++++++++++++++++++-------
1 files changed, 36 insertions(+), 7 deletions(-)
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index effd2fd..ad286d1 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -67,9 +67,16 @@ any given message."
:type 'boolean
:group 'notmuch-show)
-(defvar notmuch-show-markup-headers-hook '(notmuch-show-colour-headers)
+(defcustom notmuch-show-markup-headers-hook '(notmuch-show-colour-headers
+ notmuch-show-fill-headers
+ notmuch-show-indent-continuations)
"A list of functions called to decorate the headers listed in
-`notmuch-message-headers'.")
+`notmuch-message-headers'."
+ :type 'hook
+ :options '(notmuch-show-colour-headers
+ notmuch-show-fill-headers
+ notmuch-show-indent-continuations)
+ :group 'notmuch-show)
(defcustom notmuch-show-hook '(notmuch-show-turn-on-visual-line-mode)
"Functions called after populating a `notmuch-show' buffer."
@@ -268,13 +275,35 @@ operation on the contents of the current buffer."
(overlay-put (make-overlay (point) (re-search-forward ".*$"))
'face face)))
-(defun notmuch-show-colour-headers ()
+(defun notmuch-show-colour-headers (depth)
"Apply some colouring to the current headers."
(goto-char (point-min))
(while (looking-at "^[A-Za-z][-A-Za-z0-9]*:")
(notmuch-show-fontify-header)
(forward-line)))
+(defun notmuch-show-fill-headers (depth)
+ "Wrap the text of the current headers."
+
+ ;; '-5' to allow for the indentation code.
+ (let ((fill-column (- (window-width) depth 5)))
+ (goto-char (point-min))
+ (while (not (eobp))
+ (let ((start (point)))
+ (end-of-line)
+ ;; We're left at the start of the next line, so there's no need
+ ;; to move forward after filling.
+ (fill-region-as-paragraph start (point))))))
+
+(defun notmuch-show-indent-continuations (depth)
+ "Indent any continuation lines."
+ (goto-char (point-min))
+ (while (not (eobp))
+ (if (not (looking-at "^[A-Za-z][-A-Za-z0-9]*:"))
+ ;; Four spaces tends to work well with 'To' and 'Cc' headers.
+ (insert " "))
+ (forward-line)))
+
(defun notmuch-show-spaces-n (n)
"Return a string comprised of `n' spaces."
(make-string n ? ))
@@ -329,7 +358,7 @@ message at DEPTH in the current thread."
"Insert a single header."
(insert header ": " header-value "\n"))
-(defun notmuch-show-insert-headers (headers)
+(defun notmuch-show-insert-headers (headers depth)
"Insert the headers of the current message."
(let ((start (point)))
(mapc (lambda (header)
@@ -342,7 +371,7 @@ message at DEPTH in the current thread."
(save-excursion
(save-restriction
(narrow-to-region start (point-max))
- (run-hooks 'notmuch-show-markup-headers-hook)))))
+ (run-hook-with-args 'notmuch-show-markup-headers-hook depth)))))
(define-button-type 'notmuch-show-part-button-type
'action 'notmuch-show-part-button-default
@@ -633,7 +662,7 @@ current buffer, if possible."
;; Override `notmuch-message-headers' to force `From' to be
;; displayed.
(let ((notmuch-message-headers '("From" "Subject" "To" "Cc" "Date")))
- (notmuch-show-insert-headers (plist-get message :headers)))
+ (notmuch-show-insert-headers (plist-get message :headers) 0))
;; Blank line after headers to be compatible with the normal
;; message display.
@@ -826,7 +855,7 @@ current buffer, if possible."
;; Set `headers-start' to point after the 'Subject:' header to be
;; compatible with the existing implementation. This just sets it
;; to after the first header.
- (notmuch-show-insert-headers headers)
+ (notmuch-show-insert-headers headers depth)
;; Headers should include a blank line (backwards compatibility).
(insert "\n")
(save-excursion
--
1.7.8.3
next prev parent reply other threads:[~2012-01-26 8:17 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-01-26 8:17 [PATCH 0/2] re-enable line wrapping and add some header bling David Edmondson
2012-01-26 8:17 ` [PATCH 1/2] emacs: Re-enable line wrapping in `notmuch-show-mode' David Edmondson
2012-01-26 20:26 ` Tomi Ollila
2012-01-27 11:57 ` David Bremner
2012-01-26 8:17 ` David Edmondson [this message]
2012-01-26 16:17 ` [PATCH 0/2] re-enable line wrapping and add some header bling Dmitry Kurochkin
2012-01-27 6:52 ` David Edmondson
2012-01-27 8:22 ` Jani Nikula
2012-01-26 17:36 ` Jani Nikula
2012-02-06 13:16 ` [PATCH v2] Wrap and indent headers in show mode David Edmondson
2012-02-06 13:16 ` [PATCH v2] emacs: Add more processing of displayed headers David Edmondson
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://notmuchmail.org/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1327565871-19729-3-git-send-email-dme@dme.org \
--to=dme@dme.org \
--cc=notmuch@notmuchmail.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://yhetil.org/notmuch.git/
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).