diff options
author | Richard M. Stallman <rms@gnu.org> | 2014-01-02 17:30:32 -0500 |
---|---|---|
committer | Richard M. Stallman <rms@gnu.org> | 2014-01-02 17:30:32 -0500 |
commit | a574edbec9c9de37d04fffcace178e873bd41245 (patch) | |
tree | 630f7c00bc7d83028ac4b7a7b1eec3acbb2063eb /lisp/mail/rmail.el | |
parent | b66b98fe412a97008778b34fa76ada7d1609631c (diff) | |
download | emacs-a574edbec9c9de37d04fffcace178e873bd41245.tar.gz |
Minor rmail fixes.
* mail/rmail.el (rmail-get-coding-function): Variable.
(rmail-get-coding-system): Use it.
* mail/rmail.el (rmail-make-in-reply-to-field):
Add parens in message-id.
* mail/rmailmm.el (rmail-mime-message-p): Moved to rmail.el.
* mail/rmail.el (rmail-mime-message-p): Moved from rmailmm.el.
(rmail-epa-decrypt): Turn off mime processing.
Diffstat (limited to 'lisp/mail/rmail.el')
-rw-r--r-- | lisp/mail/rmail.el | 44 |
1 files changed, 28 insertions, 16 deletions
diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index 9dea204e532..0f02a668402 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -104,6 +104,11 @@ its character representation and its display representation.") "Non-nil if message has been processed by `rmail-show-mime-function'.") (put 'rmail-mime-decoded 'permanent-local t) ; for rmail-edit +(defsubst rmail-mime-message-p () + "Non-nil if and only if the current message is a MIME." + (or (get-text-property (point) 'rmail-mime-entity) + (get-text-property (point-min) 'rmail-mime-entity))) + (defgroup rmail nil "Mail reader for Emacs." :group 'mail) @@ -686,6 +691,12 @@ Element N specifies the summary line for message N+1.") This is set to nil by default.") +(defcustom rmail-get-coding-function nil + "Function of no args to try to determine coding system for a message." + :type 'function + :group 'rmail + :version "24.4") + (defcustom rmail-enable-mime t "If non-nil, RMAIL automatically displays decoded MIME messages. For this to work, the feature specified by `rmail-mime-feature' must @@ -1029,9 +1040,10 @@ This function also reinitializes local variables used by Rmail." The buffer is expected to be narrowed to just the header of the message." (save-excursion (goto-char (point-min)) - (if (re-search-forward rmail-mime-charset-pattern nil t) - (coding-system-from-name (match-string 1)) - 'undecided))) + (or (funcall rmail-get-coding-function) + (if (re-search-forward rmail-mime-charset-pattern nil t) + (coding-system-from-name (match-string 1)) + 'undecided)))) ;;; Set up Rmail mode keymaps @@ -3863,16 +3875,18 @@ which is an element of rmail-msgref-vector." message-id)) ;; missing From, or Message-ID is sufficiently informative message-id - (concat message-id " (" tem ")")) + (concat message-id " (" tem ")")) + ;; Message has no Message-ID field. ;; Copy TEM, discarding text properties. (setq tem (copy-sequence tem)) (set-text-properties 0 (length tem) nil tem) (setq tem (copy-sequence tem)) ;; Use prin1 to fake RFC822 quoting (let ((field (prin1-to-string tem))) + ;; Wrap it in parens to make it a comment according to RFC822 (if date - (concat field "'s message of " date) - field))))) + (concat "(" field "'s message of " date ")") + (concat "(" field ")")))))) ((let* ((foo "[^][\000-\037()<>@,;:\\\" ]+") (bar "[^][\000-\037()<>@,;:\\\"]+")) ;; These strings both match all non-ASCII characters. @@ -3898,7 +3912,8 @@ which is an element of rmail-msgref-vector." (if message-id ;; "<AA259@bar.edu> (message from Unix Loser on 1-Apr-89)" (concat message-id " (" field ")") - field)))) + ;; Wrap in parens to make it a comment, for RFC822. + (concat "(" field ")"))))) (t ;; If we can't kludge it simply, do it correctly (let ((mail-use-rfc822 t)) @@ -4483,7 +4498,7 @@ encoded string (and the same mask) will decode the string." ;; There doesn't really seem to be an appropriate menu. ;; Eg the edit command is not in a menu either. (defun rmail-epa-decrypt () - "Decrypt OpenPGP armors in current message." + "Decrypt GnuPG or OpenPGP armors in current message." (interactive) ;; Save the current buffer here for cleanliness, in case we @@ -4493,14 +4508,10 @@ encoded string (and the same mask) will decode the string." (let (decrypts) (goto-char (point-min)) - ;; In case the encrypted data is inside a mime attachment, - ;; show it. This is a kludge; to be clean, it should not - ;; modify the buffer, but I don't see how to do that. - (when (search-forward "octet-stream" nil t) - (beginning-of-line) - (forward-button 1) - (if (looking-at "Show") - (rmail-mime-toggle-hidden))) + ;; Turn off mime processing. + (when (and (rmail-mime-message-p) + (not (get-text-property (point-min) 'rmail-mime-hidden))) + (rmail-mime)) ;; Now find all armored messages in the buffer ;; and decrypt them one by one. @@ -4560,6 +4571,7 @@ encoded string (and the same mask) will decode the string." (when armor-end (delete-region armor-start armor-end) (insert-buffer-substring from-buffer (nth 0 d) (nth 1 d))))))))))))) + ;;;; Desktop support |