mirror of https://github.com/djcb/mu.git
mu4e-compose: split citing / header extraction
We use a body from mu4e-view-message-text for citing, and mu4e--decoded-message for header extraction. There's room for some refactoring.
This commit is contained in:
parent
117600ef20
commit
a720c9cb1c
|
@ -590,7 +590,8 @@ buffers; lets remap its faces so it uses the ones for mu4e."
|
||||||
(delete-region (point-min) (point-max))))
|
(delete-region (point-min) (point-max))))
|
||||||
|
|
||||||
(defun mu4e--decoded-message (msg)
|
(defun mu4e--decoded-message (msg)
|
||||||
"Get the message MSG, decoded as a string."
|
"Get the message MSG, decoded as a string.
|
||||||
|
This is used only to extract header information."
|
||||||
(with-temp-buffer
|
(with-temp-buffer
|
||||||
(setq-local gnus-article-decode-hook
|
(setq-local gnus-article-decode-hook
|
||||||
'(article-decode-charset
|
'(article-decode-charset
|
||||||
|
@ -598,25 +599,24 @@ buffers; lets remap its faces so it uses the ones for mu4e."
|
||||||
article-decode-idna-rhs
|
article-decode-idna-rhs
|
||||||
article-treat-non-ascii
|
article-treat-non-ascii
|
||||||
article-de-base64-unreadable
|
article-de-base64-unreadable
|
||||||
article-de-quoted-unreadable
|
article-de-quoted-unreadable)
|
||||||
article-wash-html)
|
|
||||||
gnus-original-article-buffer (current-buffer))
|
gnus-original-article-buffer (current-buffer))
|
||||||
(insert-file-contents-literally
|
(insert-file-contents-literally
|
||||||
(mu4e-message-readable-path msg) nil nil nil t)
|
(mu4e-message-readable-path msg) nil nil nil t)
|
||||||
|
(mu4e--delimit-headers)
|
||||||
;; in rare (broken) case, if a message-id is missing
|
;; in rare (broken) case, if a message-id is missing
|
||||||
;; use the generated one from mu.
|
;; use the generated one from mu.
|
||||||
(unless (message-fetch-field "Message-Id")
|
(unless (message-fetch-field "Message-Id")
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(insert (format "Message-Id: <%s>\n" (plist-get msg :message-id))))
|
(insert (format "Message-Id: <%s>\n" (plist-get msg :message-id))))
|
||||||
(mm-enable-multibyte)
|
|
||||||
(ignore-errors (run-hooks 'gnus-article-decode-hook))
|
(ignore-errors (run-hooks 'gnus-article-decode-hook))
|
||||||
(buffer-substring-no-properties (point-min) (point-max))))
|
(buffer-substring-no-properties (point-min) (point-max))))
|
||||||
|
|
||||||
(defun mu4e--compose-cite (orig)
|
(defun mu4e--compose-cite (msg)
|
||||||
"Return a cited version of the ORIG message (a string).
|
"Return a cited version of the ORIG message (a string).
|
||||||
This function uses `message-cite-function', and its settings apply."
|
This function uses `message-cite-function', and its settings apply."
|
||||||
(with-temp-buffer
|
(with-temp-buffer
|
||||||
(insert orig)
|
(insert (mu4e-view-message-text msg))
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(push-mark (point-max))
|
(push-mark (point-max))
|
||||||
(let ((message-signature-separator "^-- *$")
|
(let ((message-signature-separator "^-- *$")
|
||||||
|
@ -695,7 +695,7 @@ PARENT is the \"parent\" message; nil
|
||||||
;; temporarily override that.
|
;; temporarily override that.
|
||||||
(advice-add 'message-pop-to-buffer
|
(advice-add 'message-pop-to-buffer
|
||||||
:override #'mu4e--fake-pop-to-buffer)
|
:override #'mu4e--fake-pop-to-buffer)
|
||||||
(funcall compose-func parent orig)
|
(funcall compose-func parent)
|
||||||
;; explicitly add the right headers
|
;; explicitly add the right headers
|
||||||
(message-generate-headers (mu4e--headers compose-type))
|
(message-generate-headers (mu4e--headers compose-type))
|
||||||
(advice-remove 'message-pop-to-buffer #'mu4e--fake-pop-to-buffer)
|
(advice-remove 'message-pop-to-buffer #'mu4e--fake-pop-to-buffer)
|
||||||
|
@ -778,7 +778,7 @@ of message."
|
||||||
"Compose a new message."
|
"Compose a new message."
|
||||||
(interactive)
|
(interactive)
|
||||||
(mu4e--compose-setup
|
(mu4e--compose-setup
|
||||||
'new (lambda (_parent _orig) (message-mail))))
|
'new (lambda (_parent) (message-mail))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun mu4e-compose-reply (&optional wide)
|
(defun mu4e-compose-reply (&optional wide)
|
||||||
|
@ -786,10 +786,11 @@ of message."
|
||||||
(interactive)
|
(interactive)
|
||||||
(mu4e--compose-setup
|
(mu4e--compose-setup
|
||||||
'reply
|
'reply
|
||||||
(lambda (_parent orig)
|
(lambda (parent)
|
||||||
|
(mu4e--decoded-message parent)
|
||||||
(message-reply nil wide)
|
(message-reply nil wide)
|
||||||
(message-goto-body)
|
(message-goto-body)
|
||||||
(insert (mu4e--compose-cite orig)))))
|
(insert (mu4e--compose-cite parent)))))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun mu4e-compose-wide-reply ()
|
(defun mu4e-compose-wide-reply ()
|
||||||
|
@ -803,10 +804,12 @@ of message."
|
||||||
(interactive)
|
(interactive)
|
||||||
(mu4e--compose-setup
|
(mu4e--compose-setup
|
||||||
'forward
|
'forward
|
||||||
(lambda (_parent _orig)
|
(lambda (parent)
|
||||||
(let ((message-make-forward-subject-function
|
(let ((message-make-forward-subject-function
|
||||||
#'message-forward-subject-fwd)
|
#'message-forward-subject-fwd)
|
||||||
(cur (current-buffer)))
|
(cur (current-buffer)))
|
||||||
|
(insert-file-contents-literally
|
||||||
|
(mu4e-message-readable-path parent) nil nil nil t)
|
||||||
(message-mail nil (message-make-forward-subject) nil nil nil)
|
(message-mail nil (message-make-forward-subject) nil nil nil)
|
||||||
(message-forward-make-body cur)))))
|
(message-forward-make-body cur)))))
|
||||||
|
|
||||||
|
@ -819,7 +822,7 @@ of message."
|
||||||
(mu4e-warn "Cannot edit non-draft messages"))
|
(mu4e-warn "Cannot edit non-draft messages"))
|
||||||
(mu4e--compose-setup
|
(mu4e--compose-setup
|
||||||
'edit
|
'edit
|
||||||
(lambda (parent _orig)
|
(lambda (parent)
|
||||||
(find-file (plist-get parent :path))
|
(find-file (plist-get parent :path))
|
||||||
(mu4e--delimit-headers)))))
|
(mu4e--delimit-headers)))))
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue