mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 20:08:10 +01:00
emacs/mua: Generate improved cited text for replies
Use the message display code to generate message text to cite in replies. For now we set insert-headers-p function to notmuch-show-reply-insert-header-p-never so that, as before, we don't insert part buttons. With that choice of insert-headers-p function there is only one failing test: this test has a text part (an email message) listed as application/octet-stream. Notmuch show displays this part, but the reply code omitted it as it had type application/octet-stream. The new code correctly includes it. Thus update the expected output to match.
This commit is contained in:
parent
c802d12a1e
commit
e103f0a971
2 changed files with 45 additions and 30 deletions
|
@ -28,7 +28,7 @@
|
|||
|
||||
(eval-when-compile (require 'cl))
|
||||
|
||||
(declare-function notmuch-show-insert-bodypart "notmuch-show" (msg part depth &optional hide))
|
||||
(declare-function notmuch-show-insert-body "notmuch-show" (msg body depth))
|
||||
(declare-function notmuch-fcc-header-setup "notmuch-maildir-fcc" ())
|
||||
(declare-function notmuch-fcc-handler "notmuch-maildir-fcc" (destdir))
|
||||
|
||||
|
@ -144,31 +144,6 @@ Note that these functions use `mail-citation-hook' if that is non-nil."
|
|||
else if (notmuch-match-content-type (plist-get part :content-type) "multipart/*")
|
||||
do (notmuch-mua-reply-crypto (plist-get part :content))))
|
||||
|
||||
(defun notmuch-mua-get-quotable-parts (parts)
|
||||
(loop for part in parts
|
||||
if (notmuch-match-content-type (plist-get part :content-type) "multipart/alternative")
|
||||
collect (let* ((subparts (plist-get part :content))
|
||||
(types (mapcar (lambda (part) (plist-get part :content-type)) subparts))
|
||||
(chosen-type (car (notmuch-multipart/alternative-choose types))))
|
||||
(loop for part in (reverse subparts)
|
||||
if (notmuch-match-content-type (plist-get part :content-type) chosen-type)
|
||||
return part))
|
||||
else if (notmuch-match-content-type (plist-get part :content-type) "multipart/*")
|
||||
append (notmuch-mua-get-quotable-parts (plist-get part :content))
|
||||
else if (notmuch-match-content-type (plist-get part :content-type) "text/*")
|
||||
collect part))
|
||||
|
||||
(defun notmuch-mua-insert-quotable-part (message part)
|
||||
;; We don't want text properties leaking from the show renderer into
|
||||
;; the reply so we use a temp buffer. Also we don't want hooks, such
|
||||
;; as notmuch-wash-*, to be run on the quotable part so we set
|
||||
;; notmuch-show-insert-text/plain-hook to nil.
|
||||
(insert (with-temp-buffer
|
||||
(let ((notmuch-show-insert-text/plain-hook nil))
|
||||
;; Show the part but do not add buttons.
|
||||
(notmuch-show-insert-bodypart message part 0 'no-buttons))
|
||||
(buffer-substring-no-properties (point-min) (point-max)))))
|
||||
|
||||
;; There is a bug in emacs 23's message.el that results in a newline
|
||||
;; not being inserted after the References header, so the next header
|
||||
;; is concatenated to the end of it. This function fixes the problem,
|
||||
|
@ -247,10 +222,18 @@ Note that these functions use `mail-citation-hook' if that is non-nil."
|
|||
(insert "From: " from "\n")
|
||||
(insert "Date: " date "\n\n")
|
||||
|
||||
;; Get the parts of the original message that should be quoted; this includes
|
||||
;; all the text parts, except the non-preferred ones in a multipart/alternative.
|
||||
(let ((quotable-parts (notmuch-mua-get-quotable-parts (plist-get original :body))))
|
||||
(mapc (apply-partially 'notmuch-mua-insert-quotable-part original) quotable-parts))
|
||||
(insert (with-temp-buffer
|
||||
(let
|
||||
;; Don't attempt to clean up messages, excerpt
|
||||
;; citations, etc. in the original message before
|
||||
;; quoting.
|
||||
((notmuch-show-insert-text/plain-hook nil)
|
||||
;; Don't omit long parts.
|
||||
(notmuch-show-max-text-part-size 0)
|
||||
;; Insert headers for parts as appropriate for replying.
|
||||
(notmuch-show-insert-header-p-function #'notmuch-show-reply-insert-header-p-never))
|
||||
(notmuch-show-insert-body original (plist-get original :body) 0)
|
||||
(buffer-substring-no-properties (point-min) (point-max)))))
|
||||
|
||||
(set-mark (point))
|
||||
(goto-char start)
|
||||
|
|
|
@ -473,6 +473,38 @@ Alex Botero-Lowry <alex.boterolowry@gmail.com> writes:
|
|||
> and http://mail-index.netbsd.org/pkgsrc-bugs/2006/06/07/msg016808.htmlspecifically
|
||||
> uses 64 as the
|
||||
> buffer size.
|
||||
> From e3bc4bbd7b9d0d086816ab5f8f2d6ffea1dd3ea4 Mon Sep 17 00:00:00 2001
|
||||
> From: Alexander Botero-Lowry <alex.boterolowry@gmail.com>
|
||||
> Date: Tue, 17 Nov 2009 11:30:39 -0800
|
||||
> Subject: [PATCH] Deal with situation where sysconf(_SC_GETPW_R_SIZE_MAX) returns -1
|
||||
>
|
||||
> ---
|
||||
> notmuch-config.c | 2 ++
|
||||
> 1 files changed, 2 insertions(+), 0 deletions(-)
|
||||
>
|
||||
> diff --git a/notmuch-config.c b/notmuch-config.c
|
||||
> index 248149c..e7220d8 100644
|
||||
> --- a/notmuch-config.c
|
||||
> +++ b/notmuch-config.c
|
||||
> @@ -77,6 +77,7 @@ static char *
|
||||
> get_name_from_passwd_file (void *ctx)
|
||||
> {
|
||||
> long pw_buf_size = sysconf(_SC_GETPW_R_SIZE_MAX);
|
||||
> + if (pw_buf_size == -1) pw_buf_size = 64;
|
||||
> char *pw_buf = talloc_zero_size (ctx, pw_buf_size);
|
||||
> struct passwd passwd, *ignored;
|
||||
> char *name;
|
||||
> @@ -101,6 +102,7 @@ static char *
|
||||
> get_username_from_passwd_file (void *ctx)
|
||||
> {
|
||||
> long pw_buf_size = sysconf(_SC_GETPW_R_SIZE_MAX);
|
||||
> + if (pw_buf_size == -1) pw_buf_size = 64;
|
||||
> char *pw_buf = talloc_zero_size (ctx, pw_buf_size);
|
||||
> struct passwd passwd, *ignored;
|
||||
> char *name;
|
||||
> --
|
||||
> 1.6.5.2
|
||||
>
|
||||
> _______________________________________________
|
||||
> notmuch mailing list
|
||||
> notmuch@notmuchmail.org
|
||||
|
|
Loading…
Reference in a new issue