From: Austin Clements <amdragon@mit.edu>
To: notmuch@notmuchmail.org
Cc: tomi.ollila@iki.fi
Subject: [PATCH v2 0/8] Improve charset and cid: handling
Date: Sat, 24 Jan 2015 16:16:55 -0500 [thread overview]
Message-ID: <1422134223-20739-1-git-send-email-amdragon@mit.edu> (raw)
This is v2 of id:1398105468-14317-1-git-send-email-amdragon@mit.edu.
This improves some comments/documentation, fixes a bug that caused
cryptographic processing to not happen on HTML parts, and addresses
some byte compiler warnings on Emacs 23. This version has also been
rebased against the several months of changes that happened on master
since v1 (which, remarkably, was trivial).
The diff from v1 is below.
diff --git a/emacs/notmuch-lib.el b/emacs/notmuch-lib.el
index 83cbf2f..f8e5165 100644
--- a/emacs/notmuch-lib.el
+++ b/emacs/notmuch-lib.el
@@ -535,7 +535,10 @@ (defun notmuch-get-bodypart-binary (msg part process-crypto &optional cache)
This returns the \"raw\" content of the given part after content
transfer decoding, but with no further processing (see the
discussion of --format=raw in man notmuch-show). In particular,
-this does no charset conversion."
+this does no charset conversion.
+
+If CACHE is non-nil, the content of this part will be saved in
+MSG (if it isn't already)."
(let ((data (plist-get part :binary-content)))
(when (not data)
(let ((args `("show" "--format=raw"
@@ -558,6 +561,8 @@ (defun notmuch-get-bodypart-binary (msg part process-crypto &optional cache)
(apply #'call-process notmuch-command nil '(t nil) nil args)
(setq data (buffer-string)))))
(when cache
+ ;; Cheat. part is non-nil, and `plist-put' always modifies
+ ;; the list in place if it's non-nil.
(plist-put part :binary-content data)))
data))
@@ -567,7 +572,10 @@ (defun notmuch-get-bodypart-text (msg part process-crypto &optional cache)
This returns the content of the given part as a multibyte Lisp
string after performing content transfer decoding and any
necessary charset decoding. It is an error to use this for
-non-text/* parts."
+non-text/* parts.
+
+If CACHE is non-nil, the content of this part will be saved in
+MSG (if it isn't already)."
(let ((content (plist-get part :content)))
(when (not content)
;; Use show --format=sexp to fetch decoded content
diff --git a/emacs/notmuch-show.el b/emacs/notmuch-show.el
index d190711..66350d4 100644
--- a/emacs/notmuch-show.el
+++ b/emacs/notmuch-show.el
@@ -781,10 +781,14 @@ (defun notmuch-show-insert-part-text/html (msg part content-type nth depth butto
(let ((mm-inline-text-html-with-w3m-keymap nil))
(notmuch-show-insert-part-*/* msg part content-type nth depth button))))
+;; These functions are used by notmuch-show--insert-part-text/html-shr
+(declare-function libxml-parse-html-region "xml.c")
+(declare-function shr-insert-document "shr")
+
(defun notmuch-show--insert-part-text/html-shr (msg part)
;; Make sure shr is loaded before we start let-binding its globals
(require 'shr)
- (let ((dom (let (process-crypto notmuch-show-process-crypto)
+ (let ((dom (let ((process-crypto notmuch-show-process-crypto))
(with-temp-buffer
(insert (notmuch-get-bodypart-text msg part process-crypto))
(libxml-parse-html-region (point-min) (point-max)))))
next reply other threads:[~2015-01-24 21:17 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-01-24 21:16 Austin Clements [this message]
2015-01-24 21:16 ` [PATCH v2 1/8] emacs: Track full message and part descriptor in w3m CID store Austin Clements
2015-01-24 21:16 ` [PATCH v2 2/8] emacs: Create an API for fetching parts as undecoded binary Austin Clements
2015-01-24 21:16 ` [PATCH v2 3/8] emacs: Remove broken `notmuch-get-bodypart-content' API Austin Clements
2015-01-24 21:16 ` [PATCH v2 4/8] emacs: Return unibyte strings for binary part data Austin Clements
2015-01-24 21:17 ` [PATCH v2 5/8] emacs: Support caching in notmuch-get-bodypart-{binary, text} Austin Clements
2015-01-24 21:17 ` [PATCH v2 6/8] emacs: Use generalized content caching in w3m CID code Austin Clements
2015-01-24 21:17 ` [PATCH v2 7/8] emacs: Rewrite content ID handling Austin Clements
2015-01-24 21:17 ` [PATCH v2 8/8] emacs: Support cid: references with shr renderer Austin Clements
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=1422134223-20739-1-git-send-email-amdragon@mit.edu \
--to=amdragon@mit.edu \
--cc=notmuch@notmuchmail.org \
--cc=tomi.ollila@iki.fi \
/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).