From a574edbec9c9de37d04fffcace178e873bd41245 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Thu, 2 Jan 2014 17:30:32 -0500 Subject: [PATCH] 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. --- lisp/ChangeLog | 12 ++++++++++++ lisp/mail/rmail.el | 44 ++++++++++++++++++++++++++++---------------- lisp/mail/rmailmm.el | 5 ----- 3 files changed, 40 insertions(+), 21 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 32fa519242d..bea33b8dd17 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,15 @@ +2014-01-02 Richard Stallman + + * 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. + + * mail/rmail.el (rmail-make-in-reply-to-field): + Add parens in message-id. + + * mail/rmail.el (rmail-get-coding-function): Variable. + (rmail-get-coding-system): Use it. + 2014-01-02 Vincent Belaïche * ses.el (ses-initial-global-parameters-re): New defconst, a 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 ;; " (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 diff --git a/lisp/mail/rmailmm.el b/lisp/mail/rmailmm.el index c9b9dc28f72..5ea85848e5a 100644 --- a/lisp/mail/rmailmm.el +++ b/lisp/mail/rmailmm.el @@ -230,11 +230,6 @@ TRUNCATED is non-nil if the text of this entity was truncated." (defsubst rmail-mime-entity-set-truncated (entity truncated) (aset entity 9 truncated)) -(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))) - ;;; Buttons (defun rmail-mime-save (button) -- 2.39.2