Subject: Re: [PATCH] 'message-kill-buffer': fix backup delete question

From: Sven Willner <[email-masked]>
Date: Thu, 19 Jul 2018 13:54:58 +0200

proper patch without the whitespace changes.
very sorry.

>From 754d5c02f6b8c47c59fdd88e3c71f1a74761591a Mon Sep 17 00:00:00 2001
From: Sven Willner <[email-masked]>
Date: Thu, 19 Jul 2018 13:20:26 +0200
Subject: [PATCH] 'message-kill-buffer': fix backup delete question

Before 'message-kill-buffer' would ask to delete backup file if draft has been
saved regardless if a backup file has actually been created. Now only ask if
a backup file exists.

Copyright-paperwork-exempt: yes
---
 etc/NEWS             |  3 +++
 lisp/gnus/message.el | 26 +++++++++++++-------------
 2 files changed, 16 insertions(+), 13 deletions(-)

diff --git a/etc/NEWS b/etc/NEWS
index f30ab69823..55997b1bf2 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -562,6 +562,9 @@ GnuTLS manual) is recommended instead.
 
 ** Message
 
+---
+*** 'message-kill-buffer' asks to delete backup file only if one actually exists
+
 +++
 *** Messages can now be systematically encrypted
 when the PGP keyring contains a public key for every recipient.  To
diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
index dde9c28656..b6f5125f71 100644
--- a/lisp/gnus/message.el
+++ b/lisp/gnus/message.el
@@ -4085,24 +4085,23 @@ Instead, just auto-save the buffer and then bury it."
 	  (modified (buffer-modified-p)))
       (setq buffer-file-name nil)
       (kill-buffer (current-buffer))
-      (when (and (or (and auto-save-file-name
-			  (file-exists-p auto-save-file-name))
-		     (and file-name
-			  (file-exists-p file-name)))
-		 (progn
-		   ;; If the message buffer has lived in a dedicated window,
-		   ;; `kill-buffer' has killed the frame.  Thus the
-		   ;; `yes-or-no-p' may show up in a lowered frame.  Make sure
-		   ;; that the user can see the question by raising the
-		   ;; current frame:
-		   (raise-frame)
-		   (yes-or-no-p (format "Remove the backup file%s? "
-					(if modified " too" "")))))
 	(ignore-errors
 	  (delete-file auto-save-file-name))
 	(let ((message-draft-article draft-article))
 	  (message-disassociate-draft)))
+      (when (and (and auto-save-file-name
+                 (file-exists-p auto-save-file-name))
+            (and file-name
+                 (file-exists-p file-name))
+            (progn
+              ;; If the message buffer has lived in a dedicated window,
+              ;; `kill-buffer' has killed the frame.  Thus the
+              ;; `yes-or-no-p' may show up in a lowered frame.  Make sure
+              ;; that the user can see the question by raising the
+              ;; current frame:
+              (raise-frame)
+              (yes-or-no-p (format "Remove the backup file%s? "
+                      (if modified " too" "")))))
       (message-do-actions actions))))
 
 (defun message-bury (buffer)
--
2.18.0

Sven Willner <[email-masked]> writes:

> Before 'message-kill-buffer' would ask to delete backup file if 
> draft has been
> saved regardless if a backup file has actually been created. Now 
> only ask if
> a backup file exists.
>
> Copyright-paperwork-exempt: yes
> ---
>  etc/NEWS | 5 +-
>  lisp/gnus/message.el | 6174 
>  +++++++++++++++++++++---------------------
>  2 files changed, 3091 insertions(+), 3088 deletions(-)
>
> diff --git a/etc/NEWS b/etc/NEWS
> index f30ab69823..ca4efcb9b2 100644
> --- a/etc/NEWS
> +++ b/etc/NEWS
> @@ -562,6 +562,9 @@ GnuTLS manual) is recommended instead.
>  
>  ** Message
>
> +---
> +*** 'message-kill-buffer' asks to delete backup file only if 
>      one actually exists
> +
>  +++
>  *** Messages can now be systematically encrypted
>  when the PGP keyring contains a public key for every recipient. 
>  To
> @@ -947,5 +950,5 @@ along with GNU Emacs. If not, see 
> <https://www.gnu.org/licenses/>.
>  Local variables:
>  coding: utf-8
>  mode: outline
> -paragraph-separate: "[ ]*$"
> +paragraph-separate: "[ ]*$"
>  end:
> diff --git a/lisp/gnus/message.el b/lisp/gnus/message.el
> index dde9c28656..aff92aed27 100644
> --- a/lisp/gnus/message.el
> +++ b/lisp/gnus/message.el
> @@ -57,7 +57,7 @@
>  (defvar rmail-enable-mime-composing)
>
>  (defgroup message '((user-mail-address custom-variable)
> - (user-full-name custom-variable))
> + (user-full-name custom-variable))
>    "Mail and news message composing."
>    :link '(custom-manual "(message)Top")
>    :group 'mail
> @@ -132,7 +132,7 @@ This function will be called with the name 
> of the file to store the
>  article in. The default function is `message-output' which 
>  saves in Unix
>  mailbox format."
>    :type '(radio (function-item message-output)
> - (function :tag "Other"))
> + (function :tag "Other"))
>    :group 'message-sending)
>
>  (defcustom message-fcc-externalize-attachments nil
> @@ -160,19 +160,19 @@ If this variable is nil, no such courtesy 
> message will be added."
>    "Specifies how \"From\" headers look.
>
>  If nil, they contain just the return address like:
> - [email-masked]
> + [email-masked]
>  If `parens', they look like:
> - [email-masked] (Elvis Parsley)
> + [email-masked] (Elvis Parsley)
>  If `angles', they look like:
> - Elvis Parsley <[email-masked]>
> + Elvis Parsley <[email-masked]>
>
>  Otherwise, most addresses look like `angles', but they look 
>  like
>  `parens' if `angles' would need quoting and `parens' would 
>  not."
>    :version "27.1"
>    :type '(choice (const :tag "simple" nil)
> - (const parens)
> - (const angles)
> - (const default))
> + (const parens)
> + (const angles)
> + (const default))
>    :group 'message-headers)
>  (make-obsolete-variable
>   'message-from-style
> @@ -205,7 +205,7 @@ and `valid-newsgroups'."
>    :type '(repeat sexp)) ; Fixme: improve this
>
>  (defcustom message-required-headers '((optional . References)
> - From)
> + From)
>    "Headers to be generated or prompted for when sending a 
>    message.
>  Also see `message-required-news-headers' and
>  `message-required-mail-headers'."
> @@ -225,8 +225,8 @@ Also see `message-required-news-headers' and
>
>  (defcustom message-required-news-headers
>    '(From Newsgroups Subject Date Message-ID
> - (optional . Organization)
> - (optional . User-Agent))
> + (optional . Organization)
> + (optional . User-Agent))
>    "Headers to be generated or prompted for when posting an 
>    article.
>  RFC977 and RFC1036 require From, Date, Newsgroups, Subject,
>  Message-ID. Organization, Lines, In-Reply-To, Expires, and
> @@ -239,7 +239,7 @@ header, remove it from this list."
>
>  (defcustom message-required-mail-headers
>    '(From Subject Date (optional . In-Reply-To) Message-ID
> - (optional . User-Agent))
> + (optional . User-Agent))
>    "Headers to be generated or prompted for when mailing a 
>    message.
>  It is recommended that From, Date, To, Subject and Message-ID 
>  be
>  included. Organization and User-Agent are optional."
> @@ -270,11 +270,11 @@ This is a list of regexps and regexp 
> matches."
>    :group 'message-headers
>    :link '(custom-manual "(message)Message Headers")
>    :type '(repeat :value-to-internal (lambda (widget value)
> - (custom-split-regexp-maybe value))
> - :match (lambda (widget value)
> - (or (stringp value)
> - (widget-editable-list-match widget value)))
> - regexp))
> + (custom-split-regexp-maybe value))
> + :match (lambda (widget value)
> + (or (stringp value)
> + (widget-editable-list-match widget value)))
> + regexp))
>
>  (defcustom message-ignored-mail-headers
>    "^\\([GF]cc\\|Resent-Fcc\\|Xref\\|X-Draft-From\\|X-Gnus-Agent-Meta-Information\\):"
> @@ -291,11 +291,11 @@ any confusion."
>    :group 'message-interface
>    :link '(custom-manual "(message)Superseding")
>    :type '(repeat :value-to-internal (lambda (widget value)
> - (custom-split-regexp-maybe value))
> - :match (lambda (widget value)
> - (or (stringp value)
> - (widget-editable-list-match widget value)))
> - regexp))
> + (custom-split-regexp-maybe value))
> + :match (lambda (widget value)
> + (or (stringp value)
> + (widget-editable-list-match widget value)))
> + regexp))
>
>  (defcustom message-subject-re-regexp
>    "^[ \t]*\\([Rr][Ee]\\(\\[[0-9]*\\]\\)* ?:[ \t]*\\)*[ \t]*"
> @@ -316,8 +316,8 @@ old subject. In this case, 
> `message-subject-trailing-was-regexp' is
>  used."
>    :version "24.1"
>    :type '(choice (const :tag "never" nil)
> - (const :tag "always strip" t)
> - (const ask))
> + (const :tag "always strip" t)
> + (const ask))
>    :link '(custom-manual "(message)Message Headers")
>    :group 'message-various)
>
> @@ -432,8 +432,8 @@ when `message-cite-function' is
>  are \"^-- $\" (strict) and \"^-- *$\" (loose; allow missing
>  whitespace)."
>    :type '(choice (const :tag "strict" "^-- $")
> - (const :tag "loose" "^-- *$")
> - regexp)
> + (const :tag "loose" "^-- *$")
> + regexp)
>    :version "22.3" ;; Gnus 5.10.12 (changed default)
>    :link '(custom-manual "(message)Various Message Variables")
>    :group 'message-various)
> @@ -491,11 +491,11 @@ function
>    :group 'message-buffers
>    :link '(custom-manual "(message)Message Buffers")
>    :type '(choice (const nil)
> - (sexp :tag "unique" :format "unique\n" :value unique
> - :match (lambda (widget value) (memq value '(unique t))))
> - (const unsent)
> - (const standard)
> - (function :format "\n %{%t%}: %v")))
> + (sexp :tag "unique" :format "unique\n" :value unique
> + :match (lambda (widget value) (memq value '(unique t))))
> + (const unsent)
> + (const standard)
> + (function :format "\n %{%t%}: %v")))
>
>  (defcustom message-kill-buffer-on-exit nil
>    "Non-nil means that the message buffer will be killed after 
>    sending a message."
> @@ -516,15 +516,15 @@ This is used by `message-kill-buffer'."
>  If t, use `message-user-organization-file'."
>    :group 'message-headers
>    :type '(choice string
> - (const :tag "consult file" t)))
> + (const :tag "consult file" t)))
>
>  (defcustom message-user-organization-file
>    (let (orgfile)
>      (dolist (f (list "/etc/organization"
> - "/etc/news/organization"
> - "/usr/lib/news/organization"))
> + "/etc/news/organization"
> + "/usr/lib/news/organization"))
>        (when (file-readable-p f)
> - (setq orgfile f)))
> + (setq orgfile f)))
>      orgfile)
>    "Local news organization file."
>    :type '(choice (const nil) file)
> @@ -548,9 +548,9 @@ The provided functions are:
>    :group 'message-forwarding
>    :link '(custom-manual "(message)Forwarding")
>    :type '(radio (function-item 
>    message-forward-subject-author-subject)
> - (function-item message-forward-subject-fwd)
> - (function-item message-forward-subject-name-subject)
> - (repeat :tag "List of functions" function)))
> + (function-item message-forward-subject-fwd)
> + (function-item message-forward-subject-name-subject)
> + (repeat :tag "List of functions" function)))
>
>  (defcustom message-forward-as-mime nil
>    "Non-nil means forward messages as an inline/rfc822 MIME 
>    section.
> @@ -576,8 +576,8 @@ digital signature."
>    :version "21.1"
>    :group 'message-forwarding
>    :type '(choice (const :tag "use MML" t)
> - (const :tag "don't use MML " nil)
> - (const :tag "use MML when appropriate" best)))
> + (const :tag "don't use MML " nil)
> + (const :tag "use MML when appropriate" best)))
>
>  (defcustom message-forward-before-signature t
>    "Non-nil means put forwarded message before signature, else 
>    after."
> @@ -604,11 +604,11 @@ Done before generating the new subject of 
> a forward."
>    :group 'message-interface
>    :link '(custom-manual "(message)Resending")
>    :type '(repeat :value-to-internal (lambda (widget value)
> - (custom-split-regexp-maybe value))
> - :match (lambda (widget value)
> - (or (stringp value)
> - (widget-editable-list-match widget value)))
> - regexp))
> + (custom-split-regexp-maybe value))
> + :match (lambda (widget value)
> + (or (stringp value)
> + (widget-editable-list-match widget value)))
> + regexp))
>
>  (defcustom message-forward-ignored-headers 
>  "^Content-Transfer-Encoding:\\|^X-Gnus"
>    "All headers that match this regexp will be deleted when 
>    forwarding a message.
> @@ -619,11 +619,11 @@ This may also be a list of regexps."
>    :version "21.1"
>    :group 'message-forwarding
>    :type '(repeat :value-to-internal (lambda (widget value)
> - (custom-split-regexp-maybe value))
> - :match (lambda (widget value)
> - (or (stringp value)
> - (widget-editable-list-match widget value)))
> - regexp))
> + (custom-split-regexp-maybe value))
> + :match (lambda (widget value)
> + (or (stringp value)
> + (widget-editable-list-match widget value)))
> + regexp))
>
>  (defcustom message-forward-included-headers
>    '("^From:" "^Subject:" "^Date:")
> @@ -633,11 +633,11 @@ variable should be a regexp or a list of 
> regexps."
>    :version "27.1"
>    :group 'message-forwarding
>    :type '(repeat :value-to-internal (lambda (widget value)
> - (custom-split-regexp-maybe value))
> - :match (lambda (widget value)
> - (or (stringp value)
> - (widget-editable-list-match widget value)))
> - regexp))
> + (custom-split-regexp-maybe value))
> + :match (lambda (widget value)
> + (or (stringp value)
> + (widget-editable-list-match widget value)))
> + regexp))
>
>  (defcustom message-ignored-cited-headers "."
>    "Delete these headers from the messages you yank."
> @@ -652,11 +652,11 @@ variable should be a regexp or a list of 
> regexps."
>    :link '(custom-manual "(message)Insertion Variables")
>    :type 'regexp
>    :set (lambda (symbol value)
> - (prog1
> - (custom-set-default symbol value)
> - (if (boundp 'gnus-message-cite-prefix-regexp)
> - (setq gnus-message-cite-prefix-regexp
> - (concat "^\\(?:" value "\\)"))))))
> + (prog1
> + (custom-set-default symbol value)
> + (if (boundp 'gnus-message-cite-prefix-regexp)
> + (setq gnus-message-cite-prefix-regexp
> + (concat "^\\(?:" value "\\)"))))))
>
>  (defcustom message-cancel-message "I am canceling my own 
>  article.\n"
>    "Message to be inserted in the cancel message."
> @@ -667,26 +667,26 @@ variable should be a regexp or a list of 
> regexps."
>  (defun message-send-mail-function ()
>    "Return suitable value for the variable 
>    `message-send-mail-function'."
>    (cond ((and (require 'sendmail)
> - (boundp 'sendmail-program)
> - sendmail-program
> - (executable-find sendmail-program))
> - 'message-send-mail-with-sendmail)
> - ((and (locate-library "smtpmail")
> - (boundp 'smtpmail-default-smtp-server)
> - smtpmail-default-smtp-server)
> - 'message-smtpmail-send-it)
> - ((locate-library "mailclient")
> - 'message-send-mail-with-mailclient)
> - (t
> - (error "Don't know how to send mail. Please customize 
>  	 `message-send-mail-function'"))))
> + (boundp 'sendmail-program)
> + sendmail-program
> + (executable-find sendmail-program))
> + 'message-send-mail-with-sendmail)
> + ((and (locate-library "smtpmail")
> + (boundp 'smtpmail-default-smtp-server)
> + smtpmail-default-smtp-server)
> + 'message-smtpmail-send-it)
> + ((locate-library "mailclient")
> + 'message-send-mail-with-mailclient)
> + (t
> + (error "Don't know how to send mail. Please customize 
>       `message-send-mail-function'"))))
>
>  (defun message-default-send-mail-function ()
>    (cond ((eq send-mail-function 'smtpmail-send-it) 
>    'message-smtpmail-send-it)
> - ((eq send-mail-function 'feedmail-send-it) 'feedmail-send-it)
> - ((eq send-mail-function 'sendmail-query-once) 
>  	'sendmail-query-once)
> - ((eq send-mail-function 'mailclient-send-it)
> - 'message-send-mail-with-mailclient)
> - (t (message-send-mail-function))))
> + ((eq send-mail-function 'feedmail-send-it) 'feedmail-send-it)
> + ((eq send-mail-function 'sendmail-query-once) 
>      'sendmail-query-once)
> + ((eq send-mail-function 'mailclient-send-it)
> + 'message-send-mail-with-mailclient)
> + (t (message-send-mail-function))))
>
>  ;; Useful to set in site-init.el
>  (defcustom message-send-mail-function 
>  (message-default-send-mail-function)
> @@ -703,14 +703,14 @@ default is system dependent and determined 
> by the function
>
>  See also `send-mail-function'."
>    :type '(radio (function-item message-send-mail-with-sendmail)
> - (function-item message-send-mail-with-mh)
> - (function-item message-send-mail-with-qmail)
> - (function-item message-smtpmail-send-it)
> - (function-item smtpmail-send-it)
> - (function-item feedmail-send-it)
> - (function-item message-send-mail-with-mailclient
> - :tag "Use Mailclient package")
> - (function :tag "Other"))
> + (function-item message-send-mail-with-mh)
> + (function-item message-send-mail-with-qmail)
> + (function-item message-smtpmail-send-it)
> + (function-item smtpmail-send-it)
> + (function-item feedmail-send-it)
> + (function-item message-send-mail-with-mailclient
> + :tag "Use Mailclient package")
> + (function :tag "Other"))
>    :group 'message-sending
>    :version "23.2"
>    :initialize 'custom-initialize-default
> @@ -765,9 +765,9 @@ always query the user whether to use the 
> value. If it is the symbol
>    :group 'message-interface
>    :link '(custom-manual "(message)Followup")
>    :type '(choice (const :tag "ignore" nil)
> - (const :tag "use & query" t)
> - (const use)
> - (const ask)))
> + (const :tag "use & query" t)
> + (const use)
> + (const ask)))
>
>  (defcustom message-use-mail-followup-to 'use
>    "Specifies what to do with Mail-Followup-To header.
> @@ -778,8 +778,8 @@ always use the value."
>    :group 'message-interface
>    :link '(custom-manual "(message)Mailing Lists")
>    :type '(choice (const :tag "ignore" nil)
> - (const use)
> - (const ask)))
> + (const use)
> + (const ask)))
>
>  (defcustom message-subscribed-address-functions nil
>    "Specifies functions for determining list subscription.
> @@ -831,8 +831,8 @@ symbol `never', the posting is not allowed. 
> If it is the symbol
>    :group 'message-interface
>    :link '(custom-manual "(message)Message Headers")
>    :type '(choice (const always)
> - (const never)
> - (const ask)))
> + (const never)
> + (const ask)))
>
>  (defcustom message-sendmail-f-is-evil nil
>    "Non-nil means don't add \"-f username\" to the sendmail 
>    command line.
> @@ -849,8 +849,8 @@ If this is nil, use `user-mail-address'. If 
> it is the symbol
>  `header', use the From: header of the message."
>    :version "23.2"
>    :type '(choice (string :tag "From name")
> - (const :tag "Use From: header from message" header)
> - (const :tag "Use `user-mail-address'" nil))
> + (const :tag "Use From: header from message" header)
> + (const :tag "Use `user-mail-address'" nil))
>    :link '(custom-manual "(message)Mail Variables")
>    :group 'message-sending)
>
> @@ -880,18 +880,18 @@ might set this variable to (\"-f\" 
> \"[email-masked]\")."
>    :group 'message-sending
>    :link '(custom-manual "(message)Mail Variables")
>    :type '(choice (function)
> - (repeat string)))
> + (repeat string)))
>
>  (defvar gnus-post-method)
>  (defvar gnus-select-method)
>  (defcustom message-post-method
>    (cond ((and (boundp 'gnus-post-method)
> - (listp gnus-post-method)
> - gnus-post-method)
> - gnus-post-method)
> - ((boundp 'gnus-select-method)
> - gnus-select-method)
> - (t '(nnspool "")))
> + (listp gnus-post-method)
> + gnus-post-method)
> + gnus-post-method)
> + ((boundp 'gnus-select-method)
> + gnus-select-method)
> + (t '(nnspool "")))
>    "Method used to post news.
>  Note that when posting from inside Gnus, for instance, this
>  variable isn't used."
> @@ -913,8 +913,8 @@ will not have a visible effect for those 
> headers."
>    :group 'message-headers
>    :link '(custom-manual "(message)Message Headers")
>    :type '(choice (const :tag "None" nil)
> - (const :tag "All" t)
> - (repeat (sexp :tag "Header"))))
> + (const :tag "All" t)
> + (repeat (sexp :tag "Header"))))
>
>  (defcustom message-fill-column 72
>    "Column beyond which automatic line-wrapping should happen.
> @@ -923,7 +923,7 @@ auto-fill in message buffers."
>    :group 'message-various
>    ;; :link '(custom-manual "(message)Message Headers")
>    :type '(choice (const :tag "Don't turn on auto fill" nil)
> - (integer)))
> + (integer)))
>
>  (defcustom message-setup-hook nil
>    "Normal hook, run each time a new outgoing message is 
>    initialized.
> @@ -984,9 +984,9 @@ Note that Gnus provides a feature where the 
> reader can click on
>  people who read your message will have to change their Gnus
>  configuration. See the variable 
>  `gnus-cite-attribution-suffix'."
>    :type '(choice
> - (function-item :tag "plain" message-insert-citation-line)
> - (function-item :tag "formatted" 
>  	  message-insert-formatted-citation-line)
> - (function :tag "Other"))
> + (function-item :tag "plain" message-insert-citation-line)
> + (function-item :tag "formatted" 
>        message-insert-formatted-citation-line)
> + (function :tag "Other"))
>    :link '(custom-manual "(message)Insertion Variables")
>    :group 'message-insertion)
>
> @@ -1014,8 +1014,8 @@ so you should always check it yourself.
>  Please also read the note in the documentation of
>  `message-citation-line-function'."
>    :type '(choice (const :tag "Plain" "%f writes:")
> - (const :tag "Include date" "On %a, %b %d %Y, %n wrote:")
> - string)
> + (const :tag "Include date" "On %a, %b %d %Y, %n wrote:")
> + string)
>    :link '(custom-manual "(message)Insertion Variables")
>    :version "23.1" ;; No Gnus
>    :group 'message-insertion)
> @@ -1060,9 +1060,9 @@ Predefined functions include 
> `message-cite-original' and
>  `message-cite-original-without-signature'.
>  Note that these functions use `mail-citation-hook' if that is 
>  non-nil."
>    :type '(radio (function-item message-cite-original)
> - (function-item message-cite-original-without-signature)
> - (function-item sc-cite-original)
> - (function :tag "Other"))
> + (function-item message-cite-original-without-signature)
> + (function-item sc-cite-original)
> + (function :tag "Other"))
>    :link '(custom-manual "(message)Insertion Variables")
>    :version "22.3" ;; Gnus 5.10.12 (changed default)
>    :group 'message-insertion)
> @@ -1083,8 +1083,8 @@ If a function, the result from the 
> function will be used instead.
>  If a form, the result from the form will be used instead."
>    :version "23.2"
>    :type '(choice string (const :tag "Contents of signature 
>    file" t)
> - function
> - sexp)
> + function
> + sexp)
>    :risky t
>    :link '(custom-manual "(message)Insertion Variables")
>    :group 'message-insertion)
> @@ -1130,8 +1130,8 @@ e.g. using `gnus-posting-styles':
>    (eval (set (make-local-variable 
>    \\='message-cite-reply-position) \\='above))"
>    :version "24.1"
>    :type '(choice (const :tag "Reply inline" traditional)
> - (const :tag "Reply above" above)
> - (const :tag "Reply below" below))
> + (const :tag "Reply above" above)
> + (const :tag "Reply below" below))
>    :group 'message-insertion)
>
>  (defcustom message-cite-style nil
> @@ -1148,10 +1148,10 @@ use in `gnus-posting-styles', such as:
>    :version "24.1"
>    :group 'message-insertion
>    :type '(choice (const :tag "Do not override variables" :value 
>    nil)
> - (const :tag "MS Outlook" :value message-cite-style-outlook)
> - (const :tag "Mozilla Thunderbird" :value 
>  		 message-cite-style-thunderbird)
> - (const :tag "Gmail" :value message-cite-style-gmail)
> - (variable :tag "User-specified")))
> + (const :tag "MS Outlook" :value message-cite-style-outlook)
> + (const :tag "Mozilla Thunderbird" :value 
>           message-cite-style-thunderbird)
> + (const :tag "Gmail" :value message-cite-style-gmail)
> + (variable :tag "User-specified")))
>
>  (defconst message-cite-style-outlook
>    '((message-cite-function 'message-cite-original)
> @@ -1204,8 +1204,8 @@ If stringp, use this; if non-nil, use no 
> host name (user name only)."
>    :group 'message-headers
>    :link '(custom-manual "(message)News Headers")
>    :type '(choice (const :tag "nntp" nil)
> - (string :tag "name")
> - (sexp :tag "none" :format "%t" t)))
> + (string :tag "name")
> + (sexp :tag "none" :format "%t" t)))
>
>  ;; This can be the name of a buffer, or a cons cell (FUNCTION . 
>  ;; ARGS)
>  ;; for yanking the original buffer.
> @@ -1251,15 +1251,15 @@ called and its result is inserted."
>  (defcustom message-default-mail-headers
>    ;; Ease the transition from mail-mode to message-mode. See 
>    ;; bugs#4431, 5555.
>    (concat (if (and (boundp 'mail-default-reply-to)
> - (stringp mail-default-reply-to))
> - (format "Reply-To: %s\n" mail-default-reply-to))
> - (if (and (boundp 'mail-self-blind)
> - mail-self-blind)
> - (format "Bcc: %s\n" user-mail-address))
> - (if (and (boundp 'mail-archive-file-name)
> - (stringp mail-archive-file-name))
> - (format "Fcc: %s\n" mail-archive-file-name))
> - mail-default-headers)
> + (stringp mail-default-reply-to))
> + (format "Reply-To: %s\n" mail-default-reply-to))
> + (if (and (boundp 'mail-self-blind)
> + mail-self-blind)
> + (format "Bcc: %s\n" user-mail-address))
> + (if (and (boundp 'mail-archive-file-name)
> + (stringp mail-archive-file-name))
> + (format "Fcc: %s\n" mail-archive-file-name))
> + mail-default-headers)
>    "A string of header lines to be inserted in outgoing mails."
>    :version "23.2"
>    :group 'message-headers
> @@ -1278,9 +1278,9 @@ called and its result is inserted."
>  ;; options -t, and -v if not interactive.
>  (defcustom message-mailer-swallows-blank-line
>    (if (and (string-match "sparc-sun-sunos\\(\\'\\|[^5]\\)"
> - system-configuration)
> - (file-readable-p "/etc/sendmail.cf")
> - (with-temp-buffer
> + system-configuration)
> + (file-readable-p "/etc/sendmail.cf")
> + (with-temp-buffer
>               (insert-file-contents "/etc/sendmail.cf")
>               (goto-char (point-min))
>               (let ((case-fold-search nil))
> @@ -1329,8 +1329,8 @@ This can also be a list of values."
>    :group 'message
>    :link '(custom-manual "(message)Mail Aliases")
>    :type '(choice (const :tag "Use Mailabbrev" abbrev)
> - (const :tag "Use ecomplete" ecomplete)
> - (const :tag "No expansion" nil)))
> + (const :tag "Use ecomplete" ecomplete)
> + (const :tag "No expansion" nil)))
>
>  (defcustom message-self-insert-commands '(self-insert-command)
>    "List of `self-insert-command's used to trigger ecomplete.
> @@ -1353,7 +1353,7 @@ If nil, Message won't auto-save."
>    :type '(choice directory (const :tag "Don't auto-save" nil)))
>
>  (defcustom message-default-charset (and (not 
>  enable-multibyte-characters)
> - 'iso-8859-1)
> + 'iso-8859-1)
>    "Default charset used in non-MULE Emacsen.
>  If nil, you might be asked to input the charset."
>    :version "21.1"
> @@ -1374,8 +1374,8 @@ If a function email is passed as the 
> argument."
>    :group 'message
>    :link '(custom-manual "(message)Wide Reply")
>    :type '(choice (const :tag "Yourself" nil)
> - regexp
> - (repeat :tag "Regexp List" regexp)))
> + regexp
> + (repeat :tag "Regexp List" regexp)))
>
>  (defsubst message-dont-reply-to-names ()
>    (if (functionp message-dont-reply-to-names)
> @@ -1392,19 +1392,19 @@ candidates:
>  `quoted-text-only' Allow you to post quoted text only;
>  `multiple-copies' Allow you to post multiple copies;
>  `cancel-messages' Allow you to cancel or supersede messages 
>  from
> - your other email addresses;
> + your other email addresses;
>  `canlock-verify' Allow you to cancel messages without verifying 
>  canlock."
>    :group 'message
>    :type '(set (const empty-article) (const quoted-text-only)
> - (const multiple-copies) (const cancel-messages)
> - (const canlock-verify)))
> + (const multiple-copies) (const cancel-messages)
> + (const canlock-verify)))
>
>  (defsubst message-gnksa-enable-p (feature)
>    (or (not (listp message-shoot-gnksa-feet))
>        (memq feature message-shoot-gnksa-feet)))
>
>  (defcustom message-hidden-headers '("^References:" "^Face:" 
>  "^X-Face:"
> - "^X-Draft-From:")
> + "^X-Draft-From:")
>    "Regexp of headers to be hidden when composing new messages.
>  This can also be a list of regexps to match headers. Or a list
>  starting with `not' and followed by regexps."
> @@ -1412,14 +1412,14 @@ starting with `not' and followed by 
> regexps."
>    :group 'message
>    :link '(custom-manual "(message)Message Headers")
>    :type '(choice
> - :format "%{%t%}: %[Value Type%] %v"
> - (regexp :menu-tag "regexp" :format "regexp\n%t: %v")
> - (repeat :menu-tag "(regexp ...)" :format "(regexp ...)\n%v%i"
> - (regexp :format "%t: %v"))
> - (cons :menu-tag "(not regexp ...)" :format "(not regexp 
>  	  ...)\n%v"
> - (const not)
> - (repeat :format "%v%i"
> - (regexp :format "%t: %v")))))
> + :format "%{%t%}: %[Value Type%] %v"
> + (regexp :menu-tag "regexp" :format "regexp\n%t: %v")
> + (repeat :menu-tag "(regexp ...)" :format "(regexp ...)\n%v%i"
> + (regexp :format "%t: %v"))
> + (cons :menu-tag "(not regexp ...)" :format "(not regexp 
>        ...)\n%v"
> + (const not)
> + (repeat :format "%v%i"
> + (regexp :format "%t: %v")))))
>
>  (defcustom message-cite-articles-with-x-no-archive t
>    "If non-nil, cite text from articles that has X-No-Archive 
>    set."
> @@ -1577,39 +1577,39 @@ starting with `not' and followed by 
> regexps."
>    (let ((content "[ \t]*\\(.+\\(\n[ \t].*\\)*\\)\n?"))
>      `((message-match-to-eoh
>         (,(concat "^\\([Tt]o:\\)" content)
> - (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> - (1 'message-header-name)
> - (2 'message-header-to nil t))
> + (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> + (1 'message-header-name)
> + (2 'message-header-to nil t))
>         (,(concat "^\\(^[GBF]?[Cc][Cc]:\\|^[Rr]eply-[Tt]o:\\)" 
>         content)
> - (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> - (1 'message-header-name)
> - (2 'message-header-cc nil t))
> + (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> + (1 'message-header-name)
> + (2 'message-header-cc nil t))
>         (,(concat "^\\([Ss]ubject:\\)" content)
> - (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> - (1 'message-header-name)
> - (2 'message-header-subject nil t))
> + (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> + (1 'message-header-name)
> + (2 'message-header-subject nil t))
>         (,(concat "^\\([Nn]ewsgroups:\\|Followup-[Tt]o:\\)" 
>         content)
> - (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> - (1 'message-header-name)
> - (2 'message-header-newsgroups nil t))
> + (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> + (1 'message-header-name)
> + (2 'message-header-newsgroups nil t))
>         (,(concat "^\\(X-[A-Za-z0-9-]+:\\|In-Reply-To:\\)" 
>         content)
> - (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> - (1 'message-header-name)
> - (2 'message-header-xheader))
> + (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> + (1 'message-header-name)
> + (2 'message-header-xheader))
>         (,(concat "^\\([A-Z][^: \n\t]+:\\)" content)
> - (progn (goto-char (match-beginning 0)) (match-end 0)) nil
> + (progn (goto-char (match-beginning 0)) (match-end 0)) nil
>          (1 'message-header-name)
>          (2 'message-header-other nil t)))
>        ,@(if (and mail-header-separator
> - (not (equal mail-header-separator "")))
> - `((,(concat "^\\(" (regexp-quote mail-header-separator) 
>  	    "\\)$")
> - 1 'message-separator))
> - nil)
> + (not (equal mail-header-separator "")))
> + `((,(concat "^\\(" (regexp-quote mail-header-separator) 
>          "\\)$")
> + 1 'message-separator))
> + nil)
>        ((lambda (limit)
> - (re-search-forward (concat "^\\("
> - message-cite-prefix-regexp
> - "\\).*")
> - limit t))
> + (re-search-forward (concat "^\\("
> + message-cite-prefix-regexp
> + "\\).*")
> + limit t))
>         (0 'message-cited-text))
>        ("<#/?\\(multipart\\|part\\|external\\|mml\\|secure\\)[^>]*>"
>         (0 'message-mml))))
> @@ -1619,8 +1619,8 @@ starting with `not' and followed by 
> regexps."
>    '((bold . message-bold-region)
>      (underline . underline-region)
>      (default . (lambda (b e)
> - (message-unbold-region b e)
> - (ununderline-region b e))))
> + (message-unbold-region b e)
> + (ununderline-region b e))))
>    "Alist of mail and news faces for facemenu.
>  The cdr of each entry is a function for applying the face to a 
>  region.")
>
> @@ -1667,7 +1667,7 @@ should be sent in several parts. If it is 
> nil, the size is unlimited."
>    :group 'message-buffers
>    :link '(custom-manual "(message)Mail Variables")
>    :type '(choice (const :tag "unlimited" nil)
> - (integer 1000000)))
> + (integer 1000000)))
>
>  (defcustom message-alternative-emails nil
>    "Regexp or predicate function matching alternative email 
>    addresses.
> @@ -1682,7 +1682,7 @@ off `message-setup-hook'."
>    :group 'message-headers
>    :link '(custom-manual "(message)Message Headers")
>    :type '(choice (const :tag "Always use primary" nil)
> - regexp
> + regexp
>                   function))
>
>  (defcustom message-hierarchical-addresses nil
> @@ -1705,18 +1705,18 @@ Except if it is nil, use Gnus native 
> MUA; if it is t, use
>  `mail-user-agent'."
>    :version "22.1"
>    :type '(radio (const :tag "Gnus native"
> - :format "%t\n"
> - nil)
> - (const :tag "`mail-user-agent'"
> - :format "%t\n"
> - t)
> - (function-item :tag "Default Emacs mail"
> - :format "%t\n"
> - sendmail-user-agent)
> - (function-item :tag "Emacs interface to MH"
> - :format "%t\n"
> - mh-e-user-agent)
> - (function :tag "Other"))
> + :format "%t\n"
> + nil)
> + (const :tag "`mail-user-agent'"
> + :format "%t\n"
> + t)
> + (function-item :tag "Default Emacs mail"
> + :format "%t\n"
> + sendmail-user-agent)
> + (function-item :tag "Emacs interface to MH"
> + :format "%t\n"
> + mh-e-user-agent)
> + (function :tag "Other"))
>    :version "21.1"
>    :group 'message)
>
> @@ -1738,7 +1738,7 @@ no, only reply back to the author."
>    :group 'message-headers
>    :link '(custom-manual "(message)News Headers")
>    :type '(radio (const :format "%v " nil)
> - (string :format "FQDN: %v")))
> + (string :format "FQDN: %v")))
>
>  (defcustom message-use-idna t
>    "Whether to encode non-ASCII in domain names into ASCII 
>    according to IDNA."
> @@ -1746,8 +1746,8 @@ no, only reply back to the author."
>    :group 'message-headers
>    :link '(custom-manual "(message)IDNA")
>    :type '(choice (const :tag "Ask" ask)
> - (const :tag "Never" nil)
> - (const :tag "Always" t)))
> + (const :tag "Never" nil)
> + (const :tag "Always" t)))
>
>  (defcustom message-generate-hashcash (if (executable-find 
>  "hashcash") 'opportunistic)
>    "Whether to generate X-Hashcash: headers.
> @@ -1760,8 +1760,8 @@ You must have the \"hashcash\" binary 
> installed, see `hashcash-path'."
>    :group 'message-headers
>    :link '(custom-manual "(message)Mail Headers")
>    :type '(choice (const :tag "Always" t)
> - (const :tag "Never" nil)
> - (const :tag "Opportunistic" opportunistic)))
> + (const :tag "Never" nil)
> + (const :tag "Opportunistic" opportunistic)))
>
>  ;;; Internal variables.
>
> @@ -1784,10 +1784,10 @@ You must have the \"hashcash\" binary 
> installed, see `hashcash-path'."
>  ;;; of rmail.el's rmail-unix-mail-delimiter.
>  (defvar message-unix-mail-delimiter
>    (let ((time-zone-regexp
> - (concat "\\([A-Z]?[A-Z]?[A-Z][A-Z]\\( DST\\)?"
> - "\\|[-+]?[0-9][0-9][0-9][0-9]"
> - "\\|"
> - "\\) *")))
> + (concat "\\([A-Z]?[A-Z]?[A-Z][A-Z]\\( DST\\)?"
> + "\\|[-+]?[0-9][0-9][0-9][0-9]"
> + "\\|"
> + "\\) *")))
>      (concat
>       "From "
>
> @@ -1836,14 +1836,14 @@ You must have the \"hashcash\" binary 
> installed, see `hashcash-path'."
>
>  (defvar message-unsent-separator
>    (concat "^ *---+ +Unsent message follows +---+ *$\\|"
> - "^ *---+ +Returned message +---+ *$\\|"
> - "^Start of returned message$\\|"
> - "^ *---+ +Original message +---+ *$\\|"
> - "^ *--+ +begin message +--+ *$\\|"
> - "^ *---+ +Original message follows +---+ *$\\|"
> - "^ *---+ +Undelivered message follows +---+ *$\\|"
> - "^------ This is a copy of the message, including all the 
>  	  headers. ------ *$\\|"
> - "^|? *---+ +Message text follows: +---+ *|?$")
> + "^ *---+ +Returned message +---+ *$\\|"
> + "^Start of returned message$\\|"
> + "^ *---+ +Original message +---+ *$\\|"
> + "^ *--+ +begin message +--+ *$\\|"
> + "^ *---+ +Original message follows +---+ *$\\|"
> + "^ *---+ +Undelivered message follows +---+ *$\\|"
> + "^------ This is a copy of the message, including all the 
>        headers. ------ *$\\|"
> + "^|? *---+ +Message text follows: +---+ *|?$")
>    "A regexp that matches the separator before the text of a 
>    failed message.")
>
>  (defvar message-field-fillers
> @@ -1919,7 +1919,7 @@ You must have the \"hashcash\" binary 
> installed, see `hashcash-path'."
>  (defmacro message-delete-line (&optional n)
>    "Delete the current line (and the next N lines)."
>    `(delete-region (progn (beginning-of-line) (point))
> - (progn (forward-line ,(or n 1)) (point))))
> + (progn (forward-line ,(or n 1)) (point))))
>
>  (defun message-mark-active-p ()
>    "Non-nil means the mark and region are currently active in 
>    this buffer."
> @@ -1928,11 +1928,11 @@ You must have the \"hashcash\" binary 
> installed, see `hashcash-path'."
>  (defun message-unquote-tokens (elems)
>    "Remove double quotes (\") from strings in list ELEMS."
>    (mapcar (lambda (item)
> - (while (string-match "^\\(.*\\)\"\\(.*\\)$" item)
> - (setq item (concat (match-string 1 item)
> - (match-string 2 item))))
> - item)
> - elems))
> + (while (string-match "^\\(.*\\)\"\\(.*\\)$" item)
> + (setq item (concat (match-string 1 item)
> + (match-string 2 item))))
> + item)
> + elems))
>
>  (defun message-tokenize-header (header &optional separator)
>    "Split HEADER into a list of header elements.
> @@ -1941,41 +1941,41 @@ is used by default."
>    (if (not header)
>        nil
>      (let ((regexp (format "[%s]+" (or separator ",")))
> - (first t)
> - beg quoted elems paren)
> + (first t)
> + beg quoted elems paren)
>        (with-temp-buffer
> - (mm-enable-multibyte)
> - (setq beg (point-min))
> - (insert header)
> - (goto-char (point-min))
> - (while (not (eobp))
> - (if first
> - (setq first nil)
> - (forward-char 1))
> - (cond ((and (> (point) beg)
> - (or (eobp)
> - (and (looking-at regexp)
> - (not quoted)
> - (not paren))))
> - (push (buffer-substring beg (point)) elems)
> - (setq beg (match-end 0)))
> - ((eq (char-after) ?\")
> - (setq quoted (not quoted)))
> - ((and (eq (char-after) ?\()
> - (not quoted))
> - (setq paren t))
> - ((and (eq (char-after) ?\))
> - (not quoted))
> - (setq paren nil))))
> - (nreverse elems)))))
> + (mm-enable-multibyte)
> + (setq beg (point-min))
> + (insert header)
> + (goto-char (point-min))
> + (while (not (eobp))
> + (if first
> + (setq first nil)
> + (forward-char 1))
> + (cond ((and (> (point) beg)
> + (or (eobp)
> + (and (looking-at regexp)
> + (not quoted)
> + (not paren))))
> + (push (buffer-substring beg (point)) elems)
> + (setq beg (match-end 0)))
> + ((eq (char-after) ?\")
> + (setq quoted (not quoted)))
> + ((and (eq (char-after) ?\()
> + (not quoted))
> + (setq paren t))
> + ((and (eq (char-after) ?\))
> + (not quoted))
> + (setq paren nil))))
> + (nreverse elems)))))
>
>  (autoload 'nnheader-insert-file-contents "nnheader")
>
>  (defun message-mail-file-mbox-p (file)
>    "Say whether FILE looks like a Unix mbox file."
>    (when (and (file-exists-p file)
> - (file-readable-p file)
> - (file-regular-p file))
> + (file-readable-p file)
> + (file-regular-p file))
>      (with-temp-buffer
>        (nnheader-insert-file-contents file)
>        (goto-char (point-min))
> @@ -1986,10 +1986,10 @@ is used by default."
>  The buffer is expected to be narrowed to just the header of the 
>  message;
>  see `message-narrow-to-headers-or-head'."
>    (let* ((inhibit-point-motion-hooks t)
> - (value (mail-fetch-field header nil (not not-all))))
> + (value (mail-fetch-field header nil (not not-all))))
>      (when value
>        (while (string-match "\n[\t ]+" value)
> - (setq value (replace-match " " t t value)))
> + (setq value (replace-match " " t t value)))
>        value)))
>
>  (defun message-field-value (header &optional not-all)
> @@ -2009,7 +2009,7 @@ see `message-narrow-to-headers-or-head'."
>     (progn
>       (forward-line 1)
>       (if (re-search-forward "^[^ \n\t]" nil t)
> - (point-at-bol)
> + (point-at-bol)
>         (point-max))))
>    (goto-char (point-min)))
>
> @@ -2018,21 +2018,21 @@ see 
> `message-narrow-to-headers-or-head'."
>    (while headers
>      (let (hclean)
>        (unless (string-match "^\\([^:]+\\):[ \t]*[^ \t]" (car 
>        headers))
> - (error "Invalid header `%s'" (car headers)))
> + (error "Invalid header `%s'" (car headers)))
>        (setq hclean (match-string 1 (car headers)))
>        (save-restriction
> - (message-narrow-to-headers)
> - (unless (re-search-forward (concat "^" (regexp-quote hclean) 
>  	":") nil t)
> - (goto-char (point-max))
> - (if (string-match "\n$" (car headers))
> - (insert (car headers))
> - (insert (car headers) ?\n)))))
> + (message-narrow-to-headers)
> + (unless (re-search-forward (concat "^" (regexp-quote hclean) 
>      ":") nil t)
> + (goto-char (point-max))
> + (if (string-match "\n$" (car headers))
> + (insert (car headers))
> + (insert (car headers) ?\n)))))
>      (setq headers (cdr headers))))
>
>  (defmacro message-with-reply-buffer (&rest forms)
>    "Evaluate FORMS in the reply buffer, if it exists."
>    `(when (and (bufferp message-reply-buffer)
> - (buffer-name message-reply-buffer))
> + (buffer-name message-reply-buffer))
>       (with-current-buffer message-reply-buffer
>         ,@forms)))
>
> @@ -2050,15 +2050,15 @@ see 
> `message-narrow-to-headers-or-head'."
>    "Remove list identifiers in `gnus-list-identifiers' from 
>    string SUBJECT."
>    (require 'gnus-sum) ; for gnus-list-identifiers
>    (let ((regexp (if (stringp gnus-list-identifiers)
> - gnus-list-identifiers
> - (mapconcat 'identity gnus-list-identifiers " *\\|"))))
> + gnus-list-identifiers
> + (mapconcat 'identity gnus-list-identifiers " *\\|"))))
>      (if (string-match (concat "\\(\\(\\(Re: +\\)?\\(" regexp
> - " *\\)\\)+\\(Re: +\\)?\\)") subject)
> - (concat (substring subject 0 (match-beginning 1))
> - (or (match-string 3 subject)
> - (match-string 5 subject))
> - (substring subject
> - (match-end 1)))
> + " *\\)\\)+\\(Re: +\\)?\\)") subject)
> + (concat (substring subject 0 (match-beginning 1))
> + (or (match-string 3 subject)
> + (match-string 5 subject))
> + (substring subject
> + (match-end 1)))
>        subject)))
>
>  (defun message-strip-subject-re (subject)
> @@ -2072,8 +2072,8 @@ see `message-narrow-to-headers-or-head'."
>    :group 'message-various
>    :version "22.1" ;; Gnus 5.10.9
>    :type '(choice string
> - (const ".")
> - (const "?")))
> + (const ".")
> + (const "?")))
>
>  ;; FIXME: We also should call 
>  ;; `message-strip-subject-encoded-words'
>  ;; when forwarding. Probably in `message-make-forward-subject' 
>  ;; and
> @@ -2083,79 +2083,79 @@ see 
> `message-narrow-to-headers-or-head'."
>    "Fix non-decodable words in SUBJECT."
>    ;; Cf. `gnus-simplify-subject-fully'.
>    (let* ((case-fold-search t)
> - (replacement-chars (format "[%s%s%s]"
> - message-replacement-char
> - message-replacement-char
> - message-replacement-char))
> - (enc-word-re 
>  	 "=\\?\\([^?]+\\)\\?\\([QB]\\)\\?\\([^?]+\\)\\(\\?=\\)")
> - cs-string
> - (have-marker
> - (with-temp-buffer
> - (insert subject)
> - (goto-char (point-min))
> - (when (re-search-forward enc-word-re nil t)
> - (setq cs-string (match-string 1)))))
> - cs-coding q-or-b word-beg word-end)
> + (replacement-chars (format "[%s%s%s]"
> + message-replacement-char
> + message-replacement-char
> + message-replacement-char))
> + (enc-word-re 
>       "=\\?\\([^?]+\\)\\?\\([QB]\\)\\?\\([^?]+\\)\\(\\?=\\)")
> + cs-string
> + (have-marker
> + (with-temp-buffer
> + (insert subject)
> + (goto-char (point-min))
> + (when (re-search-forward enc-word-re nil t)
> + (setq cs-string (match-string 1)))))
> + cs-coding q-or-b word-beg word-end)
>      (if (or (not have-marker) ;; No encoded word found...
> - ;; ... or double encoding was correct:
> - (and (stringp cs-string)
> - (setq cs-string (downcase cs-string))
> - (mm-coding-system-p (intern cs-string))
> - (not (prog1
> - (y-or-n-p
> - (format "\
> + ;; ... or double encoding was correct:
> + (and (stringp cs-string)
> + (setq cs-string (downcase cs-string))
> + (mm-coding-system-p (intern cs-string))
> + (not (prog1
> + (y-or-n-p
> + (format "\
>  Decoded Subject \"%s\"
>  contains a valid encoded word. Decode again? "
> - subject))
> - (setq cs-coding (intern cs-string))))))
> - subject
> + subject))
> + (setq cs-coding (intern cs-string))))))
> + subject
>        (with-temp-buffer
> - (insert subject)
> - (goto-char (point-min))
> - (while (re-search-forward enc-word-re nil t)
> - (setq cs-string (downcase (match-string 1))
> - q-or-b (match-string 2)
> - word-beg (match-beginning 0)
> - word-end (match-end 0))
> - (setq cs-coding
> - (if (mm-coding-system-p (intern cs-string))
> - (setq cs-coding (intern cs-string))
> - nil))
> - ;; No double encoded subject? => bogus charset.
> - (unless cs-coding
> - (setq cs-coding
> - (read-coding-system
> - (format-message "\
> + (insert subject)
> + (goto-char (point-min))
> + (while (re-search-forward enc-word-re nil t)
> + (setq cs-string (downcase (match-string 1))
> + q-or-b (match-string 2)
> + word-beg (match-beginning 0)
> + word-end (match-end 0))
> + (setq cs-coding
> + (if (mm-coding-system-p (intern cs-string))
> + (setq cs-coding (intern cs-string))
> + nil))
> + ;; No double encoded subject? => bogus charset.
> + (unless cs-coding
> + (setq cs-coding
> + (read-coding-system
> + (format-message "\
>  Decoded Subject \"%s\"
>  contains an encoded word. The charset `%s' is unknown or 
>  invalid.
>  Hit RET to replace non-decodable characters with \"%s\" or 
>  enter replacement
>  charset: "
> - subject cs-string message-replacement-char)))
> - (if cs-coding
> - (replace-match (concat "=?" (symbol-name cs-coding)
> - "?\\2?\\3\\4\\5"))
> - (save-excursion
> - (goto-char word-beg)
> - (re-search-forward "=\\?\\([^?]+\\)\\?\\([QB]\\)\\?" word-end 
>  		t)
> - (replace-match "")
> - ;; QP or base64
> - (if (string-match "\\`Q\\'" q-or-b)
> - ;; QP
> - (progn
> - (message "Replacing non-decodable characters with \"%s\"."
> - message-replacement-char)
> - (while (re-search-forward "\\(=[A-F0-9][A-F0-9]\\)+"
> - word-end t)
> - (replace-match message-replacement-char)))
> - ;; base64
> - (message "Replacing non-decodable characters with \"%s\"."
> - replacement-chars)
> - (re-search-forward "[^?]+" word-end t)
> - (replace-match replacement-chars))
> - (re-search-forward "\\?=")
> - (replace-match "")))))
> - (rfc2047-decode-region (point-min) (point-max))
> - (buffer-string)))))
> + subject cs-string message-replacement-char)))
> + (if cs-coding
> + (replace-match (concat "=?" (symbol-name cs-coding)
> + "?\\2?\\3\\4\\5"))
> + (save-excursion
> + (goto-char word-beg)
> + (re-search-forward "=\\?\\([^?]+\\)\\?\\([QB]\\)\\?" word-end 
>          t)
> + (replace-match "")
> + ;; QP or base64
> + (if (string-match "\\`Q\\'" q-or-b)
> + ;; QP
> + (progn
> + (message "Replacing non-decodable characters with \"%s\"."
> + message-replacement-char)
> + (while (re-search-forward "\\(=[A-F0-9][A-F0-9]\\)+"
> + word-end t)
> + (replace-match message-replacement-char)))
> + ;; base64
> + (message "Replacing non-decodable characters with \"%s\"."
> + replacement-chars)
> + (re-search-forward "[^?]+" word-end t)
> + (replace-match replacement-chars))
> + (re-search-forward "\\?=")
> + (replace-match "")))))
> + (rfc2047-decode-region (point-min) (point-max))
> + (buffer-string)))))
>
>  ;;; Start of functions adopted from `message-utils.el'.
>
> @@ -2192,29 +2192,29 @@ Leading \"Re: \" is not stripped by this 
> function. Use the function
>     (list
>      (read-from-minibuffer "New subject: ")))
>    (cond ((and (not (or (null new-subject) ; new subject not 
>    empty
> - (zerop (string-width new-subject))
> - (string-match "^[ \t]*$" new-subject))))
> - (save-excursion
> - (let ((old-subject
> - (save-restriction
> - (message-narrow-to-headers)
> - (message-fetch-field "Subject"))))
> - (cond ((not old-subject)
> - (error "No current subject"))
> - ((not (string-match
> - (concat "^[ \t]*"
> - (regexp-quote new-subject)
> - "[ \t]*$")
> - old-subject)) ; yes, it really is a new subject
> - ;; delete eventual Re: prefix
> - (setq old-subject
> - (message-strip-subject-re old-subject))
> - (message-goto-subject)
> - (message-delete-line)
> - (insert (concat "Subject: "
> - new-subject
> - " (was: "
> - old-subject ")\n")))))))))
> + (zerop (string-width new-subject))
> + (string-match "^[ \t]*$" new-subject))))
> + (save-excursion
> + (let ((old-subject
> + (save-restriction
> + (message-narrow-to-headers)
> + (message-fetch-field "Subject"))))
> + (cond ((not old-subject)
> + (error "No current subject"))
> + ((not (string-match
> + (concat "^[ \t]*"
> + (regexp-quote new-subject)
> + "[ \t]*$")
> + old-subject)) ; yes, it really is a new subject
> + ;; delete eventual Re: prefix
> + (setq old-subject
> + (message-strip-subject-re old-subject))
> + (message-goto-subject)
> + (message-delete-line)
> + (insert (concat "Subject: "
> + new-subject
> + " (was: "
> + old-subject ")\n")))))))))
>
>  (defun message-mark-inserted-region (beg end &optional 
>  verbatim)
>    "Mark some region in the current article with enclosing tags.
> @@ -2249,14 +2249,14 @@ body, set `message-archive-note' to 
> nil."
>    (interactive)
>    (if current-prefix-arg
>        (setq message-archive-note
> - (read-from-minibuffer "Reason for No-Archive: "
> - (cons message-archive-note 0))))
> + (read-from-minibuffer "Reason for No-Archive: "
> + (cons message-archive-note 0))))
>      (save-excursion
>        (if (message-goto-signature)
> - (re-search-backward message-signature-separator))
> + (re-search-backward message-signature-separator))
>        (when message-archive-note
> - (insert message-archive-note)
> - (newline))
> + (insert message-archive-note)
> + (newline))
>        (message-add-header message-archive-header)
>        (message-sort-headers)))
>
> @@ -2268,45 +2268,45 @@ With prefix-argument just set Follow-Up, 
> don't cross-post."
>      (replace-regexp-in-string
>       "\\`.*:" ""
>       (completing-read "Followup To: "
> - (if (boundp 'gnus-newsrc-alist)
> - gnus-newsrc-alist)
> - nil nil '("poster" . 0)
> - (if (boundp 'gnus-group-history)
> - 'gnus-group-history)))))
> + (if (boundp 'gnus-newsrc-alist)
> + gnus-newsrc-alist)
> + nil nil '("poster" . 0)
> + (if (boundp 'gnus-group-history)
> + 'gnus-group-history)))))
>    (message-remove-header "Follow[Uu]p-[Tt]o" t)
>    (message-goto-newsgroups)
>    (beginning-of-line)
>    ;; if we already did a crosspost before, kill old target
>    (if (and message-cross-post-old-target
> - (re-search-forward
> - (regexp-quote (concat "," message-cross-post-old-target))
> - nil t))
> + (re-search-forward
> + (regexp-quote (concat "," message-cross-post-old-target))
> + nil t))
>        (replace-match ""))
>    ;; unless (followup is to poster or user explicitly asked not
>    ;; to cross-post, or target-group is already in Newsgroups)
>    ;; add target-group to Newsgroups line.
>    (cond ((and (or
> - ;; def: cross-post, req:no
> - (and message-cross-post-default (not current-prefix-arg))
> - ;; def: no-cross-post, req:yes
> - (and (not message-cross-post-default) current-prefix-arg))
> - (not (string-match "poster" target-group))
> - (not (string-match (regexp-quote target-group)
> - (message-fetch-field "Newsgroups"))))
> - (end-of-line)
> - (insert (concat "," target-group))))
> + ;; def: cross-post, req:no
> + (and message-cross-post-default (not current-prefix-arg))
> + ;; def: no-cross-post, req:yes
> + (and (not message-cross-post-default) current-prefix-arg))
> + (not (string-match "poster" target-group))
> + (not (string-match (regexp-quote target-group)
> + (message-fetch-field "Newsgroups"))))
> + (end-of-line)
> + (insert (concat "," target-group))))
>    (end-of-line) ; ensure Followup: comes after Newsgroups:
>    ;; unless new followup would be identical to Newsgroups line
>    ;; make a new Followup-To line
>    (if (not (string-match (concat "^[ \t]*"
> - target-group
> - "[ \t]*$")
> - (message-fetch-field "Newsgroups")))
> + target-group
> + "[ \t]*$")
> + (message-fetch-field "Newsgroups")))
>        (insert (concat "\nFollowup-To: " target-group)))
>    (setq message-cross-post-old-target target-group))
>
>  (defun message-cross-post-insert-note (target-group cross-post 
>  in-old
> - _old-groups)
> + _old-groups)
>    "Insert a in message body note about a set Followup or 
>    Crosspost.
>  If there have been previous notes, delete them. TARGET-GROUP 
>  specifies the
>  group to Followup-To. When CROSS-POST is t, insert note about
> @@ -2316,25 +2316,25 @@ been made to before the user asked for a 
> Crosspost."
>    ;; start scanning body for previous uses
>    (message-goto-signature)
>    (let ((head (re-search-backward
> - (concat "^" mail-header-separator)
> - nil t))) ; just search in body
> + (concat "^" mail-header-separator)
> + nil t))) ; just search in body
>      (message-goto-signature)
>      (while (re-search-backward
> - (concat "^" (regexp-quote message-cross-post-note) ".*")
> - head t)
> + (concat "^" (regexp-quote message-cross-post-note) ".*")
> + head t)
>        (message-delete-line))
>      (message-goto-signature)
>      (while (re-search-backward
> - (concat "^" (regexp-quote message-followup-to-note) ".*")
> - head t)
> + (concat "^" (regexp-quote message-followup-to-note) ".*")
> + head t)
>        (message-delete-line))
>      ;; insert new note
>      (if (message-goto-signature)
> - (re-search-backward message-signature-separator))
> + (re-search-backward message-signature-separator))
>      (if (or in-old
> - (not cross-post)
> - (string-match "^[ \t]*poster[ \t]*$" target-group))
> - (insert (concat message-followup-to-note target-group "\n"))
> + (not cross-post)
> + (string-match "^[ \t]*poster[ \t]*$" target-group))
> + (insert (concat message-followup-to-note target-group "\n"))
>        (insert (concat message-cross-post-note target-group 
>        "\n")))))
>
>  (defun message-cross-post-followup-to (target-group)
> @@ -2345,40 +2345,40 @@ With prefix-argument just set Follow-Up, 
> don't cross-post."
>      (replace-regexp-in-string
>       "\\`.*:" ""
>       (completing-read "Followup To: "
> - (if (boundp 'gnus-newsrc-alist)
> - gnus-newsrc-alist)
> - nil nil '("poster" . 0)
> - (if (boundp 'gnus-group-history)
> - 'gnus-group-history)))))
> + (if (boundp 'gnus-newsrc-alist)
> + gnus-newsrc-alist)
> + nil nil '("poster" . 0)
> + (if (boundp 'gnus-group-history)
> + 'gnus-group-history)))))
>    (when (fboundp 'gnus-group-real-name)
>      (setq target-group (gnus-group-real-name target-group)))
>    (cond ((not (or (null target-group) ; new subject not empty
> - (zerop (string-width target-group))
> - (string-match "^[ \t]*$" target-group)))
> - (save-excursion
> - (let* ((old-groups (message-fetch-field "Newsgroups"))
> - (in-old (string-match
> - (regexp-quote target-group)
> - (or old-groups ""))))
> - ;; check whether target exactly matches old Newsgroups
> - (cond ((not old-groups)
> - (error "No current newsgroup"))
> - ((or (not in-old)
> - (not (string-match
> - (concat "^[ \t]*"
> - (regexp-quote target-group)
> - "[ \t]*$")
> - old-groups)))
> - ;; yes, Newsgroups line must change
> - (message-cross-post-followup-to-header target-group)
> - ;; insert note whether we do cross-post or followup-to
> - (funcall message-cross-post-note-function
> - target-group
> - (if (or (and message-cross-post-default
> - (not current-prefix-arg))
> - (and (not message-cross-post-default)
> - current-prefix-arg)) t)
> - in-old old-groups))))))))
> + (zerop (string-width target-group))
> + (string-match "^[ \t]*$" target-group)))
> + (save-excursion
> + (let* ((old-groups (message-fetch-field "Newsgroups"))
> + (in-old (string-match
> + (regexp-quote target-group)
> + (or old-groups ""))))
> + ;; check whether target exactly matches old Newsgroups
> + (cond ((not old-groups)
> + (error "No current newsgroup"))
> + ((or (not in-old)
> + (not (string-match
> + (concat "^[ \t]*"
> + (regexp-quote target-group)
> + "[ \t]*$")
> + old-groups)))
> + ;; yes, Newsgroups line must change
> + (message-cross-post-followup-to-header target-group)
> + ;; insert note whether we do cross-post or followup-to
> + (funcall message-cross-post-note-function
> + target-group
> + (if (or (and message-cross-post-default
> + (not current-prefix-arg))
> + (and (not message-cross-post-default)
> + current-prefix-arg)) t)
> + in-old old-groups))))))))
>
>  ;;; Reduce To: to Cc: or Bcc: header
>
> @@ -2386,25 +2386,25 @@ With prefix-argument just set Follow-Up, 
> don't cross-post."
>   "Replace contents of To: header with contents of Cc: or Bcc: 
>   header."
>   (interactive)
>   (let ((cc-content
> - (save-restriction (message-narrow-to-headers)
> - (message-fetch-field "cc")))
> + (save-restriction (message-narrow-to-headers)
> + (message-fetch-field "cc")))
>         (bcc nil))
>     (if (and (not cc-content)
> - (setq cc-content
> - (save-restriction
> - (message-narrow-to-headers)
> - (message-fetch-field "bcc"))))
> + (setq cc-content
> + (save-restriction
> + (message-narrow-to-headers)
> + (message-fetch-field "bcc"))))
>         (setq bcc t))
>     (cond (cc-content
> - (save-excursion
> - (message-goto-to)
> - (message-delete-line)
> - (insert (concat "To: " cc-content "\n"))
> - (save-restriction
> - (message-narrow-to-headers)
> - (message-remove-header (if bcc
> - "bcc"
> - "cc"))))))))
> + (save-excursion
> + (message-goto-to)
> + (message-delete-line)
> + (insert (concat "To: " cc-content "\n"))
> + (save-restriction
> + (message-narrow-to-headers)
> + (message-remove-header (if bcc
> + "bcc"
> + "cc"))))))))
>
>  ;;; End of functions adopted from `message-utils.el'.
>
> @@ -2416,43 +2416,43 @@ If REVERSE, remove headers that doesn't 
> match HEADER.
>  Return the number of headers removed."
>    (goto-char (point-min))
>    (let ((regexp (if is-regexp header (concat "^" (regexp-quote 
>    header) ":")))
> - (number 0)
> - (case-fold-search t)
> - last)
> + (number 0)
> + (case-fold-search t)
> + last)
>      (while (and (not (eobp))
> - (not last))
> + (not last))
>        (if (if reverse
> - (and (not (looking-at regexp))
> - ;; Don't remove things not looking like header.
> - (looking-at "[!-9;-~]+:"))
> - (looking-at regexp))
> - (progn
> - (cl-incf number)
> - (when first
> - (setq last t))
> - (delete-region
> - (point)
> - ;; There might be a continuation header, so we have to search
> - ;; until we find a new non-continuation line.
> - (progn
> - (forward-line 1)
> - (if (re-search-forward "^[^ \t]" nil t)
> - (goto-char (match-beginning 0))
> - (point-max)))))
> - (forward-line 1)
> - (if (re-search-forward "^[^ \t]" nil t)
> - (goto-char (match-beginning 0))
> - (goto-char (point-max)))))
> + (and (not (looking-at regexp))
> + ;; Don't remove things not looking like header.
> + (looking-at "[!-9;-~]+:"))
> + (looking-at regexp))
> + (progn
> + (cl-incf number)
> + (when first
> + (setq last t))
> + (delete-region
> + (point)
> + ;; There might be a continuation header, so we have to search
> + ;; until we find a new non-continuation line.
> + (progn
> + (forward-line 1)
> + (if (re-search-forward "^[^ \t]" nil t)
> + (goto-char (match-beginning 0))
> + (point-max)))))
> + (forward-line 1)
> + (if (re-search-forward "^[^ \t]" nil t)
> + (goto-char (match-beginning 0))
> + (goto-char (point-max)))))
>      number))
>
>  (defun message-remove-first-header (header)
>    "Remove the first instance of HEADER if there is more than 
>    one."
>    (let ((count 0)
> - (regexp (concat "^" (regexp-quote header) ":")))
> + (regexp (concat "^" (regexp-quote header) ":")))
>      (save-excursion
>        (goto-char (point-min))
>        (while (re-search-forward regexp nil t)
> - (cl-incf count)))
> + (cl-incf count)))
>      (while (> count 1)
>        (message-remove-header header nil t)
>        (cl-decf count))))
> @@ -2463,7 +2463,7 @@ Return the number of headers removed."
>    (narrow-to-region
>     (goto-char (point-min))
>     (if (re-search-forward
> - (concat "^" (regexp-quote mail-header-separator) "\n") nil t)
> + (concat "^" (regexp-quote mail-header-separator) "\n") nil t)
>         (match-beginning 0)
>       (point-max)))
>    (goto-char (point-min)))
> @@ -2491,9 +2491,9 @@ Point is left at the beginning of the 
> narrowed-to region."
>    (narrow-to-region
>     (goto-char (point-min))
>     (if (re-search-forward (concat "\\(\n\\)\n\\|^\\("
> - (regexp-quote mail-header-separator)
> - "\n\\)")
> - nil t)
> + (regexp-quote mail-header-separator)
> + "\n\\)")
> + nil t)
>         (or (match-end 1) (match-beginning 2))
>       (point-max)))
>    (goto-char (point-min)))
> @@ -2502,22 +2502,22 @@ Point is left at the beginning of the 
> narrowed-to region."
>    "Say whether the current buffer contains a news message."
>    (and (not message-this-is-mail)
>         (or message-this-is-news
> - (save-excursion
> - (save-restriction
> - (message-narrow-to-headers)
> - (and (message-fetch-field "newsgroups")
> - (not (message-fetch-field "posted-to"))))))))
> + (save-excursion
> + (save-restriction
> + (message-narrow-to-headers)
> + (and (message-fetch-field "newsgroups")
> + (not (message-fetch-field "posted-to"))))))))
>
>  (defun message-mail-p ()
>    "Say whether the current buffer contains a mail message."
>    (and (not message-this-is-news)
>         (or message-this-is-mail
> - (save-excursion
> - (save-restriction
> - (message-narrow-to-headers)
> - (or (message-fetch-field "to")
> - (message-fetch-field "cc")
> - (message-fetch-field "bcc")))))))
> + (save-excursion
> + (save-restriction
> + (message-narrow-to-headers)
> + (or (message-fetch-field "to")
> + (message-fetch-field "cc")
> + (message-fetch-field "bcc")))))))
>
>  (defun message-subscribed-p ()
>    "Say whether we need to insert a MFT header."
> @@ -2531,8 +2531,8 @@ Point is left at the beginning of the 
> narrowed-to region."
>    (beginning-of-line)
>    (or (eobp) (forward-char 1))
>    (not (if (re-search-forward "^[^ \t]" nil t)
> - (beginning-of-line)
> - (goto-char (point-max)))))
> + (beginning-of-line)
> + (goto-char (point-max)))))
>
>  (defun message-sort-headers-1 ()
>    "Sort the buffer as headers using `message-rank' text props."
> @@ -2546,7 +2546,7 @@ Point is left at the beginning of the 
> narrowed-to region."
>         (forward-char -1)))
>     (lambda ()
>       (or (get-text-property (point) 'message-rank)
> - 10000))))
> + 10000))))
>
>  (defun message-sort-headers ()
>    "Sort the headers of the current message according to 
>    `message-header-format-alist'."
> @@ -2554,19 +2554,19 @@ Point is left at the beginning of the 
> narrowed-to region."
>    (save-excursion
>      (save-restriction
>        (let ((max (1+ (length message-header-format-alist)))
> - rank)
> - (message-narrow-to-headers)
> - (while (re-search-forward "^[^ \n]+:" nil t)
> - (put-text-property
> - (match-beginning 0) (1+ (match-beginning 0))
> - 'message-rank
> - (if (setq rank (length (memq (assq (intern (buffer-substring
> - (match-beginning 0)
> - (1- (match-end 0))))
> - message-header-format-alist)
> - message-header-format-alist)))
> - (- max rank)
> - (1+ max)))))
> + rank)
> + (message-narrow-to-headers)
> + (while (re-search-forward "^[^ \n]+:" nil t)
> + (put-text-property
> + (match-beginning 0) (1+ (match-beginning 0))
> + 'message-rank
> + (if (setq rank (length (memq (assq (intern (buffer-substring
> + (match-beginning 0)
> + (1- (match-end 0))))
> + message-header-format-alist)
> + message-header-format-alist)))
> + (- max rank)
> + (1+ max)))))
>        (message-sort-headers-1))))
>
>  (defun message-kill-address ()
> @@ -2588,15 +2588,15 @@ manual. With two 
> \\[universal-argument]'s, display the EasyPG or
>  PGG manual, depending on the value of `mml2015-use'."
>    (interactive "p")
>    (info (format "(%s)Top"
> - (cond ((eq arg 16)
> - (require 'mml2015)
> - mml2015-use)
> - ((eq arg 4) 'emacs-mime)
> - ((and (not (booleanp arg))
> - (symbolp arg))
> - arg)
> - (t
> - 'message)))))
> + (cond ((eq arg 16)
> + (require 'mml2015)
> + mml2015-use)
> + ((eq arg 4) 'emacs-mime)
> + ((and (not (booleanp arg))
> + (symbolp arg))
> + arg)
> + (t
> + 'message)))))
>
>  (defun message-all-recipients ()
>    "Return a list of all recipients in the message, looking at 
>    TO, Cc and Bcc.
> @@ -2828,8 +2828,8 @@ message composition doesn't break too 
> bad."
>    ;; property list (rather than a list of property symbols), to 
>    ;; be
>    ;; directly useful for `remove-text-properties'.
>    '(field nil read-only nil invisible nil intangible nil
> - mouse-face nil modification-hooks nil insert-in-front-hooks 
>  	  nil
> - insert-behind-hooks nil point-entered nil point-left nil)
> + mouse-face nil modification-hooks nil insert-in-front-hooks 
>        nil
> + insert-behind-hooks nil point-entered nil point-left nil)
>    ;; Other special properties:
>    ;; category, face, display: probably doesn't do any harm.
>    ;; fontified: is used by font-lock.
> @@ -2844,12 +2844,12 @@ It uses the properties `intangible', 
> `invisible', `modification-hooks'
>  and `read-only' when translating ascii or kana text to kanji 
>  text.
>  These properties are essential to work, so we should never 
>  strip them."
>    (not (and (boundp 'egg-modefull-mode)
> - (symbol-value 'egg-modefull-mode)
> - (or (memq (get-text-property pos 'intangible)
> - '(its-part-1 its-part-2))
> - (get-text-property pos 'egg-end)
> - (get-text-property pos 'egg-lang)
> - (get-text-property pos 'egg-start)))))
> + (symbol-value 'egg-modefull-mode)
> + (or (memq (get-text-property pos 'intangible)
> + '(its-part-1 its-part-2))
> + (get-text-property pos 'egg-end)
> + (get-text-property pos 'egg-lang)
> + (get-text-property pos 'egg-start)))))
>
>  (defsubst message-mail-alias-type-p (type)
>    (if (atom message-mail-alias-type)
> @@ -2861,10 +2861,10 @@ These properties are essential to work, 
> so we should never strip them."
>  This function is intended to be called from 
>  `after-change-functions'.
>  See also `message-forbidden-properties'."
>    (when (and (message-mail-alias-type-p 'ecomplete)
> - (memq this-command message-self-insert-commands))
> + (memq this-command message-self-insert-commands))
>      (message-display-abbrev))
>    (when (and message-strip-special-text-properties
> - (message-tamago-not-in-use-p begin))
> + (message-tamago-not-in-use-p begin))
>      (let ((inhibit-read-only t))
>        (remove-text-properties begin end 
>        message-forbidden-properties))))
>
> @@ -2899,20 +2899,20 @@ Like Text Mode but with these additional 
> commands:\\<message-mode-map>
>  C-c C-s `message-send' (send the message) C-c C-c 
>  `message-send-and-exit'
>  C-c C-d Postpone sending the message C-c C-k Kill the message
>  C-c C-f move to a header field (and create it if there isn't):
> - C-c C-f C-t move to To C-c C-f C-s move to Subject
> - C-c C-f C-c move to Cc C-c C-f C-b move to Bcc
> - C-c C-f C-w move to Fcc C-c C-f C-r move to Reply-To
> - C-c C-f C-u move to Summary C-c C-f C-n move to Newsgroups
> - C-c C-f C-k move to Keywords C-c C-f C-d move to Distribution
> - C-c C-f C-o move to From (\"Originator\")
> - C-c C-f C-f move to Followup-To
> - C-c C-f C-m move to Mail-Followup-To
> - C-c C-f C-e move to Expires
> - C-c C-f C-i cycle through Importance values
> - C-c C-f s change subject and append \"(was: <Old Subject>)\"
> - C-c C-f x crossposting with FollowUp-To header and note in 
>  	 body
> - C-c C-f t replace To: header with contents of Cc: or Bcc:
> - C-c C-f a Insert X-No-Archive: header and a note in the body
> + C-c C-f C-t move to To C-c C-f C-s move to Subject
> + C-c C-f C-c move to Cc C-c C-f C-b move to Bcc
> + C-c C-f C-w move to Fcc C-c C-f C-r move to Reply-To
> + C-c C-f C-u move to Summary C-c C-f C-n move to Newsgroups
> + C-c C-f C-k move to Keywords C-c C-f C-d move to Distribution
> + C-c C-f C-o move to From (\"Originator\")
> + C-c C-f C-f move to Followup-To
> + C-c C-f C-m move to Mail-Followup-To
> + C-c C-f C-e move to Expires
> + C-c C-f C-i cycle through Importance values
> + C-c C-f s change subject and append \"(was: <Old Subject>)\"
> + C-c C-f x crossposting with FollowUp-To header and note in 
>       body
> + C-c C-f t replace To: header with contents of Cc: or Bcc:
> + C-c C-f a Insert X-No-Archive: header and a note in the body
>  C-c C-t `message-insert-to' (add a To header to a news 
>  followup)
>  C-c C-l `message-to-list-only' (removes all but list address in 
>  to/cc)
>  C-c C-n `message-insert-newsgroups' (add a Newsgroup header to 
>  a news reply)
> @@ -2942,11 +2942,11 @@ M-RET `message-newline-and-reformat' 
> (break the line and reformat)."
>    (setq buffer-offer-save t)
>    (set (make-local-variable 'facemenu-add-face-function)
>         (lambda (face end)
> - (let ((face-fun (cdr (assq face message-face-alist))))
> - (if face-fun
> - (funcall face-fun (point) end)
> - (error "Face %s not configured for %s mode" face mode-name)))
> - ""))
> + (let ((face-fun (cdr (assq face message-face-alist))))
> + (if face-fun
> + (funcall face-fun (point) end)
> + (error "Face %s not configured for %s mode" face mode-name)))
> + ""))
>    (set (make-local-variable 'facemenu-remove-face-function) t)
>    (set (make-local-variable 'message-reply-headers) nil)
>    (make-local-variable 'message-newsreader)
> @@ -2964,7 +2964,7 @@ M-RET `message-newline-and-reformat' 
> (break the line and reformat)."
>    (when message-yank-prefix
>      (set (make-local-variable 'comment-start) 
>      message-yank-prefix)
>      (set (make-local-variable 'comment-start-skip)
> - (concat "^" (regexp-quote message-yank-prefix) "[ \t]*")))
> + (concat "^" (regexp-quote message-yank-prefix) "[ \t]*")))
>    (set (make-local-variable 'font-lock-defaults)
>         '(message-font-lock-keywords t))
>    (if (boundp 'tool-bar-map)
> @@ -2973,7 +2973,7 @@ M-RET `message-newline-and-reformat' 
> (break the line and reformat)."
>    (easy-menu-add message-mode-field-menu message-mode-map)
>    ;; Mmmm... Forbidden properties...
>    (add-hook 'after-change-functions 
>    #'message-strip-forbidden-properties
> - nil 'local)
> + nil 'local)
>    ;; Allow mail alias things.
>    (cond
>     ((message-mail-alias-type-p 'abbrev)
> @@ -3007,26 +3007,26 @@ M-RET `message-newline-and-reformat' 
> (break the line and reformat)."
>    (make-local-variable 'adaptive-fill-regexp)
>    (make-local-variable 'adaptive-fill-first-line-regexp)
>    (let ((quote-prefix-regexp
> - ;; User should change message-cite-prefix-regexp if
> - ;; message-yank-prefix is set to an abnormal value.
> - (concat "\\(" message-cite-prefix-regexp "\\)[ \t]*")))
> + ;; User should change message-cite-prefix-regexp if
> + ;; message-yank-prefix is set to an abnormal value.
> + (concat "\\(" message-cite-prefix-regexp "\\)[ \t]*")))
>      (setq paragraph-start
> - (concat
> - (regexp-quote mail-header-separator) "$\\|"
> - "[ \t]*$\\|" ; blank lines
> - "-- $\\|" ; signature delimiter
> - "---+$\\|" ; delimiters for forwarded messages
> - page-delimiter "$\\|" ; spoiler warnings
> - ".*wrote:$\\|" ; attribution lines
> - quote-prefix-regexp "$\\|" ; empty lines in quoted text
> - ; mml tags
> - "<#!*/?\\(multipart\\|part\\|external\\|mml\\|secure\\)"))
> + (concat
> + (regexp-quote mail-header-separator) "$\\|"
> + "[ \t]*$\\|" ; blank lines
> + "-- $\\|" ; signature delimiter
> + "---+$\\|" ; delimiters for forwarded messages
> + page-delimiter "$\\|" ; spoiler warnings
> + ".*wrote:$\\|" ; attribution lines
> + quote-prefix-regexp "$\\|" ; empty lines in quoted text
> + ; mml tags
> + "<#!*/?\\(multipart\\|part\\|external\\|mml\\|secure\\)"))
>      (setq paragraph-separate paragraph-start)
>      (setq adaptive-fill-regexp
> - (concat quote-prefix-regexp "\\|" adaptive-fill-regexp))
> + (concat quote-prefix-regexp "\\|" adaptive-fill-regexp))
>      (setq adaptive-fill-first-line-regexp
> - (concat quote-prefix-regexp "\\|"
> - adaptive-fill-first-line-regexp)))
> + (concat quote-prefix-regexp "\\|"
> + adaptive-fill-first-line-regexp)))
>    (setq-local auto-fill-inhibit-regexp nil)
>    (setq-local normal-auto-fill-function 'message-do-auto-fill))
>
> @@ -3130,20 +3130,20 @@ Returns point."
>        ;; If the message is mangled, find the end of the headers 
>        ;; the
>        ;; hard way.
>        (progn
> - ;; Skip past all headers and continuation lines.
> - (while (looking-at "[^\t\n :]+:\\|[\t ]+[^\t\n ]")
> - (forward-line 1))
> - ;; We're now at the first empty line, so perhaps move past it.
> - (when (and (eolp)
> - (not (eobp)))
> - (forward-line 1))
> - (point))))
> + ;; Skip past all headers and continuation lines.
> + (while (looking-at "[^\t\n :]+:\\|[\t ]+[^\t\n ]")
> + (forward-line 1))
> + ;; We're now at the first empty line, so perhaps move past it.
> + (when (and (eolp)
> + (not (eobp)))
> + (forward-line 1))
> + (point))))
>
>  (defun message-in-body-p ()
>    "Return t if point is in the message body."
>    (>= (point)
>        (save-excursion
> - (message-goto-body))))
> + (message-goto-body))))
>
>  (defun message-goto-eoh (&optional interactive)
>    "Move point to the end of the headers."
> @@ -3181,8 +3181,8 @@ Cc: header are also put into the MFT."
>        (message-remove-header "Mail-Followup-To")
>        (setq cc (and include-cc (message-fetch-field "Cc")))
>        (setq tos (if cc
> - (concat (message-fetch-field "To") "," cc)
> - (message-fetch-field "To"))))
> + (concat (message-fetch-field "To") "," cc)
> + (message-fetch-field "To"))))
>      (message-goto-mail-followup-to)
>      (insert (concat tos ", " user-mail-address))))
>
> @@ -3194,16 +3194,16 @@ If the original author requested not to 
> be sent mail, don't insert unless the
>  prefix FORCE is given."
>    (interactive "P")
>    (let* ((mct (message-fetch-reply-field "mail-copies-to"))
> - (dont (and mct (or (equal (downcase mct) "never")
> - (equal (downcase mct) "nobody"))))
> - (to (or (message-fetch-reply-field "mail-reply-to")
> - (message-fetch-reply-field "reply-to")
> - (message-fetch-reply-field "from"))))
> + (dont (and mct (or (equal (downcase mct) "never")
> + (equal (downcase mct) "nobody"))))
> + (to (or (message-fetch-reply-field "mail-reply-to")
> + (message-fetch-reply-field "reply-to")
> + (message-fetch-reply-field "from"))))
>      (when (and dont to)
>        (message
>         (if force
> - "Ignoring the user request not to have copies sent via mail"
> - "Complying with the user request not to have copies sent via 
>  	 mail")))
> + "Ignoring the user request not to have copies sent via mail"
> + "Complying with the user request not to have copies sent via 
>       mail")))
>      (when (and force (not to))
>        (error "No mail address in the article"))
>      (when (and to (or force (not dont)))
> @@ -3213,7 +3213,7 @@ prefix FORCE is given."
>    "Insert To and Cc headers as if you were doing a wide reply."
>    (interactive)
>    (let ((headers (message-with-reply-buffer
> - (message-get-reply-headers t))))
> + (message-get-reply-headers t))))
>      (message-carefully-insert-headers headers)))
>
>  (defcustom message-header-synonyms
> @@ -3238,46 +3238,46 @@ or in the synonym headers, defined by 
> `message-header-synonyms'."
>    ;; (mail-strip-quoted-names "Foo Bar <foo@bar>, bla@fasel 
>    ;; (Bla Fasel)")
>    (dolist (header headers)
>      (let* ((header-name (symbol-name (car header)))
> - (new-header (cdr header))
> - (synonyms (cl-loop for synonym in message-header-synonyms
> - when (memq (car header) synonym) return synonym))
> - (old-header
> - (cl-loop for synonym in synonyms
> - for old-header = (mail-fetch-field (symbol-name synonym))
> - when (and old-header (string-match new-header old-header))
> - return synonym)))
> + (new-header (cdr header))
> + (synonyms (cl-loop for synonym in message-header-synonyms
> + when (memq (car header) synonym) return synonym))
> + (old-header
> + (cl-loop for synonym in synonyms
> + for old-header = (mail-fetch-field (symbol-name synonym))
> + when (and old-header (string-match new-header old-header))
> + return synonym)))
>        (if old-header
> - (message "already have `%s' in `%s'" new-header old-header)
> - (when (and (message-position-on-field header-name)
> - (setq old-header (mail-fetch-field header-name))
> - (not (string-match "\\` *\\'" old-header)))
> - (insert ", "))
> - (insert new-header)))))
> + (message "already have `%s' in `%s'" new-header old-header)
> + (when (and (message-position-on-field header-name)
> + (setq old-header (mail-fetch-field header-name))
> + (not (string-match "\\` *\\'" old-header)))
> + (insert ", "))
> + (insert new-header)))))
>
>  (defun message-widen-reply ()
>    "Widen the reply to include maximum recipients."
>    (interactive)
>    (let ((follow-to
> - (and (bufferp message-reply-buffer)
> - (buffer-name message-reply-buffer)
> - (with-current-buffer message-reply-buffer
> - (message-get-reply-headers t)))))
> + (and (bufferp message-reply-buffer)
> + (buffer-name message-reply-buffer)
> + (with-current-buffer message-reply-buffer
> + (message-get-reply-headers t)))))
>      (save-excursion
>        (save-restriction
> - (message-narrow-to-headers)
> - (dolist (elem follow-to)
> - (message-remove-header (symbol-name (car elem)))
> - (goto-char (point-min))
> - (insert (symbol-name (car elem)) ": "
> - (cdr elem) "\n"))))))
> + (message-narrow-to-headers)
> + (dolist (elem follow-to)
> + (message-remove-header (symbol-name (car elem)))
> + (goto-char (point-min))
> + (insert (symbol-name (car elem)) ": "
> + (cdr elem) "\n"))))))
>
>  (defun message-insert-newsgroups ()
>    "Insert the Newsgroups header from the article being replied 
>    to."
>    (interactive)
>    (let ((old-newsgroups (mail-fetch-field "newsgroups"))
> - (new-newsgroups (message-fetch-reply-field "newsgroups"))
> - (first t)
> - insert-newsgroups)
> + (new-newsgroups (message-fetch-reply-field "newsgroups"))
> + (first t)
> + insert-newsgroups)
>      (message-position-on-field "Newsgroups")
>      (cond
>       ((not new-newsgroups)
> @@ -3286,21 +3286,21 @@ or in the synonym headers, defined by 
> `message-header-synonyms'."
>        (insert new-newsgroups))
>       (t
>        (setq new-newsgroups (split-string new-newsgroups "[, 
>        ]+")
> - old-newsgroups (split-string old-newsgroups "[, ]+"))
> + old-newsgroups (split-string old-newsgroups "[, ]+"))
>        (dolist (group new-newsgroups)
> - (unless (member group old-newsgroups)
> - (push group insert-newsgroups)))
> + (unless (member group old-newsgroups)
> + (push group insert-newsgroups)))
>        (if (null insert-newsgroups)
> - (error "Newgroup%s already in the header"
> - (if (> (length new-newsgroups) 1)
> - "s" ""))
> - (when old-newsgroups
> - (setq first nil))
> - (dolist (group insert-newsgroups)
> - (unless first
> - (insert ","))
> - (setq first nil)
> - (insert group)))))))
> + (error "Newgroup%s already in the header"
> + (if (> (length new-newsgroups) 1)
> + "s" ""))
> + (when old-newsgroups
> + (setq first nil))
> + (dolist (group insert-newsgroups)
> + (unless first
> + (insert ","))
> + (setq first nil)
> + (insert group)))))))
>
>  
>
> @@ -3314,20 +3314,20 @@ or in the synonym headers, defined by 
> `message-header-synonyms'."
>        (goto-char beg)
>        ;; snarf citation prefix, if appropriate
>        (unless (eq (point) (progn (beginning-of-line) (point)))
> - (when (looking-at message-cite-prefix-regexp)
> - (setq citeprefix (match-string 0))))
> + (when (looking-at message-cite-prefix-regexp)
> + (setq citeprefix (match-string 0))))
>        (goto-char end)
>        (delete-region (point) (if (not (message-goto-signature))
> - (point)
> - (forward-line -2)
> - (point)))
> + (point)
> + (forward-line -2)
> + (point)))
>        (insert "\n")
>        (goto-char beg)
>        (delete-region beg (progn (message-goto-body)
> - (forward-line 2)
> - (point)))
> + (forward-line 2)
> + (point)))
>        (when citeprefix
> - (insert citeprefix))))
> + (insert citeprefix))))
>    (when (message-goto-signature)
>      (forward-line -2)))
>
> @@ -3339,16 +3339,16 @@ of lines before the signature intact."
>    (save-excursion
>      (save-restriction
>        (let ((point (point)))
> - (narrow-to-region point (point-max))
> - (message-goto-signature)
> - (unless (eobp)
> - (if (and arg (numberp arg))
> - (forward-line (- -1 arg))
> - (end-of-line -1)))
> - (unless (= point (point))
> - (kill-region point (point))
> - (unless (bolp)
> - (insert "\n")))))))
> + (narrow-to-region point (point-max))
> + (message-goto-signature)
> + (unless (eobp)
> + (if (and arg (numberp arg))
> + (forward-line (- -1 arg))
> + (end-of-line -1)))
> + (unless (= point (point))
> + (kill-region point (point))
> + (unless (bolp)
> + (insert "\n")))))))
>
>  (defun message-newline-and-reformat (&optional arg not-break)
>    "Insert four newlines, and then reformat if inside quoted 
>    text.
> @@ -3363,10 +3363,10 @@ Prefix arg means justify as well."
>      (setq bolp (= beg point))
>      ;; Find first line of the paragraph.
>      (if not-break
> - (while (and (not (eobp))
> - (not (looking-at message-cite-prefix-regexp))
> - (looking-at paragraph-start))
> - (forward-line 1)))
> + (while (and (not (eobp))
> + (not (looking-at message-cite-prefix-regexp))
> + (looking-at paragraph-start))
> + (forward-line 1)))
>      ;; Find the prefix
>      (when (looking-at message-cite-prefix-regexp)
>        (setq quoted (match-string 0))
> @@ -3374,70 +3374,70 @@ Prefix arg means justify as well."
>        (looking-at "[ \t]*")
>        (setq leading-space (match-string 0)))
>      (if (and quoted
> - (not not-break)
> - (not bolp)
> - (< (- point beg) (length quoted)))
> - ;; break inside the cite prefix.
> - (setq quoted nil
> - end nil))
> + (not not-break)
> + (not bolp)
> + (< (- point beg) (length quoted)))
> + ;; break inside the cite prefix.
> + (setq quoted nil
> + end nil))
>      (if quoted
> - (progn
> - (forward-line 1)
> - (while (and (not (eobp))
> - (not (looking-at paragraph-separate))
> - (looking-at message-cite-prefix-regexp)
> - (equal quoted (match-string 0)))
> - (goto-char (match-end 0))
> - (looking-at "[ \t]*")
> - (if (> (length leading-space) (length (match-string 0)))
> - (setq leading-space (match-string 0)))
> - (forward-line 1))
> - (setq end (point))
> - (goto-char beg)
> - (while (and (if (bobp) nil (forward-line -1) t)
> - (not (looking-at paragraph-start))
> - (looking-at message-cite-prefix-regexp)
> - (equal quoted (match-string 0)))
> - (setq beg (point))
> - (goto-char (match-end 0))
> - (looking-at "[ \t]*")
> - (if (> (length leading-space) (length (match-string 0)))
> - (setq leading-space (match-string 0)))))
> + (progn
> + (forward-line 1)
>        (while (and (not (eobp))
> - (not (looking-at paragraph-separate))
> - (not (looking-at message-cite-prefix-regexp)))
> - (forward-line 1))
> + (not (looking-at paragraph-separate))
> + (looking-at message-cite-prefix-regexp)
> + (equal quoted (match-string 0)))
> + (goto-char (match-end 0))
> + (looking-at "[ \t]*")
> + (if (> (length leading-space) (length (match-string 0)))
> + (setq leading-space (match-string 0)))
> + (forward-line 1))
>        (setq end (point))
>        (goto-char beg)
>        (while (and (if (bobp) nil (forward-line -1) t)
> - (not (looking-at paragraph-start))
> - (not (looking-at message-cite-prefix-regexp)))
> - (setq beg (point))))
> + (not (looking-at paragraph-start))
> + (looking-at message-cite-prefix-regexp)
> + (equal quoted (match-string 0)))
> + (setq beg (point))
> + (goto-char (match-end 0))
> + (looking-at "[ \t]*")
> + (if (> (length leading-space) (length (match-string 0)))
> + (setq leading-space (match-string 0)))))
> + (while (and (not (eobp))
> + (not (looking-at paragraph-separate))
> + (not (looking-at message-cite-prefix-regexp)))
> + (forward-line 1))
> + (setq end (point))
> + (goto-char beg)
> + (while (and (if (bobp) nil (forward-line -1) t)
> + (not (looking-at paragraph-start))
> + (not (looking-at message-cite-prefix-regexp)))
> + (setq beg (point))))
>      (goto-char point)
>      (save-restriction
>        (narrow-to-region beg end)
>        (if not-break
> - (setq point nil)
> - (if bolp
> - (newline)
> - (newline)
> - (newline))
> - (setq point (point))
> - ;; (newline 2) doesn't mark both newline's as hard, so call
> - ;; newline twice. -jas
> - (newline)
> - (newline)
> - (delete-region (point) (re-search-forward "[ \t]*"))
> - (when (and quoted (not bolp))
> - (insert quoted leading-space)))
> + (setq point nil)
> + (if bolp
> + (newline)
> + (newline)
> + (newline))
> + (setq point (point))
> + ;; (newline 2) doesn't mark both newline's as hard, so call
> + ;; newline twice. -jas
> + (newline)
> + (newline)
> + (delete-region (point) (re-search-forward "[ \t]*"))
> + (when (and quoted (not bolp))
> + (insert quoted leading-space)))
>        (undo-boundary)
>        (if quoted
> - (let* ((adaptive-fill-regexp
> - (regexp-quote (concat quoted leading-space)))
> - (adaptive-fill-first-line-regexp
> - adaptive-fill-regexp ))
> - (fill-paragraph arg))
> - (fill-paragraph arg))
> + (let* ((adaptive-fill-regexp
> + (regexp-quote (concat quoted leading-space)))
> + (adaptive-fill-first-line-regexp
> + adaptive-fill-regexp ))
> + (fill-paragraph arg))
> + (fill-paragraph arg))
>        (if point (goto-char point)))))
>
>  (defun message-fill-paragraph (&optional arg)
> @@ -3470,47 +3470,47 @@ Message buffers and is not meant to be 
> called directly."
>    "Insert a signature. See documentation for variable 
>    `message-signature'."
>    (interactive (list 0))
>    (let* ((signature
> - (cond
> - ((and (null message-signature)
> - (eq force 0))
> - (save-excursion
> - (goto-char (point-max))
> - (not (re-search-backward message-signature-separator nil t))))
> - ((and (null message-signature)
> - force)
> - t)
> - ((functionp message-signature)
> - (funcall message-signature))
> - ((listp message-signature)
> - (eval message-signature))
> - (t message-signature)))
> - signature-file)
> + (cond
> + ((and (null message-signature)
> + (eq force 0))
> + (save-excursion
> + (goto-char (point-max))
> + (not (re-search-backward message-signature-separator nil t))))
> + ((and (null message-signature)
> + force)
> + t)
> + ((functionp message-signature)
> + (funcall message-signature))
> + ((listp message-signature)
> + (eval message-signature))
> + (t message-signature)))
> + signature-file)
>      (setq signature
> - (cond ((stringp signature)
> - signature)
> - ((and (eq t signature) message-signature-file)
> - (setq signature-file
> - (if (and message-signature-directory
> - ;; don't actually use the signature directory
> - ;; if message-signature-file contains a path.
> - (not (file-name-directory
> - message-signature-file)))
> - (expand-file-name message-signature-file
> - message-signature-directory)
> - message-signature-file))
> - (file-exists-p signature-file))))
> + (cond ((stringp signature)
> + signature)
> + ((and (eq t signature) message-signature-file)
> + (setq signature-file
> + (if (and message-signature-directory
> + ;; don't actually use the signature directory
> + ;; if message-signature-file contains a path.
> + (not (file-name-directory
> + message-signature-file)))
> + (expand-file-name message-signature-file
> + message-signature-directory)
> + message-signature-file))
> + (file-exists-p signature-file))))
>      (when signature
>        (goto-char (point-max))
>        ;; Insert the signature.
>        (unless (bolp)
> - (newline))
> + (newline))
>        (when message-signature-insert-empty-line
> - (newline))
> + (newline))
>        (insert "-- ")
>        (newline)
>        (if (eq signature t)
> - (insert-file-contents signature-file)
> - (insert signature))
> + (insert-file-contents signature-file)
> + (insert signature))
>        (goto-char (point-max))
>        (or (bolp) (newline)))))
>
> @@ -3541,17 +3541,17 @@ and `low'."
>    (interactive)
>    (save-excursion
>      (let ((new "high")
> - cur)
> + cur)
>        (save-restriction
> - (message-narrow-to-headers)
> - (when (setq cur (message-fetch-field "Importance"))
> - (message-remove-header "Importance")
> - (setq new (cond ((string= cur "high")
> - "low")
> - ((string= cur "low")
> - "normal")
> - (t
> - "high")))))
> + (message-narrow-to-headers)
> + (when (setq cur (message-fetch-field "Importance"))
> + (message-remove-header "Importance")
> + (setq new (cond ((string= cur "high")
> + "low")
> + ((string= cur "low")
> + "normal")
> + (t
> + "high")))))
>        (message-goto-eoh)
>        (insert (format "Importance: %s\n" new)))))
>
> @@ -3565,9 +3565,9 @@ Note that this should not be used in 
> newsgroups."
>        (message-remove-header "Disposition-Notification-To"))
>      (message-goto-eoh)
>      (insert (format "Disposition-Notification-To: %s\n"
> - (or (message-field-value "Reply-To")
> - (message-field-value "From")
> - (message-make-from))))))
> + (or (message-field-value "Reply-To")
> + (message-field-value "From")
> + (message-make-from))))))
>
>  (defun message-elide-region (b e)
>    "Elide the text in the region.
> @@ -3593,19 +3593,19 @@ text was killed."
>        (prefix-numeric-value current-prefix-arg))))
>
>    (setq n (if (numberp n) (mod n 26) 13)) ;canonize N
> - (unless (or (zerop n) ; no action needed for a rot of 0
> - (= b e)) ; no region to rotate
> + (unless (or (zerop n) ; no action needed for a rot of 0
> + (= b e)) ; no region to rotate
>      ;; We build the table, if necessary.
>      (when (or (not message-caesar-translation-table)
> - (/= (aref message-caesar-translation-table ?a) (+ ?a n)))
> + (/= (aref message-caesar-translation-table ?a) (+ ?a n)))
>        (setq message-caesar-translation-table
> - (message-make-caesar-translation-table n)))
> + (message-make-caesar-translation-table n)))
>      (translate-region b e message-caesar-translation-table)))
>
>  (defun message-make-caesar-translation-table (n)
>    "Create a rot table with offset N."
>    (let ((i -1)
> - (table (make-string 256 0)))
> + (table (make-string 256 0)))
>      (while (< (cl-incf i) 256)
>        (aset table i i))
>      (concat
> @@ -3623,12 +3623,12 @@ Used to encode/decode possibly offensive 
> messages (commonly in rec.humor).
>  With prefix arg, specifies the number of places to rotate each 
>  letter forward.
>  Mail and USENET news headers are not rotated unless WIDE is 
>  non-nil."
>    (interactive (if current-prefix-arg
> - (list (prefix-numeric-value current-prefix-arg))
> - (list nil)))
> + (list (prefix-numeric-value current-prefix-arg))
> + (list nil)))
>    (save-excursion
>      (save-restriction
>        (when (and (not wide) (message-goto-body))
> - (narrow-to-region (point) (point-max)))
> + (narrow-to-region (point) (point-max)))
>        (message-caesar-region (point-min) (point-max) rotnum))))
>
>  (defun message-pipe-buffer-body (program)
> @@ -3636,7 +3636,7 @@ Mail and USENET news headers are not 
> rotated unless WIDE is non-nil."
>    (save-excursion
>      (save-restriction
>        (when (message-goto-body)
> - (narrow-to-region (point) (point-max)))
> + (narrow-to-region (point) (point-max)))
>        (shell-command-on-region
>         (point-min) (point-max) program nil t))))
>
> @@ -3649,20 +3649,20 @@ name, rather than giving an automatic 
> name."
>      (save-restriction
>        (goto-char (point-min))
>        (narrow-to-region (point)
> - (search-forward mail-header-separator nil 'end))
> + (search-forward mail-header-separator nil 'end))
>        (let* ((mail-to (or
> - (if (message-news-p) (message-fetch-field "Newsgroups")
> - (message-fetch-field "To"))
> - ""))
> - (mail-trimmed-to
> - (if (string-match "," mail-to)
> - (concat (substring mail-to 0 (match-beginning 0)) ", ...")
> - mail-to))
> - (name-default (concat "*message* " mail-trimmed-to))
> - (name (if enter-string
> - (read-string "New buffer name: " name-default)
> - name-default)))
> - (rename-buffer name t)))))
> + (if (message-news-p) (message-fetch-field "Newsgroups")
> + (message-fetch-field "To"))
> + ""))
> + (mail-trimmed-to
> + (if (string-match "," mail-to)
> + (concat (substring mail-to 0 (match-beginning 0)) ", ...")
> + mail-to))
> + (name-default (concat "*message* " mail-trimmed-to))
> + (name (if enter-string
> + (read-string "New buffer name: " name-default)
> + name-default)))
> + (rename-buffer name t)))))
>
>  (defun message-fill-yanked-message (&optional justifyp)
>    "Fill the paragraphs of a message yanked into this one.
> @@ -3686,30 +3686,30 @@ However, if `message-yank-prefix' is 
> non-nil, insert that prefix on each line."
>      ;; Remove unwanted headers.
>      (when message-ignored-cited-headers
>        (let (all-removed)
> - (save-restriction
> - (narrow-to-region
> - (goto-char start)
> - (if (search-forward "\n\n" nil t)
> - (1- (point))
> - (point)))
> - (message-remove-header message-ignored-cited-headers t)
> - (when (= (point-min) (point-max))
> - (setq all-removed t))
> - (goto-char (point-max)))
> - (if all-removed
> - (goto-char start)
> - (forward-line 1))))
> + (save-restriction
> + (narrow-to-region
> + (goto-char start)
> + (if (search-forward "\n\n" nil t)
> + (1- (point))
> + (point)))
> + (message-remove-header message-ignored-cited-headers t)
> + (when (= (point-min) (point-max))
> + (setq all-removed t))
> + (goto-char (point-max)))
> + (if all-removed
> + (goto-char start)
> + (forward-line 1))))
>      ;; Delete blank lines at the start of the buffer.
>      (while (and (point-min)
> - (eolp)
> - (not (eobp)))
> + (eolp)
> + (not (eobp)))
>        (message-delete-line))
>      ;; Delete blank lines at the end of the buffer.
>      (goto-char (point-max))
>      (unless (eq (preceding-char) ?\n)
>        (insert "\n"))
>      (while (and (zerop (forward-line -1))
> - (looking-at "$"))
> + (looking-at "$"))
>        (message-delete-line)))
>    ;; Do the indentation.
>    (if (null message-yank-prefix)
> @@ -3717,13 +3717,13 @@ However, if `message-yank-prefix' is 
> non-nil, insert that prefix on each line."
>      (save-excursion
>        (goto-char start)
>        (while (< (point) (or end (mark t)))
> - (cond ((looking-at ">")
> - (insert message-yank-cited-prefix))
> - ((looking-at "^$")
> - (insert message-yank-empty-prefix))
> - (t
> - (insert message-yank-prefix)))
> - (forward-line 1))))
> + (cond ((looking-at ">")
> + (insert message-yank-cited-prefix))
> + ((looking-at "^$")
> + (insert message-yank-empty-prefix))
> + (t
> + (insert message-yank-prefix)))
> + (forward-line 1))))
>    (goto-char start))
>
>  (defun message-remove-blank-cited-lines (&optional remove)
> @@ -3734,57 +3734,57 @@ To use this automatically, you may add 
> this function to
>  `gnus-message-setup-hook'."
>    (interactive "P")
>    (let ((citexp (concat "^\\("
> - (concat message-yank-cited-prefix "\\|")
> - message-yank-prefix
> - "\\)+ *\n")))
> + (concat message-yank-cited-prefix "\\|")
> + message-yank-prefix
> + "\\)+ *\n")))
>      (message "Removing `%s'" citexp)
>      (save-excursion
>        (message-goto-body)
>        (while (re-search-forward citexp nil t)
> - (replace-match (if remove "" "\n"))))))
> + (replace-match (if remove "" "\n"))))))
>
>  (defun message--yank-original-internal (arg)
>    (let ((modified (buffer-modified-p))
> - body-text)
> - (when (and message-reply-buffer
> - message-cite-function)
> - (when (equal message-cite-reply-position 'above)
> - (save-excursion
> - (setq body-text
> - (buffer-substring (message-goto-body)
> - (point-max)))
> - (delete-region (message-goto-body) (point-max))))
> - (if (bufferp message-reply-buffer)
> - (delete-windows-on message-reply-buffer t))
> - (push-mark (save-excursion
> - (cond
> - ((bufferp message-reply-buffer)
> - (insert-buffer-substring message-reply-buffer))
> - ((and (consp message-reply-buffer)
> - (functionp (car message-reply-buffer)))
> - (apply (car message-reply-buffer)
> - (cdr message-reply-buffer))))
> - (unless (bolp)
> - (insert ?\n))
> - (point)))
> - (unless arg
> - (funcall message-cite-function)
> - (unless (eq (char-before (mark t)) ?\n)
> - (let ((pt (point)))
> - (goto-char (mark t))
> - (insert-before-markers ?\n)
> - (goto-char pt))))
> - (pcase message-cite-reply-position
> - ('above
> - (message-goto-body)
> - (insert body-text)
> - (insert (if (bolp) "\n" "\n\n"))
> - (message-goto-body))
> - ('below
> - (message-goto-signature)))
> - ;; Add a `message-setup-very-last-hook' here?
> - ;; Add `gnus-article-highlight-citation' here?
> - (unless modified
> + body-text)
> + (when (and message-reply-buffer
> + message-cite-function)
> + (when (equal message-cite-reply-position 'above)
> + (save-excursion
> + (setq body-text
> + (buffer-substring (message-goto-body)
> + (point-max)))
> + (delete-region (message-goto-body) (point-max))))
> + (if (bufferp message-reply-buffer)
> + (delete-windows-on message-reply-buffer t))
> + (push-mark (save-excursion
> + (cond
> + ((bufferp message-reply-buffer)
> + (insert-buffer-substring message-reply-buffer))
> + ((and (consp message-reply-buffer)
> + (functionp (car message-reply-buffer)))
> + (apply (car message-reply-buffer)
> + (cdr message-reply-buffer))))
> + (unless (bolp)
> + (insert ?\n))
> + (point)))
> + (unless arg
> + (funcall message-cite-function)
> + (unless (eq (char-before (mark t)) ?\n)
> + (let ((pt (point)))
> + (goto-char (mark t))
> + (insert-before-markers ?\n)
> + (goto-char pt))))
> + (pcase message-cite-reply-position
> + ('above
> + (message-goto-body)
> + (insert body-text)
> + (insert (if (bolp) "\n" "\n\n"))
> + (message-goto-body))
> + ('below
> + (message-goto-signature)))
> + ;; Add a `message-setup-very-last-hook' here?
> + ;; Add `gnus-article-highlight-citation' here?
> + (unless modified
>          (setq message-checksum (message-checksum))))))
>
>  (defun message-yank-original (&optional arg)
> @@ -3801,8 +3801,8 @@ prefix, and don't delete any headers."
>    ;; eval the let forms contained in message-cite-style
>    (eval
>     `(let ,(if (symbolp message-cite-style)
> - (symbol-value message-cite-style)
> - message-cite-style)
> + (symbol-value message-cite-style)
> + message-cite-style)
>        (message--yank-original-internal ',arg))))
>
>  (defun message-yank-buffer (buffer)
> @@ -3817,10 +3817,10 @@ prefix, and don't delete any headers."
>    (let (buffers)
>      (save-current-buffer
>        (dolist (buffer (buffer-list t))
> - (set-buffer buffer)
> - (when (and (derived-mode-p 'message-mode)
> - (null message-sent-message-via))
> - (push (buffer-name buffer) buffers))))
> + (set-buffer buffer)
> + (when (and (derived-mode-p 'message-mode)
> + (null message-sent-message-via))
> + (push (buffer-name buffer) buffers))))
>      (nreverse buffers)))
>
>  (defun message-cite-original-1 (strip-signature)
> @@ -3830,60 +3830,60 @@ original message.
>
>  This function uses `mail-citation-hook' if that is non-nil."
>    (if (and (boundp 'mail-citation-hook)
> - mail-citation-hook)
> + mail-citation-hook)
>        (run-hooks 'mail-citation-hook)
>      (let* ((start (point))
> - (end (mark t))
> - (x-no-archive nil)
> - (functions
> - (when message-indent-citation-function
> - (if (listp message-indent-citation-function)
> - message-indent-citation-function
> - (list message-indent-citation-function))))
> - ;; This function may be called by `gnus-summary-yank-message' 
>  	   ;; and
> - ;; may insert a different article from the original. So, we 
>  	   ;; will
> - ;; modify the value of `message-reply-headers' with that 
>  	   ;; article.
> - (message-reply-headers
> - (save-restriction
> - (narrow-to-region start end)
> - (message-narrow-to-head-1)
> - (setq x-no-archive (message-fetch-field "x-no-archive"))
> - (vector 0
> - (or (message-fetch-field "subject") "none")
> - (or (message-fetch-field "from") "nobody")
> - (message-fetch-field "date")
> - (message-fetch-field "message-id" t)
> - (message-fetch-field "references")
> - 0 0 ""))))
> + (end (mark t))
> + (x-no-archive nil)
> + (functions
> + (when message-indent-citation-function
> + (if (listp message-indent-citation-function)
> + message-indent-citation-function
> + (list message-indent-citation-function))))
> + ;; This function may be called by `gnus-summary-yank-message' 
>         ;; and
> + ;; may insert a different article from the original. So, we 
>         ;; will
> + ;; modify the value of `message-reply-headers' with that 
>         ;; article.
> + (message-reply-headers
> + (save-restriction
> + (narrow-to-region start end)
> + (message-narrow-to-head-1)
> + (setq x-no-archive (message-fetch-field "x-no-archive"))
> + (vector 0
> + (or (message-fetch-field "subject") "none")
> + (or (message-fetch-field "from") "nobody")
> + (message-fetch-field "date")
> + (message-fetch-field "message-id" t)
> + (message-fetch-field "references")
> + 0 0 ""))))
>        (mml-quote-region start end)
>        (when strip-signature
> - ;; Allow undoing.
> - (undo-boundary)
> - (goto-char end)
> - (when (re-search-backward message-signature-separator start t)
> - ;; Also peel off any blank lines before the signature.
> - (forward-line -1)
> - (while (looking-at "^[ \t]*$")
> - (forward-line -1))
> - (forward-line 1)
> - (delete-region (point) end)
> - (unless (search-backward "\n\n" start t)
> - ;; Insert a blank line if it is peeled off.
> - (insert "\n"))))
> + ;; Allow undoing.
> + (undo-boundary)
> + (goto-char end)
> + (when (re-search-backward message-signature-separator start t)
> + ;; Also peel off any blank lines before the signature.
> + (forward-line -1)
> + (while (looking-at "^[ \t]*$")
> + (forward-line -1))
> + (forward-line 1)
> + (delete-region (point) end)
> + (unless (search-backward "\n\n" start t)
> + ;; Insert a blank line if it is peeled off.
> + (insert "\n"))))
>        (goto-char start)
>        (mapc 'funcall functions)
>        (when message-citation-line-function
> - (unless (bolp)
> - (insert "\n"))
> - (funcall message-citation-line-function))
> + (unless (bolp)
> + (insert "\n"))
> + (funcall message-citation-line-function))
>        (when (and x-no-archive
> - (not message-cite-articles-with-x-no-archive)
> - (string-match "yes" x-no-archive))
> - (undo-boundary)
> - (delete-region (point) (mark t))
> - (insert "> [Quoted text removed due to X-No-Archive]\n")
> - (push-mark)
> - (forward-line -1)))))
> + (not message-cite-articles-with-x-no-archive)
> + (string-match "yes" x-no-archive))
> + (undo-boundary)
> + (delete-region (point) (mark t))
> + (insert "> [Quoted text removed due to X-No-Archive]\n")
> + (push-mark)
> + (forward-line -1)))))
>
>  (defun message-cite-original ()
>    "Cite function in the standard Message manner."
> @@ -3915,89 +3915,89 @@ See `message-citation-line-format'."
>      (unless from
>        (setq from (mail-header-from message-reply-headers)))
>      (let* ((data (condition-case ()
> - (funcall (if (boundp 'gnus-extract-address-components)
> - gnus-extract-address-components
> - 'mail-extract-address-components)
> - from)
> - (error nil)))
> - (name (car data))
> - (fname name)
> - (lname name)
> - (net (car (cdr data)))
> - (name-or-net (or (car data)
> - (car (cdr data)) from))
> - (time
> - (when (string-match "%[^fnNFL]" message-citation-line-format)
> - (cond ((numberp (car-safe date)) date) ;; backward 
>  	      compatibility
> - (date (gnus-date-get-time date))
> - (t
> - (gnus-date-get-time
> - (setq date (mail-header-date message-reply-headers)))))))
> - (tz (or tz
> - (when (stringp date)
> - (nth 8 (parse-time-string date)))))
> - (flist
> - (let ((i ?A) lst)
> - (when (stringp name)
> - ;; Guess first name and last name:
> - (let* ((names (delq
> - nil
> - (mapcar
> - (lambda (x)
> - (if (string-match "\\`\\(\\w\\|[-.]\\)+\\'"
> - x)
> - x
> - nil))
> - (split-string name "[ \t]+"))))
> - (count (length names)))
> - (cond ((= count 1)
> - (setq fname (car names)
> - lname ""))
> - ((or (= count 2) (= count 3))
> - (setq fname (car names)
> - lname (mapconcat 'identity (cdr names) " ")))
> - ((> count 3)
> - (setq fname (mapconcat 'identity
> - (butlast names (- count 2))
> - " ")
> - lname (mapconcat 'identity
> - (nthcdr 2 names)
> - " "))))
> + (funcall (if (boundp 'gnus-extract-address-components)
> + gnus-extract-address-components
> + 'mail-extract-address-components)
> + from)
> + (error nil)))
> + (name (car data))
> + (fname name)
> + (lname name)
> + (net (car (cdr data)))
> + (name-or-net (or (car data)
> + (car (cdr data)) from))
> + (time
> + (when (string-match "%[^fnNFL]" message-citation-line-format)
> + (cond ((numberp (car-safe date)) date) ;; backward 
>            compatibility
> + (date (gnus-date-get-time date))
> + (t
> + (gnus-date-get-time
> + (setq date (mail-header-date message-reply-headers)))))))
> + (tz (or tz
> + (when (stringp date)
> + (nth 8 (parse-time-string date)))))
> + (flist
> + (let ((i ?A) lst)
> + (when (stringp name)
> + ;; Guess first name and last name:
> + (let* ((names (delq
> + nil
> + (mapcar
> + (lambda (x)
> + (if (string-match "\\`\\(\\w\\|[-.]\\)+\\'"
> + x)
> + x
> + nil))
> + (split-string name "[ \t]+"))))
> + (count (length names)))
> + (cond ((= count 1)
> + (setq fname (car names)
> + lname ""))
> + ((or (= count 2) (= count 3))
> + (setq fname (car names)
> + lname (mapconcat 'identity (cdr names) " ")))
> + ((> count 3)
> + (setq fname (mapconcat 'identity
> + (butlast names (- count 2))
> + " ")
> + lname (mapconcat 'identity
> + (nthcdr 2 names)
> + " "))))
>                    (when (string-match "\\(.*\\),\\'" fname)
>                      (let ((newlname (match-string 1 fname)))
>                        (setq fname lname lname newlname)))))
> - ;; The following letters are not used in `format-time-string':
> - (push ?E lst) (push "<E>" lst)
> - (push ?F lst) (push (or fname name-or-net) lst)
> - ;; We might want to use "" instead of "<X>" later.
> - (push ?J lst) (push "<J>" lst)
> - (push ?K lst) (push "<K>" lst)
> - (push ?L lst) (push lname lst)
> - (push ?N lst) (push name-or-net lst)
> - (push ?O lst) (push "<O>" lst)
> - (push ?P lst) (push "<P>" lst)
> - (push ?Q lst) (push "<Q>" lst)
> - (push ?f lst) (push from lst)
> - (push ?i lst) (push "<i>" lst)
> - (push ?n lst) (push net lst)
> - (push ?o lst) (push "<o>" lst)
> - (push ?q lst) (push "<q>" lst)
> - (push ?t lst) (push "<t>" lst)
> - (push ?v lst) (push "<v>" lst)
> - ;; Delegate the rest to `format-time-string':
> - (while (<= i ?z)
> - (when (and (not (memq i lst))
> - ;; Skip (Z,a)
> - (or (<= i ?Z)
> - (>= i ?a)))
> - (push i lst)
> - (push (condition-case nil
> - (format-time-string (format "%%%c" i) time tz)
> - (error (format ">%c<" i)))
> - lst))
> - (setq i (1+ i)))
> - (reverse lst)))
> - (spec (apply 'format-spec-make flist)))
> + ;; The following letters are not used in `format-time-string':
> + (push ?E lst) (push "<E>" lst)
> + (push ?F lst) (push (or fname name-or-net) lst)
> + ;; We might want to use "" instead of "<X>" later.
> + (push ?J lst) (push "<J>" lst)
> + (push ?K lst) (push "<K>" lst)
> + (push ?L lst) (push lname lst)
> + (push ?N lst) (push name-or-net lst)
> + (push ?O lst) (push "<O>" lst)
> + (push ?P lst) (push "<P>" lst)
> + (push ?Q lst) (push "<Q>" lst)
> + (push ?f lst) (push from lst)
> + (push ?i lst) (push "<i>" lst)
> + (push ?n lst) (push net lst)
> + (push ?o lst) (push "<o>" lst)
> + (push ?q lst) (push "<q>" lst)
> + (push ?t lst) (push "<t>" lst)
> + (push ?v lst) (push "<v>" lst)
> + ;; Delegate the rest to `format-time-string':
> + (while (<= i ?z)
> + (when (and (not (memq i lst))
> + ;; Skip (Z,a)
> + (or (<= i ?Z)
> + (>= i ?a)))
> + (push i lst)
> + (push (condition-case nil
> + (format-time-string (format "%%%c" i) time tz)
> + (error (format ">%c<" i)))
> + lst))
> + (setq i (1+ i)))
> + (reverse lst)))
> + (spec (apply 'format-spec-make flist)))
>        (insert (format-spec message-citation-line-format spec)))
>      (newline)))
>
> @@ -4019,27 +4019,27 @@ This function strips off the signature 
> from the original message."
>        (narrow-to-region
>         (goto-char (point-min))
>         (progn
> - (re-search-forward
> - (concat "^" (regexp-quote mail-header-separator) "$"))
> - (match-beginning 0)))
> + (re-search-forward
> + (concat "^" (regexp-quote mail-header-separator) "$"))
> + (match-beginning 0)))
>        (goto-char (point-min))
>        (if (re-search-forward (concat "^" (regexp-quote header) 
>        ":") nil t)
> - (progn
> - (re-search-forward "^[^ \t]" nil 'move)
> - (beginning-of-line)
> - (skip-chars-backward "\n")
> - t)
> - (while (and afters
> - (not (re-search-forward
> - (concat "^" (regexp-quote (car afters)) ":")
> - nil t)))
> - (pop afters))
> - (when afters
> - (re-search-forward "^[^ \t]" nil 'move)
> - (beginning-of-line))
> - (insert header ": \n")
> - (forward-char -1)
> - nil))))
> + (progn
> + (re-search-forward "^[^ \t]" nil 'move)
> + (beginning-of-line)
> + (skip-chars-backward "\n")
> + t)
> + (while (and afters
> + (not (re-search-forward
> + (concat "^" (regexp-quote (car afters)) ":")
> + nil t)))
> + (pop afters))
> + (when afters
> + (re-search-forward "^[^ \t]" nil 'move)
> + (beginning-of-line))
> + (insert header ": \n")
> + (forward-char -1)
> + nil))))
>
>  
>
> @@ -4053,12 +4053,12 @@ The usage of ARG is defined by the 
> instance that called Message.
>  It should typically alter the sending method in some way or 
>  other."
>    (interactive "P")
>    (let ((buf (current-buffer))
> - (actions message-exit-actions))
> + (actions message-exit-actions))
>      (when (and (message-send arg)
> - (buffer-name buf))
> + (buffer-name buf))
>        (message-bury buf)
>        (if message-kill-buffer-on-exit
> - (kill-buffer buf))
> + (kill-buffer buf))
>        (message-do-actions actions)
>        t)))
>
> @@ -4076,32 +4076,32 @@ Instead, just auto-save the buffer and 
> then bury it."
>    "Kill the current buffer."
>    (interactive)
>    (when (or (not (buffer-modified-p))
> - (not message-kill-buffer-query)
> - (yes-or-no-p "Message modified; kill anyway? "))
> + (not message-kill-buffer-query)
> + (yes-or-no-p "Message modified; kill anyway? "))
>      (let ((actions message-kill-actions)
> - (draft-article message-draft-article)
> - (auto-save-file-name buffer-auto-save-file-name)
> - (file-name buffer-file-name)
> - (modified (buffer-modified-p)))
> + (draft-article message-draft-article)
> + (auto-save-file-name buffer-auto-save-file-name)
> + (file-name buffer-file-name)
> + (modified (buffer-modified-p)))
>        (setq buffer-file-name nil)
>        (kill-buffer (current-buffer))
> - (when (and (or (and auto-save-file-name
> - (file-exists-p auto-save-file-name))
> - (and file-name
> - (file-exists-p file-name)))
> - (progn
> - ;; If the message buffer has lived in a dedicated window,
> - ;; `kill-buffer' has killed the frame. Thus the
> - ;; `yes-or-no-p' may show up in a lowered frame. Make sure
> - ;; that the user can see the question by raising the
> - ;; current frame:
> - (raise-frame)
> - (yes-or-no-p (format "Remove the backup file%s? "
> - (if modified " too" "")))))
> - (ignore-errors
> - (delete-file auto-save-file-name))
> - (let ((message-draft-article draft-article))
> - (message-disassociate-draft)))
> + (when (and (and auto-save-file-name
> + (file-exists-p auto-save-file-name))
> + (and file-name
> + (file-exists-p file-name))
> + (progn
> + ;; If the message buffer has lived in a dedicated window,
> + ;; `kill-buffer' has killed the frame. Thus the
> + ;; `yes-or-no-p' may show up in a lowered frame. Make sure
> + ;; that the user can see the question by raising the
> + ;; current frame:
> + (raise-frame)
> + (yes-or-no-p (format "Remove the backup file%s? "
> + (if modified " too" "")))))
> + (ignore-errors
> + (delete-file auto-save-file-name))
> + (let ((message-draft-article draft-article))
> + (message-disassociate-draft)))
>        (message-do-actions actions))))
>
>  (defun message-bury (buffer)
> @@ -4133,52 +4133,52 @@ It should typically alter the sending 
> method in some way or other."
>    (mml-secure-bcc-is-safe)
>    (when message-confirm-send
>      (or (y-or-n-p "Send message? ")
> - (keyboard-quit)))
> + (keyboard-quit)))
>    (message message-sending-message)
>    (let ((alist message-send-method-alist)
> - (success t)
> - elem sent dont-barf-on-no-method
> - (message-options message-options))
> + (success t)
> + elem sent dont-barf-on-no-method
> + (message-options message-options))
>      (message-options-set-recipient)
>      (while (and success
> - (setq elem (pop alist)))
> + (setq elem (pop alist)))
>        (when (funcall (cadr elem))
> - (when (and (or (not (memq (car elem)
> - message-sent-message-via))
> - (message-fetch-field "supersedes")
> - (if (or (message-gnksa-enable-p 'multiple-copies)
> - (not (eq (car elem) 'news)))
> - (y-or-n-p
> - (format
> - "Already sent message via %s; resend? "
> - (car elem)))
> - (error "Denied posting -- multiple copies")))
> - (setq success (funcall (caddr elem) arg)))
> - (setq sent t))))
> + (when (and (or (not (memq (car elem)
> + message-sent-message-via))
> + (message-fetch-field "supersedes")
> + (if (or (message-gnksa-enable-p 'multiple-copies)
> + (not (eq (car elem) 'news)))
> + (y-or-n-p
> + (format
> + "Already sent message via %s; resend? "
> + (car elem)))
> + (error "Denied posting -- multiple copies")))
> + (setq success (funcall (caddr elem) arg)))
> + (setq sent t))))
>      (unless (or sent
> - (not success)
> - (let ((fcc (message-fetch-field "Fcc"))
> - (gcc (message-fetch-field "Gcc")))
> - (when (or fcc gcc)
> - (or (eq message-allow-no-recipients 'always)
> - (and (not (eq message-allow-no-recipients 'never))
> - (setq dont-barf-on-no-method
> - (y-or-n-p
> - (format "No receiver, perform %s anyway? "
> - (cond ((and fcc gcc) "Fcc and Gcc")
> - (fcc "Fcc")
> - (t "Gcc"))))))))))
> + (not success)
> + (let ((fcc (message-fetch-field "Fcc"))
> + (gcc (message-fetch-field "Gcc")))
> + (when (or fcc gcc)
> + (or (eq message-allow-no-recipients 'always)
> + (and (not (eq message-allow-no-recipients 'never))
> + (setq dont-barf-on-no-method
> + (y-or-n-p
> + (format "No receiver, perform %s anyway? "
> + (cond ((and fcc gcc) "Fcc and Gcc")
> + (fcc "Fcc")
> + (t "Gcc"))))))))))
>        (error "No methods specified to send by"))
>      (when (or dont-barf-on-no-method
> - (and success sent))
> + (and success sent))
>        (message-do-fcc)
>        (save-excursion
> - (run-hooks 'message-sent-hook))
> + (run-hooks 'message-sent-hook))
>        (message "Sending...done")
>        ;; Do ecomplete address snarfing.
>        (when (and (message-mail-alias-type-p 'ecomplete)
> - (not message-inhibit-ecomplete))
> - (message-put-addresses-in-ecomplete))
> + (not message-inhibit-ecomplete))
> + (message-put-addresses-in-ecomplete))
>        ;; Mark the buffer as unmodified and delete auto-save.
>        (set-buffer-modified-p nil)
>        (delete-auto-save-file-if-necessary t)
> @@ -4201,7 +4201,7 @@ It should typically alter the sending 
> method in some way or other."
>    "Eval FORMS if TYPE is to be checked."
>    `(or (message-check-element ,type)
>         (save-excursion
> - ,@forms)))
> + ,@forms)))
>
>  (put 'message-check 'lisp-indent-function 1)
>  (put 'message-check 'edebug-form-spec '(form body))
> @@ -4217,19 +4217,19 @@ not have PROP."
>      (setq end (point-max)))
>    (let (next regions)
>      (if reverse
> - (while (and start
> - (setq start (text-property-any start end prop nil)))
> - (setq next (next-single-property-change start prop nil end))
> - (push (cons start (or next end)) regions)
> - (setq start next))
> + (while (and start
> + (setq start (text-property-any start end prop nil)))
> + (setq next (next-single-property-change start prop nil end))
> + (push (cons start (or next end)) regions)
> + (setq start next))
>        (while (and start
> - (or (get-text-property start prop)
> - (and (setq start (next-single-property-change
> - start prop nil end))
> - (get-text-property start prop))))
> - (setq next (text-property-any start end prop nil))
> - (push (cons start (or next end)) regions)
> - (setq start next)))
> + (or (get-text-property start prop)
> + (and (setq start (next-single-property-change
> + start prop nil end))
> + (get-text-property start prop))))
> + (setq next (text-property-any start end prop nil))
> + (push (cons start (or next end)) regions)
> + (setq start next)))
>      (nreverse regions)))
>
>  (defcustom message-bogus-addresses
> @@ -4243,19 +4243,19 @@ conformance."
>    :version "26.1" ; @@ -> @.*@
>    :group 'message-headers
>    :type '(choice
> - (const :tag "None" nil)
> - (list
> - (set :inline t
> - (const "noreply")
> - (const "nospam")
> - (const "invalid")
> - (const :tag "duplicate @" "@.*@")
> - (const :tag "non-ascii local part" "[^[:ascii:]].*@")
> - (const :tag "`_' in domain part" "@.*_")
> - (const :tag "whitespace" "[ \t]"))
> - (repeat :inline t
> - :tag "Other"
> - (regexp)))))
> + (const :tag "None" nil)
> + (list
> + (set :inline t
> + (const "noreply")
> + (const "nospam")
> + (const "invalid")
> + (const :tag "duplicate @" "@.*@")
> + (const :tag "non-ascii local part" "[^[:ascii:]].*@")
> + (const :tag "`_' in domain part" "@.*_")
> + (const :tag "whitespace" "[ \t]"))
> + (repeat :inline t
> + :tag "Other"
> + (regexp)))))
>
>  (defun message-fix-before-sending ()
>    "Do various things to make the message nice before sending 
>    it."
> @@ -4272,83 +4272,83 @@ conformance."
>    ;; is clobbered by an after-change hook anyhow.
>    (message-check 'invisible-text
>      (let ((regions (message-text-with-property 'invisible))
> - from to)
> + from to)
>        (when regions
> - (while regions
> - (setq from (caar regions)
> - to (cdar regions)
> - regions (cdr regions))
> - (put-text-property from to 'invisible nil)
> - (overlay-put (make-overlay from to) 'face 'highlight))
> - (unless (yes-or-no-p
> - "Invisible text found and made visible; continue sending? ")
> - (error "Invisible text found and made visible")))))
> + (while regions
> + (setq from (caar regions)
> + to (cdar regions)
> + regions (cdr regions))
> + (put-text-property from to 'invisible nil)
> + (overlay-put (make-overlay from to) 'face 'highlight))
> + (unless (yes-or-no-p
> + "Invisible text found and made visible; continue sending? ")
> + (error "Invisible text found and made visible")))))
>    (message-check 'illegible-text
>      (let (char found choice nul-chars)
>        (message-goto-body)
>        (setq nul-chars (save-excursion
> - (search-forward "\000" nil t)))
> + (search-forward "\000" nil t)))
>        (while (progn
> - (skip-chars-forward mm-7bit-chars)
> - (when (get-text-property (point) 'no-illegible-text)
> - ;; There is a signed or encrypted raw message part
> - ;; that is considered to be safe.
> - (goto-char (or (next-single-property-change
> - (point) 'no-illegible-text)
> - (point-max))))
> - (setq char (char-after)))
> - (when (or (< char 128)
> - (and enable-multibyte-characters
> - (memq (char-charset char)
> - '(eight-bit-control eight-bit-graphic
> - ;; Emacs 23, Bug#1770:
> - eight-bit
> - control-1))
> - (not (get-text-property
> - (point) 'untranslated-utf-8))))
> - (overlay-put (make-overlay (point) (1+ (point))) 'face 
>  	  'highlight)
> - (setq found t))
> - (forward-char))
> + (skip-chars-forward mm-7bit-chars)
> + (when (get-text-property (point) 'no-illegible-text)
> + ;; There is a signed or encrypted raw message part
> + ;; that is considered to be safe.
> + (goto-char (or (next-single-property-change
> + (point) 'no-illegible-text)
> + (point-max))))
> + (setq char (char-after)))
> + (when (or (< char 128)
> + (and enable-multibyte-characters
> + (memq (char-charset char)
> + '(eight-bit-control eight-bit-graphic
> + ;; Emacs 23, Bug#1770:
> + eight-bit
> + control-1))
> + (not (get-text-property
> + (point) 'untranslated-utf-8))))
> + (overlay-put (make-overlay (point) (1+ (point))) 'face 
>        'highlight)
> + (setq found t))
> + (forward-char))
>        (when found
> - (setq choice
> - (car
> - (read-multiple-choice
> - (if nul-chars
> - "NUL characters found, which may cause problems. Continue 
>  		    sending?"
> - "Non-printable characters found. Continue sending?")
> - `((?d "delete" "Remove non-printable characters and send")
> - (?r "replace"
> - ,(format
> - "Replace non-printable characters with \"%s\" and send"
> - message-replacement-char))
> - (?s "send" "Send as is without removing anything")
> - (?e "edit" "Continue editing")))))
> - (if (eq choice ?e)
> - (error "Non-printable characters"))
> - (message-goto-body)
> - (skip-chars-forward mm-7bit-chars)
> - (while (not (eobp))
> - (when (let ((char (char-after)))
> - (or (< char 128)
> - (and enable-multibyte-characters
> - ;; FIXME: Wrong for Emacs 23 (unicode) and for
> - ;; things like undecodable utf-8 (in Emacs 21?).
> - ;; Should at least use find-coding-systems-region.
> - ;; -- fx
> - (memq (char-charset char)
> - '(eight-bit-control eight-bit-graphic
> - ;; Emacs 23, Bug#1770:
> - eight-bit
> - control-1))
> - (not (get-text-property
> - (point) 'untranslated-utf-8)))))
> - (if (eq choice ?i)
> - (message-kill-all-overlays)
> - (delete-char 1)
> - (when (eq choice ?r)
> - (insert message-replacement-char))))
> - (forward-char)
> - (skip-chars-forward mm-7bit-chars)))))
> + (setq choice
> + (car
> + (read-multiple-choice
> + (if nul-chars
> + "NUL characters found, which may cause problems. Continue 
>              sending?"
> + "Non-printable characters found. Continue sending?")
> + `((?d "delete" "Remove non-printable characters and send")
> + (?r "replace"
> + ,(format
> + "Replace non-printable characters with \"%s\" and send"
> + message-replacement-char))
> + (?s "send" "Send as is without removing anything")
> + (?e "edit" "Continue editing")))))
> + (if (eq choice ?e)
> + (error "Non-printable characters"))
> + (message-goto-body)
> + (skip-chars-forward mm-7bit-chars)
> + (while (not (eobp))
> + (when (let ((char (char-after)))
> + (or (< char 128)
> + (and enable-multibyte-characters
> + ;; FIXME: Wrong for Emacs 23 (unicode) and for
> + ;; things like undecodable utf-8 (in Emacs 21?).
> + ;; Should at least use find-coding-systems-region.
> + ;; -- fx
> + (memq (char-charset char)
> + '(eight-bit-control eight-bit-graphic
> + ;; Emacs 23, Bug#1770:
> + eight-bit
> + control-1))
> + (not (get-text-property
> + (point) 'untranslated-utf-8)))))
> + (if (eq choice ?i)
> + (message-kill-all-overlays)
> + (delete-char 1)
> + (when (eq choice ?r)
> + (insert message-replacement-char))))
> + (forward-char)
> + (skip-chars-forward mm-7bit-chars)))))
>    (message-check 'bogus-recipient
>      ;; Warn before sending a mail to an invalid address.
>      (message-check-recipients)))
> @@ -4364,18 +4364,18 @@ An address might be bogus if there's a 
> matching entry in
>    ;; FIXME: How about "foo@subdomain", when the MTA adds 
>    ;; ".domain.tld"?
>    (let (found)
>      (mapc (lambda (address)
> - (setq address (or (cadr address) ""))
> - (when (or (string= "" address)
> - (and message-bogus-addresses
> - (let ((re
> - (if (listp message-bogus-addresses)
> - (mapconcat 'identity
> - message-bogus-addresses
> - "\\|")
> - message-bogus-addresses)))
> - (string-match re address))))
> + (setq address (or (cadr address) ""))
> + (when (or (string= "" address)
> + (and message-bogus-addresses
> + (let ((re
> + (if (listp message-bogus-addresses)
> + (mapconcat 'identity
> + message-bogus-addresses
> + "\\|")
> + message-bogus-addresses)))
> + (string-match re address))))
>                (push address found)))
> - (mail-extract-address-components recipients t))
> + (mail-extract-address-components recipients t))
>      found))
>
>  (defun message-check-recipients ()
> @@ -4387,23 +4387,23 @@ This function could be useful in 
> `message-setup-hook'."
>      (message-narrow-to-headers)
>      (dolist (hdr '("To" "Cc" "Bcc"))
>        (let ((addr (message-fetch-field hdr)))
> - (when (stringp addr)
> - (dolist (bog (message-bogus-recipient-p addr))
> - (and bog
> - (not (y-or-n-p
> - (format-message
> - "Address `%s'%s might be bogus. Continue? "
> - bog
> - ;; If the encoded version of the email address
> - ;; is different from the unencoded version,
> - ;; then we likely have invisible characters or
> - ;; the like. Display the encoded version,
> - ;; too.
> - (let ((encoded (rfc2047-encode-string bog)))
> - (if (string= encoded bog)
> - ""
> - (format " (%s)" encoded))))))
> - (user-error "Bogus address"))))))))
> + (when (stringp addr)
> + (dolist (bog (message-bogus-recipient-p addr))
> + (and bog
> + (not (y-or-n-p
> + (format-message
> + "Address `%s'%s might be bogus. Continue? "
> + bog
> + ;; If the encoded version of the email address
> + ;; is different from the unencoded version,
> + ;; then we likely have invisible characters or
> + ;; the like. Display the encoded version,
> + ;; too.
> + (let ((encoded (rfc2047-encode-string bog)))
> + (if (string= encoded bog)
> + ""
> + (format " (%s)" encoded))))))
> + (user-error "Bogus address"))))))))
>
>  (custom-add-option 'message-setup-hook 
>  'message-check-recipients)
>
> @@ -4411,14 +4411,14 @@ This function could be useful in 
> `message-setup-hook'."
>    "Add ACTION to be performed when doing an exit of type 
>    TYPES."
>    (while types
>      (add-to-list (intern (format "message-%s-actions" (pop 
>      types)))
> - action)))
> + action)))
>
>  (defun message-delete-action (action &rest types)
>    "Delete ACTION from lists of actions performed when doing an 
>    exit of type TYPES."
>    (let (var)
>      (while types
>        (set (setq var (intern (format "message-%s-actions" (pop 
>        types))))
> - (delq action (symbol-value var))))))
> + (delq action (symbol-value var))))))
>
>  (defun message-do-actions (actions)
>    "Perform all actions in ACTIONS."
> @@ -4428,10 +4428,10 @@ This function could be useful in 
> `message-setup-hook'."
>        (cond
>         ;; A simple function.
>         ((functionp action)
> - (funcall action))
> + (funcall action))
>         ;; Something to be evalled.
>         (t
> - (eval action))))))
> + (eval action))))))
>
>  (defun message-send-mail-partially ()
>    "Send mail as message/partial."
> @@ -4442,66 +4442,66 @@ This function could be useful in 
> `message-setup-hook'."
>    (replace-match "\n")
>    (run-hooks 'message-send-mail-hook)
>    (let ((p (goto-char (point-min)))
> - (tembuf (message-generate-new-buffer-clone-locals " message 
>  	temp"))
> - (curbuf (current-buffer))
> - (id (message-make-message-id)) (n 1)
> + (tembuf (message-generate-new-buffer-clone-locals " message 
>      temp"))
> + (curbuf (current-buffer))
> + (id (message-make-message-id)) (n 1)
>          plist total header)
>      (while (not (eobp))
>        (if (< (point-max) (+ p 
>        message-send-mail-partially-limit))
> - (goto-char (point-max))
> - (goto-char (+ p message-send-mail-partially-limit))
> - (beginning-of-line)
> - (if (<= (point) p) (forward-line 1))) ;; In case of bad 
>  	message.
> + (goto-char (point-max))
> + (goto-char (+ p message-send-mail-partially-limit))
> + (beginning-of-line)
> + (if (<= (point) p) (forward-line 1))) ;; In case of bad 
>      message.
>        (push p plist)
>        (setq p (point)))
>      (setq total (length plist))
>      (push (point-max) plist)
>      (setq plist (nreverse plist))
>      (unwind-protect
> - (save-excursion
> - (setq p (pop plist))
> - (while plist
> - (set-buffer curbuf)
> - (copy-to-buffer tembuf p (car plist))
> - (set-buffer tembuf)
> - (goto-char (point-min))
> - (if header
> - (progn
> - (goto-char (point-min))
> - (narrow-to-region (point) (point))
> - (insert header))
> - (message-goto-eoh)
> - (setq header (buffer-substring (point-min) (point)))
> - (goto-char (point-min))
> - (narrow-to-region (point) (point))
> - (insert header)
> - (message-remove-header "Mime-Version")
> - (message-remove-header "Content-Type")
> - (message-remove-header "Content-Transfer-Encoding")
> - (message-remove-header "Message-ID")
> - (message-remove-header "Lines")
> - (goto-char (point-max))
> - (insert "Mime-Version: 1.0\n")
> - (setq header (buffer-string)))
> - (goto-char (point-max))
> - (insert (format "Content-Type: message/partial; id=\"%s\"; 
>  	    number=%d; total=%d\n\n"
> - id n total))
> - (forward-char -1)
> - (let ((mail-header-separator ""))
> - (when (memq 'Message-ID message-required-mail-headers)
> - (insert "Message-ID: " (message-make-message-id) "\n"))
> - (when (memq 'Lines message-required-mail-headers)
> - (insert "Lines: " (message-make-lines) "\n"))
> - (message-goto-subject)
> - (end-of-line)
> - (insert (format " (%d/%d)" n total))
> - (widen)
> - (if message-send-mail-real-function
> - (funcall message-send-mail-real-function)
> - (message-multi-smtp-send-mail)))
> - (setq n (+ n 1))
> - (setq p (pop plist))
> - (erase-buffer)))
> + (save-excursion
> + (setq p (pop plist))
> + (while plist
> + (set-buffer curbuf)
> + (copy-to-buffer tembuf p (car plist))
> + (set-buffer tembuf)
> + (goto-char (point-min))
> + (if header
> + (progn
> + (goto-char (point-min))
> + (narrow-to-region (point) (point))
> + (insert header))
> + (message-goto-eoh)
> + (setq header (buffer-substring (point-min) (point)))
> + (goto-char (point-min))
> + (narrow-to-region (point) (point))
> + (insert header)
> + (message-remove-header "Mime-Version")
> + (message-remove-header "Content-Type")
> + (message-remove-header "Content-Transfer-Encoding")
> + (message-remove-header "Message-ID")
> + (message-remove-header "Lines")
> + (goto-char (point-max))
> + (insert "Mime-Version: 1.0\n")
> + (setq header (buffer-string)))
> + (goto-char (point-max))
> + (insert (format "Content-Type: message/partial; id=\"%s\"; 
>          number=%d; total=%d\n\n"
> + id n total))
> + (forward-char -1)
> + (let ((mail-header-separator ""))
> + (when (memq 'Message-ID message-required-mail-headers)
> + (insert "Message-ID: " (message-make-message-id) "\n"))
> + (when (memq 'Lines message-required-mail-headers)
> + (insert "Lines: " (message-make-lines) "\n"))
> + (message-goto-subject)
> + (end-of-line)
> + (insert (format " (%d/%d)" n total))
> + (widen)
> + (if message-send-mail-real-function
> + (funcall message-send-mail-real-function)
> + (message-multi-smtp-send-mail)))
> + (setq n (+ n 1))
> + (setq p (pop plist))
> + (erase-buffer)))
>        (kill-buffer tembuf))))
>
>  (declare-function hashcash-wait-async "hashcash" (&optional 
>  buffer))
> @@ -4509,29 +4509,29 @@ This function could be useful in 
> `message-setup-hook'."
>  (defun message-send-mail (&optional _)
>    (require 'mail-utils)
>    (let* ((tembuf (message-generate-new-buffer-clone-locals " 
>    message temp"))
> - (case-fold-search nil)
> - (news (message-news-p))
> - (mailbuf (current-buffer))
> - (message-this-is-mail t)
> - ;; gnus-setup-posting-charset is autoloaded in mml.el (FIXME
> - ;; maybe it should not be), which this file requires. Hence
> - ;; the fboundp test is always true. Loading it from gnus-msg
> - ;; loads many Gnus files (Bug#5642). If
> - ;; gnus-group-posting-charset-alist hasn't been customized,
> - ;; this is just going to return nil anyway. FIXME it would
> - ;; be good to improve this further, because even if g-g-p-c-a
> - ;; has been customized, that is likely to just be for news.
> - ;; Eg either move the definition from gnus-msg, or separate 
>  	 ;; out
> - ;; the mail and news parts.
> - (message-posting-charset
> - (if (and (fboundp 'gnus-setup-posting-charset)
> - (boundp 'gnus-group-posting-charset-alist))
> - (gnus-setup-posting-charset nil)
> - message-posting-charset))
> - (headers message-required-mail-headers)
> - options)
> + (case-fold-search nil)
> + (news (message-news-p))
> + (mailbuf (current-buffer))
> + (message-this-is-mail t)
> + ;; gnus-setup-posting-charset is autoloaded in mml.el (FIXME
> + ;; maybe it should not be), which this file requires. Hence
> + ;; the fboundp test is always true. Loading it from gnus-msg
> + ;; loads many Gnus files (Bug#5642). If
> + ;; gnus-group-posting-charset-alist hasn't been customized,
> + ;; this is just going to return nil anyway. FIXME it would
> + ;; be good to improve this further, because even if g-g-p-c-a
> + ;; has been customized, that is likely to just be for news.
> + ;; Eg either move the definition from gnus-msg, or separate 
>       ;; out
> + ;; the mail and news parts.
> + (message-posting-charset
> + (if (and (fboundp 'gnus-setup-posting-charset)
> + (boundp 'gnus-group-posting-charset-alist))
> + (gnus-setup-posting-charset nil)
> + message-posting-charset))
> + (headers message-required-mail-headers)
> + options)
>      (when (and message-generate-hashcash
> - (not (eq message-generate-hashcash 'opportunistic)))
> + (not (eq message-generate-hashcash 'opportunistic)))
>        (message "Generating hashcash...")
>        (require 'hashcash)
>        ;; Wait for calculations already started to finish...
> @@ -4544,28 +4544,28 @@ This function could be useful in 
> `message-setup-hook'."
>        (message-narrow-to-headers)
>        ;; Generate the Mail-Followup-To header if the header is 
>        ;; not there...
>        (if (and (message-subscribed-p)
> - (not (mail-fetch-field "mail-followup-to")))
> - (setq headers
> - (cons
> - (cons "Mail-Followup-To" (message-make-mail-followup-to))
> - message-required-mail-headers))
> - ;; otherwise, delete the MFT header if the field is empty
> - (when (equal "" (mail-fetch-field "mail-followup-to"))
> - (message-remove-header "^Mail-Followup-To:")))
> + (not (mail-fetch-field "mail-followup-to")))
> + (setq headers
> + (cons
> + (cons "Mail-Followup-To" (message-make-mail-followup-to))
> + message-required-mail-headers))
> + ;; otherwise, delete the MFT header if the field is empty
> + (when (equal "" (mail-fetch-field "mail-followup-to"))
> + (message-remove-header "^Mail-Followup-To:")))
>        ;; Insert some headers.
>        (let ((message-deletable-headers
> - (if news nil message-deletable-headers)))
> - (message-generate-headers headers))
> + (if news nil message-deletable-headers)))
> + (message-generate-headers headers))
>        ;; Check continuation headers.
>        (message-check 'continuation-headers
> - (goto-char (point-min))
> - (while (re-search-forward "^[^ \t\n][^ \t\n:]*[ \t\n]" nil t)
> - (goto-char (match-beginning 0))
> - (if (y-or-n-p "Fix continuation lines? ")
> - (insert " ")
> - (forward-line 1)
> - (unless (y-or-n-p "Send anyway? ")
> - (error "Failed to send the message")))))
> + (goto-char (point-min))
> + (while (re-search-forward "^[^ \t\n][^ \t\n:]*[ \t\n]" nil t)
> + (goto-char (match-beginning 0))
> + (if (y-or-n-p "Fix continuation lines? ")
> + (insert " ")
> + (forward-line 1)
> + (unless (y-or-n-p "Send anyway? ")
> + (error "Failed to send the message")))))
>        ;; Fold too-long header lines. They should be no longer 
>        ;; than
>        ;; 998 octets long.
>        (message--fold-long-headers)
> @@ -4573,76 +4573,76 @@ This function could be useful in 
> `message-setup-hook'."
>        (run-hooks 'message-header-hook))
>      (setq options message-options)
>      (unwind-protect
> - (with-current-buffer tembuf
> - (erase-buffer)
> - (setq message-options options)
> - ;; Avoid copying text props (except hard newlines).
> - (insert (with-current-buffer mailbuf
> - (mml-buffer-substring-no-properties-except-some
> - (point-min) (point-max))))
> - ;; Remove some headers.
> - (message-encode-message-body)
> - (save-restriction
> - (message-narrow-to-headers)
> - ;; We (re)generate the Lines header.
> - (when (memq 'Lines message-required-mail-headers)
> - (message-generate-headers '(Lines)))
> - ;; Remove some headers.
> - (message-remove-header message-ignored-mail-headers t)
> - (let ((mail-parse-charset message-default-charset))
> - (mail-encode-encoded-word-buffer)))
> - (goto-char (point-max))
> - ;; require one newline at the end.
> - (or (= (preceding-char) ?\n)
> - (insert ?\n))
> - (message-cleanup-headers)
> - ;; FIXME: we're inserting the courtesy copy after encoding.
> - ;; This is wrong if the courtesy copy string contains
> - ;; non-ASCII characters. -- jh
> - (when
> - (save-restriction
> - (message-narrow-to-headers)
> - (and news
> - (not (message-fetch-field "List-Post"))
> - (not (message-fetch-field "List-ID"))
> - (or (message-fetch-field "cc")
> - (message-fetch-field "bcc")
> - (message-fetch-field "to"))
> - (let ((content-type (message-fetch-field
> - "content-type")))
> - (and
> - (or
> - (not content-type)
> - (string= "text/plain"
> - (car
> - (mail-header-parse-content-type
> - content-type))))
> - (not
> - (string= "base64"
> - (message-fetch-field
> - "content-transfer-encoding")))))))
> - (message-insert-courtesy-copy
> - (with-current-buffer mailbuf
> - message-courtesy-message)))
> + (with-current-buffer tembuf
> + (erase-buffer)
> + (setq message-options options)
> + ;; Avoid copying text props (except hard newlines).
> + (insert (with-current-buffer mailbuf
> + (mml-buffer-substring-no-properties-except-some
> + (point-min) (point-max))))
> + ;; Remove some headers.
> + (message-encode-message-body)
> + (save-restriction
> + (message-narrow-to-headers)
> + ;; We (re)generate the Lines header.
> + (when (memq 'Lines message-required-mail-headers)
> + (message-generate-headers '(Lines)))
> + ;; Remove some headers.
> + (message-remove-header message-ignored-mail-headers t)
> + (let ((mail-parse-charset message-default-charset))
> + (mail-encode-encoded-word-buffer)))
> + (goto-char (point-max))
> + ;; require one newline at the end.
> + (or (= (preceding-char) ?\n)
> + (insert ?\n))
> + (message-cleanup-headers)
> + ;; FIXME: we're inserting the courtesy copy after encoding.
> + ;; This is wrong if the courtesy copy string contains
> + ;; non-ASCII characters. -- jh
> + (when
> + (save-restriction
> + (message-narrow-to-headers)
> + (and news
> + (not (message-fetch-field "List-Post"))
> + (not (message-fetch-field "List-ID"))
> + (or (message-fetch-field "cc")
> + (message-fetch-field "bcc")
> + (message-fetch-field "to"))
> + (let ((content-type (message-fetch-field
> + "content-type")))
> + (and
> + (or
> + (not content-type)
> + (string= "text/plain"
> + (car
> + (mail-header-parse-content-type
> + content-type))))
> + (not
> + (string= "base64"
> + (message-fetch-field
> + "content-transfer-encoding")))))))
> + (message-insert-courtesy-copy
> + (with-current-buffer mailbuf
> + message-courtesy-message)))
>            ;; Let's make sure we encoded all the body.
>            (cl-assert (save-excursion
>                         (goto-char (point-min))
>                         (not (re-search-forward "[^\000-\377]" 
>                         nil t))))
>            (mm-disable-multibyte)
> - (if (or (not message-send-mail-partially-limit)
> - (< (buffer-size) message-send-mail-partially-limit)
> - (not (message-y-or-n-p
> - "The message size is too large, split? "
> - t
> - "\
> + (if (or (not message-send-mail-partially-limit)
> + (< (buffer-size) message-send-mail-partially-limit)
> + (not (message-y-or-n-p
> + "The message size is too large, split? "
> + t
> + "\
>  The message size, "
> - (/ (buffer-size) 1000) "KB, is too large.
> + (/ (buffer-size) 1000) "KB, is too large.
>
>  Some mail gateways (MTA's) bounce large messages. To avoid the
>  problem, answer `y', and the message will be split into several
>  smaller pieces, the size of each is about "
> - (/ message-send-mail-partially-limit 1000)
> - "KB except the last
> + (/ message-send-mail-partially-limit 1000)
> + "KB except the last
>  one.
>
>  However, some mail readers (MUA's) can't read split messages, 
>  i.e.,
> @@ -4653,13 +4653,13 @@ The size limit is controlled by 
> `message-send-mail-partially-limit'.
>  If you always want Gnus to send messages in one piece, set
>  `message-send-mail-partially-limit' to nil.
>  ")))
> - (progn
> - (message "Sending via mail...")
> - (if message-send-mail-real-function
> - (funcall message-send-mail-real-function)
> - (message-multi-smtp-send-mail)))
> - (message-send-mail-partially))
> - (setq options message-options))
> + (progn
> + (message "Sending via mail...")
> + (if message-send-mail-real-function
> + (funcall message-send-mail-real-function)
> + (message-multi-smtp-send-mail)))
> + (message-send-mail-partially))
> + (setq options message-options))
>        (kill-buffer tembuf))
>      (set-buffer mailbuf)
>      (setq message-options options)
> @@ -4669,7 +4669,7 @@ If you always want Gnus to send messages 
> in one piece, set
>    (goto-char (point-min))
>    (while (not (eobp))
>      (when (and (looking-at "[^:]+:")
> - (> (- (line-end-position) (point)) 998))
> + (> (- (line-end-position) (point)) 998))
>        (mail-header-fold-field))
>      (forward-line 1)))
>
> @@ -4684,93 +4684,93 @@ Or, if there's a header that specifies a 
> different method, use
>  that instead."
>    (let ((method (message-field-value "X-Message-SMTP-Method")))
>      (if (not method)
> - (funcall message-send-mail-function)
> + (funcall message-send-mail-function)
>        (message-remove-header "X-Message-SMTP-Method")
>        (setq method (split-string method))
>        (cond
>         ((equal (car method) "sendmail")
> - (message-send-mail-with-sendmail))
> + (message-send-mail-with-sendmail))
>         ((equal (car method) "smtp")
> - (require 'smtpmail)
> - (let* ((smtpmail-smtp-server (nth 1 method))
> - (service (nth 2 method))
> - (port (string-to-number service))
> - (smtpmail-smtp-service (if (> port 0) port service))
> - (smtpmail-smtp-user (or (nth 3 method) smtpmail-smtp-user)))
> - (message-smtpmail-send-it)))
> + (require 'smtpmail)
> + (let* ((smtpmail-smtp-server (nth 1 method))
> + (service (nth 2 method))
> + (port (string-to-number service))
> + (smtpmail-smtp-service (if (> port 0) port service))
> + (smtpmail-smtp-user (or (nth 3 method) smtpmail-smtp-user)))
> + (message-smtpmail-send-it)))
>         (t
> - (error "Unknown method %s" method))))))
> + (error "Unknown method %s" method))))))
>
>  (defun message-send-mail-with-sendmail ()
>    "Send off the prepared buffer with sendmail."
>    (require 'sendmail)
>    (let ((errbuf (if message-interactive
> - (message-generate-new-buffer-clone-locals
> - " sendmail errors")
> - 0))
> - resend-to-addresses delimline)
> + (message-generate-new-buffer-clone-locals
> + " sendmail errors")
> + 0))
> + resend-to-addresses delimline)
>      (unwind-protect
> - (progn
> - (let ((case-fold-search t))
> - (save-restriction
> - (message-narrow-to-headers)
> - (setq resend-to-addresses (message-fetch-field "resent-to")))
> - ;; Change header-delimiter to be what sendmail expects.
> - (goto-char (point-min))
> - (re-search-forward
> - (concat "^" (regexp-quote mail-header-separator) "\n"))
> - (replace-match "\n")
> - (backward-char 1)
> - (setq delimline (point-marker))
> - (run-hooks 'message-send-mail-hook)
> - ;; Insert an extra newline if we need it to work around
> - ;; Sun's bug that swallows newlines.
> - (goto-char (1+ delimline))
> - (when (eval message-mailer-swallows-blank-line)
> - (newline))
> - (when message-interactive
> - (with-current-buffer errbuf
> - (erase-buffer))))
> - (let* ((default-directory "/")
> - (coding-system-for-write message-send-coding-system)
> - (cpr (apply
> - 'call-process-region
> - (append
> - (list (point-min) (point-max) sendmail-program
> - nil errbuf nil "-oi")
> - message-sendmail-extra-arguments
> - ;; Always specify who from,
> - ;; since some systems have broken sendmails.
> - ;; But some systems are more broken with -f, so
> - ;; we'll let users override this.
> - (and (null message-sendmail-f-is-evil)
> - (list "-f" (message-sendmail-envelope-from)))
> - ;; These mean "report errors by mail"
> - ;; and "deliver in background".
> - (if (null message-interactive) '("-oem" "-odb"))
> - ;; Get the addresses from the message
> - ;; unless this is a resend.
> - ;; We must not do that for a resend
> - ;; because we would find the original addresses.
> - ;; For a resend, include the specific addresses.
> - (if resend-to-addresses
> - (list resend-to-addresses)
> - '("-t"))))))
> - (unless (or (null cpr) (and (numberp cpr) (zerop cpr)))
> - (when errbuf
> - (pop-to-buffer errbuf)
> - (setq errbuf nil))
> - (error "Sending...failed with exit value %d" cpr)))
> - (when message-interactive
> - (with-current-buffer errbuf
> - (goto-char (point-min))
> - (while (re-search-forward "\n+ *" nil t)
> - (replace-match "; "))
> - (if (not (zerop (buffer-size)))
> - (error "Sending...failed to %s"
> - (buffer-string))))))
> + (progn
> + (let ((case-fold-search t))
> + (save-restriction
> + (message-narrow-to-headers)
> + (setq resend-to-addresses (message-fetch-field "resent-to")))
> + ;; Change header-delimiter to be what sendmail expects.
> + (goto-char (point-min))
> + (re-search-forward
> + (concat "^" (regexp-quote mail-header-separator) "\n"))
> + (replace-match "\n")
> + (backward-char 1)
> + (setq delimline (point-marker))
> + (run-hooks 'message-send-mail-hook)
> + ;; Insert an extra newline if we need it to work around
> + ;; Sun's bug that swallows newlines.
> + (goto-char (1+ delimline))
> + (when (eval message-mailer-swallows-blank-line)
> + (newline))
> + (when message-interactive
> + (with-current-buffer errbuf
> + (erase-buffer))))
> + (let* ((default-directory "/")
> + (coding-system-for-write message-send-coding-system)
> + (cpr (apply
> + 'call-process-region
> + (append
> + (list (point-min) (point-max) sendmail-program
> + nil errbuf nil "-oi")
> + message-sendmail-extra-arguments
> + ;; Always specify who from,
> + ;; since some systems have broken sendmails.
> + ;; But some systems are more broken with -f, so
> + ;; we'll let users override this.
> + (and (null message-sendmail-f-is-evil)
> + (list "-f" (message-sendmail-envelope-from)))
> + ;; These mean "report errors by mail"
> + ;; and "deliver in background".
> + (if (null message-interactive) '("-oem" "-odb"))
> + ;; Get the addresses from the message
> + ;; unless this is a resend.
> + ;; We must not do that for a resend
> + ;; because we would find the original addresses.
> + ;; For a resend, include the specific addresses.
> + (if resend-to-addresses
> + (list resend-to-addresses)
> + '("-t"))))))
> + (unless (or (null cpr) (and (numberp cpr) (zerop cpr)))
> + (when errbuf
> + (pop-to-buffer errbuf)
> + (setq errbuf nil))
> + (error "Sending...failed with exit value %d" cpr)))
> + (when message-interactive
> + (with-current-buffer errbuf
> + (goto-char (point-min))
> + (while (re-search-forward "\n+ *" nil t)
> + (replace-match "; "))
> + (if (not (zerop (buffer-size)))
> + (error "Sending...failed to %s"
> + (buffer-string))))))
>        (when (bufferp errbuf)
> - (kill-buffer errbuf)))))
> + (kill-buffer errbuf)))))
>
>  (defun message-send-mail-with-qmail ()
>    "Pass the prepared message buffer to qmail-inject.
> @@ -4785,29 +4785,29 @@ to find out how to use this."
>    ;; send the message
>    (pcase
>        (let ((coding-system-for-write 
>        message-send-coding-system))
> - (apply
> - 'call-process-region (point-min) (point-max)
> - message-qmail-inject-program nil nil nil
> - ;; qmail-inject's default behavior is to look for addresses on 
>  	 ;; the
> - ;; command line; if there're none, it scans the headers.
> - ;; yes, it does The Right Thing w.r.t. Resent-To and its kin.
> - ;;
> - ;; in general, ALL of qmail-inject's defaults are perfect for 
>  	 ;; simply
> - ;; reading a formatted (i. e., at least a To: or Resent-To 
>  	 ;; header)
> - ;; message from stdin.
> - ;;
> - ;; qmail also has the advantage of not having been raped by
> - ;; various vendors, so we don't have to allow for that, either 
>  	 ;; --
> - ;; compare this with message-send-mail-with-sendmail and weep
> - ;; for sendmail's lost innocence.
> - ;;
> - ;; all this is way cool coz it lets us keep the arguments 
>  	 ;; entirely
> - ;; free for -inject-arguments -- a big win for the user and 
>  	 ;; for us
> - ;; since we don't have to play that double-guessing game and 
>  	 ;; the user
> - ;; gets full control (no gestapo'ish -f's, for instance). --sj
> - (if (functionp message-qmail-inject-args)
> - (funcall message-qmail-inject-args)
> - message-qmail-inject-args)))
> + (apply
> + 'call-process-region (point-min) (point-max)
> + message-qmail-inject-program nil nil nil
> + ;; qmail-inject's default behavior is to look for addresses on 
>       ;; the
> + ;; command line; if there're none, it scans the headers.
> + ;; yes, it does The Right Thing w.r.t. Resent-To and its kin.
> + ;;
> + ;; in general, ALL of qmail-inject's defaults are perfect for 
>       ;; simply
> + ;; reading a formatted (i. e., at least a To: or Resent-To 
>       ;; header)
> + ;; message from stdin.
> + ;;
> + ;; qmail also has the advantage of not having been raped by
> + ;; various vendors, so we don't have to allow for that, either 
>       ;; --
> + ;; compare this with message-send-mail-with-sendmail and weep
> + ;; for sendmail's lost innocence.
> + ;;
> + ;; all this is way cool coz it lets us keep the arguments 
>       ;; entirely
> + ;; free for -inject-arguments -- a big win for the user and 
>       ;; for us
> + ;; since we don't have to play that double-guessing game and 
>       ;; the user
> + ;; gets full control (no gestapo'ish -f's, for instance). --sj
> + (if (functionp message-qmail-inject-args)
> + (funcall message-qmail-inject-args)
> + message-qmail-inject-args)))
>      ;; qmail-inject doesn't say anything on its stdout/stderr,
>      ;; we have to look at the retval instead
>      (0 nil)
> @@ -4821,17 +4821,17 @@ to find out how to use this."
>  (defun message-send-mail-with-mh ()
>    "Send the prepared message buffer with mh."
>    (let ((mh-previous-window-config nil)
> - (name (mh-new-draft-name)))
> + (name (mh-new-draft-name)))
>      (setq buffer-file-name name)
>      ;; MH wants to generate these headers itself.
>      (when message-mh-deletable-headers
>        (let ((headers message-mh-deletable-headers))
> - (while headers
> - (goto-char (point-min))
> - (and (re-search-forward
> - (concat "^" (symbol-name (car headers)) ": *") nil t)
> - (message-delete-line))
> - (pop headers))))
> + (while headers
> + (goto-char (point-min))
> + (and (re-search-forward
> + (concat "^" (symbol-name (car headers)) ": *") nil t)
> + (message-delete-line))
> + (pop headers))))
>      (run-hooks 'message-send-mail-hook)
>      ;; Pass it on to mh.
>      (mh-send-letter)))
> @@ -4846,7 +4846,7 @@ authentication. See the Gnus manual for 
> details."
>    ;; Change header-delimiter to be what smtpmail expects.
>    (goto-char (point-min))
>    (when (re-search-forward
> - (concat "^" (regexp-quote mail-header-separator) "\n"))
> + (concat "^" (regexp-quote mail-header-separator) "\n"))
>      (replace-match "\n"))
>    (smtpmail-send-it))
>
> @@ -4890,104 +4890,104 @@ Otherwise, generate and save a value 
> for `canlock-password' first."
>  (defun message-send-news (&optional arg)
>    (require 'gnus-msg)
>    (let* ((tembuf (message-generate-new-buffer-clone-locals " 
>    *message temp*"))
> - (case-fold-search nil)
> - (method (if (functionp message-post-method)
> - (funcall message-post-method arg)
> - message-post-method))
> - (newsgroups-field (save-restriction
> - (message-narrow-to-headers-or-head)
> - (message-fetch-field "Newsgroups")))
> - (followup-field (save-restriction
> - (message-narrow-to-headers-or-head)
> - (message-fetch-field "Followup-To")))
> - ;; BUG: We really need to get the charset for each name in the
> - ;; Newsgroups and Followup-To lines to allow crossposting
> - ;; between group names with incompatible character sets.
> - ;; -- Per Abrahamsen <[email-masked]> 2001-10-08.
> - (group-field-charset
> - (gnus-group-name-charset method newsgroups-field))
> - (followup-field-charset
> - (gnus-group-name-charset method (or followup-field "")))
> - (rfc2047-header-encoding-alist
> - (append (when group-field-charset
> - (list (cons "Newsgroups" group-field-charset)))
> - (when followup-field-charset
> - (list (cons "Followup-To" followup-field-charset)))
> - rfc2047-header-encoding-alist))
> - (messbuf (current-buffer))
> - (message-syntax-checks
> - (if (and arg
> - (listp message-syntax-checks))
> - (cons '(existing-newsgroups . disabled)
> - message-syntax-checks)
> - message-syntax-checks))
> - (message-this-is-news t)
> - (message-posting-charset
> - (gnus-setup-posting-charset newsgroups-field))
> - result)
> + (case-fold-search nil)
> + (method (if (functionp message-post-method)
> + (funcall message-post-method arg)
> + message-post-method))
> + (newsgroups-field (save-restriction
> + (message-narrow-to-headers-or-head)
> + (message-fetch-field "Newsgroups")))
> + (followup-field (save-restriction
> + (message-narrow-to-headers-or-head)
> + (message-fetch-field "Followup-To")))
> + ;; BUG: We really need to get the charset for each name in the
> + ;; Newsgroups and Followup-To lines to allow crossposting
> + ;; between group names with incompatible character sets.
> + ;; -- Per Abrahamsen <[email-masked]> 2001-10-08.
> + (group-field-charset
> + (gnus-group-name-charset method newsgroups-field))
> + (followup-field-charset
> + (gnus-group-name-charset method (or followup-field "")))
> + (rfc2047-header-encoding-alist
> + (append (when group-field-charset
> + (list (cons "Newsgroups" group-field-charset)))
> + (when followup-field-charset
> + (list (cons "Followup-To" followup-field-charset)))
> + rfc2047-header-encoding-alist))
> + (messbuf (current-buffer))
> + (message-syntax-checks
> + (if (and arg
> + (listp message-syntax-checks))
> + (cons '(existing-newsgroups . disabled)
> + message-syntax-checks)
> + message-syntax-checks))
> + (message-this-is-news t)
> + (message-posting-charset
> + (gnus-setup-posting-charset newsgroups-field))
> + result)
>      (if (not (message-check-news-body-syntax))
> - nil
> + nil
>        (save-restriction
> - (message-narrow-to-headers)
> - ;; Insert some headers.
> - (message-generate-headers message-required-news-headers)
> - (message-insert-canlock)
> - ;; Let the user do all of the above.
> - (run-hooks 'message-header-hook))
> + (message-narrow-to-headers)
> + ;; Insert some headers.
> + (message-generate-headers message-required-news-headers)
> + (message-insert-canlock)
> + ;; Let the user do all of the above.
> + (run-hooks 'message-header-hook))
>        ;; Note: This check will be disabled by the ".*" default 
>        ;; value for
>        ;; gnus-group-name-charset-group-alist. -- Pa 2001-10-07.
>        (when (and group-field-charset
> - (listp message-syntax-checks))
> - (setq message-syntax-checks
> - (cons '(valid-newsgroups . disabled)
> - message-syntax-checks)))
> + (listp message-syntax-checks))
> + (setq message-syntax-checks
> + (cons '(valid-newsgroups . disabled)
> + message-syntax-checks)))
>        (message-cleanup-headers)
>        (if (not (let ((message-post-method method))
> - (message-check-news-syntax)))
> - nil
> - (unwind-protect
> - (with-current-buffer tembuf
> - (buffer-disable-undo)
> - (erase-buffer)
> - ;; Avoid copying text props (except hard newlines).
> - (insert
> - (with-current-buffer messbuf
> - (mml-buffer-substring-no-properties-except-some
> - (point-min) (point-max))))
> - (message-encode-message-body)
> - ;; Remove some headers.
> - (save-restriction
> - (message-narrow-to-headers)
> - ;; We (re)generate the Lines header.
> - (when (memq 'Lines message-required-mail-headers)
> - (message-generate-headers '(Lines)))
> - ;; Remove some headers.
> - (message-remove-header message-ignored-news-headers t)
> - (let ((mail-parse-charset message-default-charset))
> - (mail-encode-encoded-word-buffer)))
> - (goto-char (point-max))
> - ;; require one newline at the end.
> - (or (= (preceding-char) ?\n)
> - (insert ?\n))
> - (let ((case-fold-search t))
> - ;; Remove the delimiter.
> - (goto-char (point-min))
> - (re-search-forward
> - (concat "^" (regexp-quote mail-header-separator) "\n"))
> - (replace-match "\n")
> - (backward-char 1))
> - (run-hooks 'message-send-news-hook)
> - (gnus-open-server method)
> - (message "Sending news via %s..." (gnus-server-string method))
> - (setq result (let ((mail-header-separator ""))
> - (gnus-request-post method))))
> - (kill-buffer tembuf))
> - (set-buffer messbuf)
> - (if result
> - (push 'news message-sent-message-via)
> - (message "Couldn't send message via news: %s"
> - (nnheader-get-report (car method)))
> - nil)))))
> + (message-check-news-syntax)))
> + nil
> + (unwind-protect
> + (with-current-buffer tembuf
> + (buffer-disable-undo)
> + (erase-buffer)
> + ;; Avoid copying text props (except hard newlines).
> + (insert
> + (with-current-buffer messbuf
> + (mml-buffer-substring-no-properties-except-some
> + (point-min) (point-max))))
> + (message-encode-message-body)
> + ;; Remove some headers.
> + (save-restriction
> + (message-narrow-to-headers)
> + ;; We (re)generate the Lines header.
> + (when (memq 'Lines message-required-mail-headers)
> + (message-generate-headers '(Lines)))
> + ;; Remove some headers.
> + (message-remove-header message-ignored-news-headers t)
> + (let ((mail-parse-charset message-default-charset))
> + (mail-encode-encoded-word-buffer)))
> + (goto-char (point-max))
> + ;; require one newline at the end.
> + (or (= (preceding-char) ?\n)
> + (insert ?\n))
> + (let ((case-fold-search t))
> + ;; Remove the delimiter.
> + (goto-char (point-min))
> + (re-search-forward
> + (concat "^" (regexp-quote mail-header-separator) "\n"))
> + (replace-match "\n")
> + (backward-char 1))
> + (run-hooks 'message-send-news-hook)
> + (gnus-open-server method)
> + (message "Sending news via %s..." (gnus-server-string method))
> + (setq result (let ((mail-header-separator ""))
> + (gnus-request-post method))))
> + (kill-buffer tembuf))
> + (set-buffer messbuf)
> + (if result
> + (push 'news message-sent-message-via)
> + (message "Couldn't send message via news: %s"
> + (nnheader-get-report (car method)))
> + nil)))))
>
>  ;;;
>  ;;; Header generation & syntax checking.
> @@ -4999,7 +4999,7 @@ Otherwise, generate and save a value for 
> `canlock-password' first."
>        t
>      (let ((able (assq type message-syntax-checks)))
>        (and (consp able)
> - (eq (cdr able) 'disabled)))))
> + (eq (cdr able) 'disabled)))))
>
>  (defun message-check-news-syntax ()
>    "Check the syntax of the message."
> @@ -5008,9 +5008,9 @@ Otherwise, generate and save a value for 
> `canlock-password' first."
>        (widen)
>        ;; We narrow to the headers and check them first.
>        (save-excursion
> - (save-restriction
> - (message-narrow-to-headers)
> - (message-check-news-header-syntax))))))
> + (save-restriction
> + (message-narrow-to-headers)
> + (message-check-news-header-syntax))))))
>
>  (defun message-check-news-header-syntax ()
>    (and
> @@ -5018,287 +5018,287 @@ Otherwise, generate and save a value 
> for `canlock-password' first."
>     (message-check 'newsgroups
>       (let ((group (message-fetch-field "newsgroups")))
>         (or
> - (and group
> - (not (string-match "\\`[ \t]*\\'" group)))
> - (ignore
> - (message
> - "The newsgroups field is empty or missing. Posting is 
>  	  denied.")))))
> + (and group
> + (not (string-match "\\`[ \t]*\\'" group)))
> + (ignore
> + (message
> + "The newsgroups field is empty or missing. Posting is 
>        denied.")))))
>     ;; Check the Subject header.
>     (message-check 'subject
>       (let* ((case-fold-search t)
> - (subject (message-fetch-field "subject")))
> + (subject (message-fetch-field "subject")))
>         (or
> - (and subject
> - (not (string-match "\\`[ \t]*\\'" subject)))
> - (ignore
> - (message
> - "The subject field is empty or missing. Posting is 
>  	  denied.")))))
> + (and subject
> + (not (string-match "\\`[ \t]*\\'" subject)))
> + (ignore
> + (message
> + "The subject field is empty or missing. Posting is 
>        denied.")))))
>     ;; Check for commands in Subject.
>     (message-check 'subject-cmsg
>       (if (string-match "^cmsg " (message-fetch-field 
>       "subject"))
> - (y-or-n-p
> - "The control code \"cmsg\" is in the subject. Really post? ")
> + (y-or-n-p
> + "The control code \"cmsg\" is in the subject. Really post? ")
>         t))
>     ;; Check long header lines.
>     (message-check 'long-header-lines
>       (let ((header nil)
> - (length 0)
> - found)
> + (length 0)
> + found)
>         (while (and (not found)
> - (re-search-forward "^\\([^ \t:]+\\): " nil t))
> - (if (> (- (point) (match-beginning 0)) 998)
> - (setq found t
> - length (- (point) (match-beginning 0)))
> - (setq header (match-string-no-properties 1)))
> - (forward-line 1))
> + (re-search-forward "^\\([^ \t:]+\\): " nil t))
> + (if (> (- (point) (match-beginning 0)) 998)
> + (setq found t
> + length (- (point) (match-beginning 0)))
> + (setq header (match-string-no-properties 1)))
> + (forward-line 1))
>         (if found
> - (y-or-n-p (format "Your %s header is too long (%d). Really 
>  	   post? "
> - header length))
> - t)))
> + (y-or-n-p (format "Your %s header is too long (%d). Really 
>         post? "
> + header length))
> + t)))
>     ;; Check for multiple identical headers.
>     (message-check 'multiple-headers
>       (let (found)
>         (while (and (not found)
> - (re-search-forward "^[^ \t:]+: " nil t))
> - (save-excursion
> - (or (re-search-forward
> - (concat "^"
> - (regexp-quote
> - (setq found
> - (buffer-substring
> - (match-beginning 0) (- (match-end 0) 2))))
> - ":")
> - nil t)
> - (setq found nil))))
> + (re-search-forward "^[^ \t:]+: " nil t))
> + (save-excursion
> + (or (re-search-forward
> + (concat "^"
> + (regexp-quote
> + (setq found
> + (buffer-substring
> + (match-beginning 0) (- (match-end 0) 2))))
> + ":")
> + nil t)
> + (setq found nil))))
>         (if found
> - (y-or-n-p (format "Multiple %s headers. Really post? " found))
> - t)))
> + (y-or-n-p (format "Multiple %s headers. Really post? " found))
> + t)))
>     ;; Check for Version and Sendsys.
>     (message-check 'sendsys
>       (if (re-search-forward "^Sendsys:\\|^Version:" nil t)
> - (y-or-n-p
> - (format "The article contains a %s command. Really post? "
> - (buffer-substring (match-beginning 0)
> - (1- (match-end 0)))))
> + (y-or-n-p
> + (format "The article contains a %s command. Really post? "
> + (buffer-substring (match-beginning 0)
> + (1- (match-end 0)))))
>         t))
>     ;; See whether we can shorten Followup-To.
>     (message-check 'shorten-followup-to
>       (let ((newsgroups (message-fetch-field "newsgroups"))
> - (followup-to (message-fetch-field "followup-to"))
> - to)
> + (followup-to (message-fetch-field "followup-to"))
> + to)
>         (when (and newsgroups
> - (string-match "," newsgroups)
> - (not followup-to)
> - (not
> - (zerop
> - (length
> - (setq to (completing-read
> - "Followups to (default no Followup-To header): "
> - (mapcar #'list
> - (cons "poster"
> - (message-tokenize-header
> - newsgroups)))))))))
> - (goto-char (point-min))
> - (insert "Followup-To: " to "\n"))
> + (string-match "," newsgroups)
> + (not followup-to)
> + (not
> + (zerop
> + (length
> + (setq to (completing-read
> + "Followups to (default no Followup-To header): "
> + (mapcar #'list
> + (cons "poster"
> + (message-tokenize-header
> + newsgroups)))))))))
> + (goto-char (point-min))
> + (insert "Followup-To: " to "\n"))
>         t))
>     ;; Check "Shoot me".
>     (message-check 'shoot
>       (if (re-search-forward
> - "Message-ID.*.i-did-not-set--mail-host-address--so-tickle-me" 
>  	  nil t)
> - (y-or-n-p "You appear to have a misconfigured system. Really 
>  	 post? ")
> + "Message-ID.*.i-did-not-set--mail-host-address--so-tickle-me" 
>        nil t)
> + (y-or-n-p "You appear to have a misconfigured system. Really 
>       post? ")
>         t))
>     ;; Check for Approved.
>     (message-check 'approved
>       (if (re-search-forward "^Approved:" nil t)
> - (y-or-n-p "The article contains an Approved header. Really 
>  	 post? ")
> + (y-or-n-p "The article contains an Approved header. Really 
>       post? ")
>         t))
>     ;; Check the Message-ID header.
>     (message-check 'message-id
>       (let* ((case-fold-search t)
> - (message-id (message-fetch-field "message-id" t)))
> + (message-id (message-fetch-field "message-id" t)))
>         (or (not message-id)
> - ;; Is there an @ in the ID?
> - (and (string-match "@" message-id)
> - ;; Is there a dot in the ID?
> - (string-match "@[^.]*\\." message-id)
> - ;; Does the ID end with a dot?
> - (not (string-match "\\.>" message-id)))
> - (y-or-n-p
> - (format "The Message-ID looks strange: \"%s\". Really post? "
> - message-id)))))
> + ;; Is there an @ in the ID?
> + (and (string-match "@" message-id)
> + ;; Is there a dot in the ID?
> + (string-match "@[^.]*\\." message-id)
> + ;; Does the ID end with a dot?
> + (not (string-match "\\.>" message-id)))
> + (y-or-n-p
> + (format "The Message-ID looks strange: \"%s\". Really post? "
> + message-id)))))
>     ;; Check the Newsgroups & Followup-To headers.
>     (message-check 'existing-newsgroups
>       (let* ((case-fold-search t)
> - (newsgroups (message-fetch-field "newsgroups"))
> - (followup-to (message-fetch-field "followup-to"))
> - (groups (message-tokenize-header
> - (if followup-to
> - (concat newsgroups "," followup-to)
> - newsgroups)))
> - (post-method (if (functionp message-post-method)
> - (funcall message-post-method)
> - message-post-method))
> - ;; KLUDGE to handle nnvirtual groups. Doing this right
> - ;; would probably involve a new nnoo function.
> - ;; -- Per Abrahamsen <[email-masked]>, 2001-10-17.
> - (method (if (and (consp post-method)
> - (eq (car post-method) 'nnvirtual)
> - gnus-message-group-art)
> - (let ((group (car (nnvirtual-find-group-art
> - (car gnus-message-group-art)
> - (cdr gnus-message-group-art)))))
> - (gnus-find-method-for-group group))
> - post-method))
> - (known-groups
> - (mapcar (lambda (n)
> - (gnus-group-name-decode
> - (gnus-group-real-name n)
> - (gnus-group-name-charset method n)))
> - (gnus-groups-from-server method)))
> - errors)
> + (newsgroups (message-fetch-field "newsgroups"))
> + (followup-to (message-fetch-field "followup-to"))
> + (groups (message-tokenize-header
> + (if followup-to
> + (concat newsgroups "," followup-to)
> + newsgroups)))
> + (post-method (if (functionp message-post-method)
> + (funcall message-post-method)
> + message-post-method))
> + ;; KLUDGE to handle nnvirtual groups. Doing this right
> + ;; would probably involve a new nnoo function.
> + ;; -- Per Abrahamsen <[email-masked]>, 2001-10-17.
> + (method (if (and (consp post-method)
> + (eq (car post-method) 'nnvirtual)
> + gnus-message-group-art)
> + (let ((group (car (nnvirtual-find-group-art
> + (car gnus-message-group-art)
> + (cdr gnus-message-group-art)))))
> + (gnus-find-method-for-group group))
> + post-method))
> + (known-groups
> + (mapcar (lambda (n)
> + (gnus-group-name-decode
> + (gnus-group-real-name n)
> + (gnus-group-name-charset method n)))
> + (gnus-groups-from-server method)))
> + errors)
>         (while groups
> - (when (and (not (equal (car groups) "poster"))
> - (not (member (car groups) known-groups))
> - (not (member (car groups) errors)))
> - (push (car groups) errors))
> - (pop groups))
> + (when (and (not (equal (car groups) "poster"))
> + (not (member (car groups) known-groups))
> + (not (member (car groups) errors)))
> + (push (car groups) errors))
> + (pop groups))
>         (cond
> - ;; Gnus is not running.
> - ((or (not (and (boundp 'gnus-active-hashtb)
> - gnus-active-hashtb))
> - (not (boundp 'gnus-read-active-file)))
> - t)
> - ;; We don't have all the group names.
> - ((and (or (not gnus-read-active-file)
> - (eq gnus-read-active-file 'some))
> - errors)
> - (y-or-n-p
> - (format
> - "Really use %s possibly unknown group%s: %s? "
> - (if (= (length errors) 1) "this" "these")
> - (if (= (length errors) 1) "" "s")
> - (mapconcat 'identity errors ", "))))
> - ;; There were no errors.
> - ((not errors)
> - t)
> - ;; There are unknown groups.
> - (t
> - (y-or-n-p
> - (format
> - "Really post to %s unknown group%s: %s? "
> - (if (= (length errors) 1) "this" "these")
> - (if (= (length errors) 1) "" "s")
> - (mapconcat 'identity errors ", ")))))))
> + ;; Gnus is not running.
> + ((or (not (and (boundp 'gnus-active-hashtb)
> + gnus-active-hashtb))
> + (not (boundp 'gnus-read-active-file)))
> + t)
> + ;; We don't have all the group names.
> + ((and (or (not gnus-read-active-file)
> + (eq gnus-read-active-file 'some))
> + errors)
> + (y-or-n-p
> + (format
> + "Really use %s possibly unknown group%s: %s? "
> + (if (= (length errors) 1) "this" "these")
> + (if (= (length errors) 1) "" "s")
> + (mapconcat 'identity errors ", "))))
> + ;; There were no errors.
> + ((not errors)
> + t)
> + ;; There are unknown groups.
> + (t
> + (y-or-n-p
> + (format
> + "Really post to %s unknown group%s: %s? "
> + (if (= (length errors) 1) "this" "these")
> + (if (= (length errors) 1) "" "s")
> + (mapconcat 'identity errors ", ")))))))
>     ;; Check continuation headers.
>     (message-check 'continuation-headers
>       (goto-char (point-min))
>       (let ((do-posting t))
>         (while (re-search-forward "^[^ \t\n][^ \t\n:]*[ \t\n]" 
>         nil t)
> - (goto-char (match-beginning 0))
> - (if (y-or-n-p "Fix continuation lines? ")
> - (insert " ")
> - (forward-line 1)
> - (unless (y-or-n-p "Send anyway? ")
> - (setq do-posting nil))))
> + (goto-char (match-beginning 0))
> + (if (y-or-n-p "Fix continuation lines? ")
> + (insert " ")
> + (forward-line 1)
> + (unless (y-or-n-p "Send anyway? ")
> + (setq do-posting nil))))
>         do-posting))
>     ;; Check the Newsgroups & Followup-To headers for syntax 
>     ;; errors.
>     (message-check 'valid-newsgroups
>       (let ((case-fold-search t)
> - (headers '("Newsgroups" "Followup-To"))
> - header error)
> + (headers '("Newsgroups" "Followup-To"))
> + header error)
>         (while (and headers (not error))
> - (when (setq header (mail-fetch-field (car headers)))
> - (if (or
> - (not
> - (string-match
> - "\\`\\([-+_&.a-zA-Z0-9]+\\)?\\(,[-+_&.a-zA-Z0-9]+\\)*\\'"
> - header))
> - (memq
> - nil (mapcar
> - (lambda (g)
> - (not (string-match "\\.\\'\\|\\.\\." g)))
> - (message-tokenize-header header ","))))
> - (setq error t)))
> - (unless error
> - (pop headers)))
> + (when (setq header (mail-fetch-field (car headers)))
> + (if (or
> + (not
> + (string-match
> + "\\`\\([-+_&.a-zA-Z0-9]+\\)?\\(,[-+_&.a-zA-Z0-9]+\\)*\\'"
> + header))
> + (memq
> + nil (mapcar
> + (lambda (g)
> + (not (string-match "\\.\\'\\|\\.\\." g)))
> + (message-tokenize-header header ","))))
> + (setq error t)))
> + (unless error
> + (pop headers)))
>         (if (not error)
> - t
> - (y-or-n-p
> - (format "The %s header looks odd: \"%s\". Really post? "
> - (car headers) header)))))
> + t
> + (y-or-n-p
> + (format "The %s header looks odd: \"%s\". Really post? "
> + (car headers) header)))))
>     (message-check 'repeated-newsgroups
>       (let ((case-fold-search t)
> - (headers '("Newsgroups" "Followup-To"))
> - header error groups group)
> + (headers '("Newsgroups" "Followup-To"))
> + header error groups group)
>         (while (and headers
> - (not error))
> - (when (setq header (mail-fetch-field (pop headers)))
> - (setq groups (message-tokenize-header header ","))
> - (while (setq group (pop groups))
> - (when (member group groups)
> - (setq error group
> - groups nil)))))
> + (not error))
> + (when (setq header (mail-fetch-field (pop headers)))
> + (setq groups (message-tokenize-header header ","))
> + (while (setq group (pop groups))
> + (when (member group groups)
> + (setq error group
> + groups nil)))))
>         (if (not error)
> - t
> - (y-or-n-p
> - (format "Group %s is repeated in headers. Really post? " 
>  	  error)))))
> + t
> + (y-or-n-p
> + (format "Group %s is repeated in headers. Really post? " 
>        error)))))
>     ;; Check the From header.
>     (message-check 'from
>       (let* ((case-fold-search t)
> - (from (message-fetch-field "from"))
> - ad)
> + (from (message-fetch-field "from"))
> + ad)
>         (cond
> - ((not from)
> - (message "There is no From line. Posting is denied.")
> - nil)
> - ((or (not (string-match
> - "@[^\\.]*\\."
> - (setq ad (nth 1 (mail-extract-address-components
> - from))))) ;larsi@ifi
> - (string-match "\\.\\." ad) ;larsi@ifi..uio
> - (string-match "@\\." ad) ;larsi@.ifi.uio
> - (string-match "\\.$" ad) ;[email-masked].
> - (not (string-match "^[^@]+@[^@]+$" ad)) ;larsi.ifi.uio
> - (string-match "(.*).*(.*)" from)) ;(lars) (lars)
> - (message
> - "Denied posting -- the From looks strange: \"%s\"." from)
> - nil)
> - ((let ((addresses (rfc822-addresses from)))
> - ;; `rfc822-addresses' returns a string if parsing fails.
> - (while (and (consp addresses)
> - (not (eq (string-to-char (car addresses)) ?\()))
> - (setq addresses (cdr addresses)))
> - addresses)
> - (message
> - "Denied posting -- bad From address: \"%s\"." from)
> - nil)
> - (t t))))
> + ((not from)
> + (message "There is no From line. Posting is denied.")
> + nil)
> + ((or (not (string-match
> + "@[^\\.]*\\."
> + (setq ad (nth 1 (mail-extract-address-components
> + from))))) ;larsi@ifi
> + (string-match "\\.\\." ad) ;larsi@ifi..uio
> + (string-match "@\\." ad) ;larsi@.ifi.uio
> + (string-match "\\.$" ad) ;[email-masked].
> + (not (string-match "^[^@]+@[^@]+$" ad)) ;larsi.ifi.uio
> + (string-match "(.*).*(.*)" from)) ;(lars) (lars)
> + (message
> + "Denied posting -- the From looks strange: \"%s\"." from)
> + nil)
> + ((let ((addresses (rfc822-addresses from)))
> + ;; `rfc822-addresses' returns a string if parsing fails.
> + (while (and (consp addresses)
> + (not (eq (string-to-char (car addresses)) ?\()))
> + (setq addresses (cdr addresses)))
> + addresses)
> + (message
> + "Denied posting -- bad From address: \"%s\"." from)
> + nil)
> + (t t))))
>     ;; Check the Reply-To header.
>     (message-check 'reply-to
>       (let* ((case-fold-search t)
> - (reply-to (message-fetch-field "reply-to"))
> - ad)
> + (reply-to (message-fetch-field "reply-to"))
> + ad)
>         (cond
> - ((not reply-to)
> - t)
> - ((string-match "," reply-to)
> - (y-or-n-p
> - (format "Multiple Reply-To addresses: \"%s\". Really post? "
> - reply-to)))
> - ((or (not (string-match
> - "@[^\\.]*\\."
> - (setq ad (nth 1 (mail-extract-address-components
> - reply-to))))) ;larsi@ifi
> - (string-match "\\.\\." ad) ;larsi@ifi..uio
> - (string-match "@\\." ad) ;larsi@.ifi.uio
> - (string-match "\\.$" ad) ;[email-masked].
> - (not (string-match "^[^@]+@[^@]+$" ad)) ;larsi.ifi.uio
> - (string-match "(.*).*(.*)" reply-to)) ;(lars) (lars)
> - (y-or-n-p
> - (format
> - "The Reply-To looks strange: \"%s\". Really post? "
> - reply-to)))
> - (t t))))))
> + ((not reply-to)
> + t)
> + ((string-match "," reply-to)
> + (y-or-n-p
> + (format "Multiple Reply-To addresses: \"%s\". Really post? "
> + reply-to)))
> + ((or (not (string-match
> + "@[^\\.]*\\."
> + (setq ad (nth 1 (mail-extract-address-components
> + reply-to))))) ;larsi@ifi
> + (string-match "\\.\\." ad) ;larsi@ifi..uio
> + (string-match "@\\." ad) ;larsi@.ifi.uio
> + (string-match "\\.$" ad) ;[email-masked].
> + (not (string-match "^[^@]+@[^@]+$" ad)) ;larsi.ifi.uio
> + (string-match "(.*).*(.*)" reply-to)) ;(lars) (lars)
> + (y-or-n-p
> + (format
> + "The Reply-To looks strange: \"%s\". Really post? "
> + reply-to)))
> + (t t))))))
>
>  (defun message-check-news-body-syntax ()
>    (and
> @@ -5309,16 +5309,16 @@ Otherwise, generate and save a value for 
> `canlock-password' first."
>        (concat "^" (regexp-quote mail-header-separator) "$"))
>       (forward-line 1)
>       (while (and
> - (or (looking-at
> - "<#\\(/\\)?\\(multipart\\|part\\|external\\|mml\\)")
> - (let ((p (point)))
> - (end-of-line)
> - (< (- (point) p) 80)))
> - (zerop (forward-line 1))))
> + (or (looking-at
> + "<#\\(/\\)?\\(multipart\\|part\\|external\\|mml\\)")
> + (let ((p (point)))
> + (end-of-line)
> + (< (- (point) p) 80)))
> + (zerop (forward-line 1))))
>       (or (bolp)
> - (eobp)
> - (y-or-n-p
> - "You have lines longer than 79 characters. Really post? ")))
> + (eobp)
> + (y-or-n-p
> + "You have lines longer than 79 characters. Really post? ")))
>     ;; Check whether the article is empty.
>     (message-check 'empty
>       (goto-char (point-min))
> @@ -5330,26 +5330,26 @@ Otherwise, generate and save a value for 
> `canlock-password' first."
>         (re-search-backward message-signature-separator nil t)
>         (beginning-of-line)
>         (or (re-search-backward "[^ \n\t]" b t)
> - (if (message-gnksa-enable-p 'empty-article)
> - (y-or-n-p "Empty article. Really post? ")
> - (message "Denied posting -- Empty article.")
> - nil))))
> + (if (message-gnksa-enable-p 'empty-article)
> + (y-or-n-p "Empty article. Really post? ")
> + (message "Denied posting -- Empty article.")
> + nil))))
>     ;; Check for control characters.
>     (message-check 'control-chars
>       (if (re-search-forward
> - (eval-when-compile
> + (eval-when-compile
>              (decode-coding-string 
>              "[\000-\007\013\015-\032\034-\037\200-\237]"
>                                    'binary))
> - nil t)
> - (y-or-n-p
> - "The article contains control characters. Really post? ")
> + nil t)
> + (y-or-n-p
> + "The article contains control characters. Really post? ")
>         t))
>     ;; Check excessive size.
>     (message-check 'size
>       (if (> (buffer-size) 60000)
> - (y-or-n-p
> - (format "The article is %d octets long. Really post? "
> - (buffer-size)))
> + (y-or-n-p
> + (format "The article is %d octets long. Really post? "
> + (buffer-size)))
>         t))
>     ;; Check whether any new text has been added.
>     (message-check 'new-text
> @@ -5357,48 +5357,48 @@ Otherwise, generate and save a value for 
> `canlock-password' first."
>        (not message-checksum)
>        (not (eq (message-checksum) message-checksum))
>        (if (message-gnksa-enable-p 'quoted-text-only)
> - (y-or-n-p
> - "It looks like no new text has been added. Really post? ")
> - (message "Denied posting -- no new text has been added.")
> - nil)))
> + (y-or-n-p
> + "It looks like no new text has been added. Really post? ")
> + (message "Denied posting -- no new text has been added.")
> + nil)))
>     ;; Check the length of the signature.
>     (message-check 'signature
>       (let (sig-start sig-end)
>         (goto-char (point-max))
>         (if (not (re-search-backward message-signature-separator 
>         nil t))
> - t
> - (setq sig-start (1+ (point-at-eol)))
> - (setq sig-end
> - (if (re-search-forward
> - "<#/?\\(multipart\\|part\\|external\\|mml\\)" nil t)
> - (- (point-at-bol) 1)
> - (point-max)))
> - (if (>= (count-lines sig-start sig-end) 5)
> - (if (message-gnksa-enable-p 'signature)
> - (y-or-n-p
> - (format "Signature is excessively long (%d lines). Really 
>  		  post? "
> - (count-lines sig-start sig-end)))
> - (message "Denied posting -- Excessive signature.")
> - nil)
> - t))))
> + t
> + (setq sig-start (1+ (point-at-eol)))
> + (setq sig-end
> + (if (re-search-forward
> + "<#/?\\(multipart\\|part\\|external\\|mml\\)" nil t)
> + (- (point-at-bol) 1)
> + (point-max)))
> + (if (>= (count-lines sig-start sig-end) 5)
> + (if (message-gnksa-enable-p 'signature)
> + (y-or-n-p
> + (format "Signature is excessively long (%d lines). Really 
>            post? "
> + (count-lines sig-start sig-end)))
> + (message "Denied posting -- Excessive signature.")
> + nil)
> + t))))
>     ;; Ensure that text follows last quoted portion.
>     (message-check 'quoting-style
>       (goto-char (point-max))
>       (let ((no-problem t))
>         (when (search-backward-regexp "^>[^\n]*\n" nil t)
> - (setq no-problem (search-forward-regexp "^[ \t]*[^>\n]" nil 
>  	 t)))
> + (setq no-problem (search-forward-regexp "^[ \t]*[^>\n]" nil 
>       t)))
>         (if no-problem
> - t
> - (if (message-gnksa-enable-p 'quoted-text-only)
> - (y-or-n-p "Your text should follow quoted text. Really post? 
>  	     ")
> - ;; Ensure that
> - (goto-char (point-min))
> - (re-search-forward
> - (concat "^" (regexp-quote mail-header-separator) "$"))
> - (if (search-forward-regexp "^[ \t]*[^>\n]" nil t)
> - (y-or-n-p "Your text should follow quoted text. Really post? 
>  	       ")
> - (message "Denied posting -- only quoted text.")
> - nil)))))))
> + t
> + (if (message-gnksa-enable-p 'quoted-text-only)
> + (y-or-n-p "Your text should follow quoted text. Really post? 
>           ")
> + ;; Ensure that
> + (goto-char (point-min))
> + (re-search-forward
> + (concat "^" (regexp-quote mail-header-separator) "$"))
> + (if (search-forward-regexp "^[ \t]*[^>\n]" nil t)
> + (y-or-n-p "Your text should follow quoted text. Really post? 
>             ")
> + (message "Denied posting -- only quoted text.")
> + nil)))))))
>
>  (defun message-checksum ()
>    "Return a \"checksum\" for the current buffer."
> @@ -5408,74 +5408,74 @@ Otherwise, generate and save a value for 
> `canlock-password' first."
>        (re-search-forward
>         (concat "^" (regexp-quote mail-header-separator) "$"))
>        (while (not (eobp))
> - (when (not (looking-at "[ \t\n]"))
> - (setq sum (logxor (ash sum 1) (if (natnump sum) 0 1)
> - (char-after))))
> - (forward-char 1)))
> + (when (not (looking-at "[ \t\n]"))
> + (setq sum (logxor (ash sum 1) (if (natnump sum) 0 1)
> + (char-after))))
> + (forward-char 1)))
>      sum))
>
>  (defun message-do-fcc ()
>    "Process Fcc headers in the current buffer."
>    (let ((case-fold-search t)
> - (buf (current-buffer))
> - (mml-externalize-attachments 
>  	message-fcc-externalize-attachments)
> - (file (message-field-value "fcc" t))
> - list)
> + (buf (current-buffer))
> + (mml-externalize-attachments 
>      message-fcc-externalize-attachments)
> + (file (message-field-value "fcc" t))
> + list)
>      (when file
>        (with-temp-buffer
> - (insert-buffer-substring buf)
> - (message-clone-locals buf)
> - (message-encode-message-body)
> - (save-restriction
> - (message-narrow-to-headers)
> - (while (setq file (message-fetch-field "fcc" t))
> - (push file list)
> - (message-remove-header "fcc" nil t))
> - (let ((mail-parse-charset message-default-charset)
> - (rfc2047-header-encoding-alist
> - (cons '("Newsgroups" . default)
> - rfc2047-header-encoding-alist)))
> - (mail-encode-encoded-word-buffer)))
> - (goto-char (point-min))
> - (when (re-search-forward
> - (concat "^" (regexp-quote mail-header-separator) "$")
> - nil t)
> - (replace-match "" t t ))
> - ;; Process Fcc operations.
> - (while list
> - (setq file (pop list))
> - (if (string-match "^[ \t]*|[ \t]*\\(.*\\)[ \t]*$" file)
> - ;; Pipe the article to the program in question.
> - (call-shell-region (point-min) (point-max) (match-string 1 
>  	      file))
> - ;; Save the article.
> - (setq file (expand-file-name file))
> - (unless (file-exists-p (file-name-directory file))
> - (make-directory (file-name-directory file) t))
> - (if (and message-fcc-handler-function
> - (not (eq message-fcc-handler-function 'rmail-output)))
> - (funcall message-fcc-handler-function file)
> - ;; FIXME this option, rmail-output (also used if
> - ;; message-fcc-handler-function is nil) is not
> - ;; documented anywhere AFAICS. It should work in Emacs
> - ;; 23; I suspect it does not work in Emacs 22.
> - ;; FIXME I don't see the need for the two different cases 
>  	      ;; here.
> - ;; mail-use-rfc822 makes no difference (in Emacs 23),and
> - ;; the third argument just controls \"Wrote file\" message.
> - (if (and (file-readable-p file) (mail-file-babyl-p file))
> - (rmail-output file 1 nil t)
> - (let ((mail-use-rfc822 t))
> - (rmail-output file 1 t t))))))))))
> + (insert-buffer-substring buf)
> + (message-clone-locals buf)
> + (message-encode-message-body)
> + (save-restriction
> + (message-narrow-to-headers)
> + (while (setq file (message-fetch-field "fcc" t))
> + (push file list)
> + (message-remove-header "fcc" nil t))
> + (let ((mail-parse-charset message-default-charset)
> + (rfc2047-header-encoding-alist
> + (cons '("Newsgroups" . default)
> + rfc2047-header-encoding-alist)))
> + (mail-encode-encoded-word-buffer)))
> + (goto-char (point-min))
> + (when (re-search-forward
> + (concat "^" (regexp-quote mail-header-separator) "$")
> + nil t)
> + (replace-match "" t t ))
> + ;; Process Fcc operations.
> + (while list
> + (setq file (pop list))
> + (if (string-match "^[ \t]*|[ \t]*\\(.*\\)[ \t]*$" file)
> + ;; Pipe the article to the program in question.
> + (call-shell-region (point-min) (point-max) (match-string 1 
>            file))
> + ;; Save the article.
> + (setq file (expand-file-name file))
> + (unless (file-exists-p (file-name-directory file))
> + (make-directory (file-name-directory file) t))
> + (if (and message-fcc-handler-function
> + (not (eq message-fcc-handler-function 'rmail-output)))
> + (funcall message-fcc-handler-function file)
> + ;; FIXME this option, rmail-output (also used if
> + ;; message-fcc-handler-function is nil) is not
> + ;; documented anywhere AFAICS. It should work in Emacs
> + ;; 23; I suspect it does not work in Emacs 22.
> + ;; FIXME I don't see the need for the two different cases 
>            ;; here.
> + ;; mail-use-rfc822 makes no difference (in Emacs 23),and
> + ;; the third argument just controls \"Wrote file\" message.
> + (if (and (file-readable-p file) (mail-file-babyl-p file))
> + (rmail-output file 1 nil t)
> + (let ((mail-use-rfc822 t))
> + (rmail-output file 1 t t))))))))))
>
>  (defun message-output (filename)
>    "Append this article to Unix/babyl mail file FILENAME."
>    (if (or (and (file-readable-p filename)
> - (mail-file-babyl-p filename))
> - ;; gnus-output-to-mail does the wrong thing with live, mbox
> - ;; Rmail buffers in Emacs 23.
> - ;; http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597255
> - (let ((buff (find-buffer-visiting filename)))
> - (and buff (with-current-buffer buff
> - (eq major-mode 'rmail-mode)))))
> + (mail-file-babyl-p filename))
> + ;; gnus-output-to-mail does the wrong thing with live, mbox
> + ;; Rmail buffers in Emacs 23.
> + ;; http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=597255
> + (let ((buff (find-buffer-visiting filename)))
> + (and buff (with-current-buffer buff
> + (eq major-mode 'rmail-mode)))))
>        (gnus-output-to-rmail filename t)
>      (gnus-output-to-mail filename t)))
>
> @@ -5494,22 +5494,22 @@ Otherwise, generate and save a value for 
> `canlock-password' first."
>      (goto-char (point-min))
>      (while (re-search-forward "^\\(Newsgroups\\|Followup-To\\): 
>      +" nil t)
>        (save-restriction
> - (narrow-to-region
> - (point)
> - (if (re-search-forward "^[^ \t]" nil t)
> - (match-beginning 0)
> - (forward-line 1)
> - (point)))
> - (goto-char (point-min))
> - (while (re-search-forward "\n[ \t]+" nil t)
> - (replace-match " " t t)) ;No line breaks (too confusing)
> - (goto-char (point-min))
> - (while (re-search-forward "[ \t\n]*,[ \t\n]*\\|[ \t]+" nil t)
> - (replace-match "," t t))
> - (goto-char (point-min))
> - ;; Remove trailing commas.
> - (when (re-search-forward ",+$" nil t)
> - (replace-match "" t t))))))
> + (narrow-to-region
> + (point)
> + (if (re-search-forward "^[^ \t]" nil t)
> + (match-beginning 0)
> + (forward-line 1)
> + (point)))
> + (goto-char (point-min))
> + (while (re-search-forward "\n[ \t]+" nil t)
> + (replace-match " " t t)) ;No line breaks (too confusing)
> + (goto-char (point-min))
> + (while (re-search-forward "[ \t\n]*,[ \t\n]*\\|[ \t]+" nil t)
> + (replace-match "," t t))
> + (goto-char (point-min))
> + ;; Remove trailing commas.
> + (when (re-search-forward ",+$" nil t)
> + (replace-match "" t t))))))
>
>  (defun message-make-date (&optional now)
>    "Make a valid data header.
> @@ -5529,29 +5529,29 @@ If NOW, use that time instead."
>
>  In posting styles use `(\"Expires\" (make-expires-date 30))'."
>    (let* ((cur (decode-time))
> - (nday (+ days (nth 3 cur))))
> + (nday (+ days (nth 3 cur))))
>      (setf (nth 3 cur) nday)
>      (message-make-date (apply 'encode-time cur))))
>
>  (defun message-make-message-id ()
>    "Make a unique Message-ID."
>    (concat "<" (message-unique-id)
> - (let ((psubject (save-excursion (message-fetch-field 
>  	  "subject")))
> - (psupersedes
> - (save-excursion (message-fetch-field "supersedes"))))
> - (if (or
> - (and message-reply-headers
> - (mail-header-references message-reply-headers)
> - (mail-header-subject message-reply-headers)
> - psubject
> - (not (string=
> - (message-strip-subject-re
> - (mail-header-subject message-reply-headers))
> - (message-strip-subject-re psubject))))
> - (and psupersedes
> - (string-match "_-_@" psupersedes)))
> - "_-_" ""))
> - "@" (message-make-fqdn) ">"))
> + (let ((psubject (save-excursion (message-fetch-field 
>        "subject")))
> + (psupersedes
> + (save-excursion (message-fetch-field "supersedes"))))
> + (if (or
> + (and message-reply-headers
> + (mail-header-references message-reply-headers)
> + (mail-header-subject message-reply-headers)
> + psubject
> + (not (string=
> + (message-strip-subject-re
> + (mail-header-subject message-reply-headers))
> + (message-strip-subject-re psubject))))
> + (and psupersedes
> + (string-match "_-_@" psupersedes)))
> + "_-_" ""))
> + "@" (message-make-fqdn) ">"))
>
>  (defvar message-unique-id-char nil)
>
> @@ -5563,25 +5563,25 @@ In posting styles use `(\"Expires\" 
> (make-expires-date 30))'."
>    ;; Don't use microseconds from (current-time), they may be 
>    ;; unsupported.
>    ;; Instead we use this randomly inited counter.
>    (setq message-unique-id-char
> - (% (1+ (or message-unique-id-char
> - (logand (random most-positive-fixnum) (1- (lsh 1 20)))))
> - ;; (current-time) returns 16-bit ints,
> - ;; and 2^16*25 just fits into 4 digits i base 36.
> - (* 25 25)))
> + (% (1+ (or message-unique-id-char
> + (logand (random most-positive-fixnum) (1- (lsh 1 20)))))
> + ;; (current-time) returns 16-bit ints,
> + ;; and 2^16*25 just fits into 4 digits i base 36.
> + (* 25 25)))
>    (let ((tm (current-time)))
>      (concat
>       (if (or (eq system-type 'ms-dos)
> - ;; message-number-base36 doesn't handle bigints.
> - (floatp (user-uid)))
> - (let ((user (downcase (user-login-name))))
> - (while (string-match "[^a-z0-9_]" user)
> - (aset user (match-beginning 0) ?_))
> - user)
> + ;; message-number-base36 doesn't handle bigints.
> + (floatp (user-uid)))
> + (let ((user (downcase (user-login-name))))
> + (while (string-match "[^a-z0-9_]" user)
> + (aset user (match-beginning 0) ?_))
> + user)
>         (message-number-base36 (user-uid) -1))
>       (message-number-base36 (+ (car tm)
> - (lsh (% message-unique-id-char 25) 16)) 4)
> + (lsh (% message-unique-id-char 25) 16)) 4)
>       (message-number-base36 (+ (nth 1 tm)
> - (lsh (/ message-unique-id-char 25) 16)) 4)
> + (lsh (/ message-unique-id-char 25) 16)) 4)
>       ;; Append a given name, because while the generated ID is 
>       ;; unique
>       ;; to this newsreader, other newsreaders might otherwise 
>       ;; generate
>       ;; the same ID via another algorithm.
> @@ -5589,33 +5589,33 @@ In posting styles use `(\"Expires\" 
> (make-expires-date 30))'."
>
>  (defun message-number-base36 (num len)
>    (if (if (< len 0)
> - (<= num 0)
> - (= len 0))
> + (<= num 0)
> + (= len 0))
>        ""
>      (concat (message-number-base36 (/ num 36) (1- len))
> - (char-to-string (aref "zyxwvutsrqponmlkjihgfedcba9876543210"
> - (% num 36))))))
> + (char-to-string (aref "zyxwvutsrqponmlkjihgfedcba9876543210"
> + (% num 36))))))
>
>  (defun message-make-organization ()
>    "Make an Organization header."
>    (let* ((organization
> - (when message-user-organization
> - (if (functionp message-user-organization)
> - (funcall message-user-organization)
> - message-user-organization))))
> + (when message-user-organization
> + (if (functionp message-user-organization)
> + (funcall message-user-organization)
> + message-user-organization))))
>      (with-temp-buffer
>        (mm-enable-multibyte)
>        (cond ((stringp organization)
> - (insert organization))
> - ((and (eq t organization)
> - message-user-organization-file
> - (file-exists-p message-user-organization-file))
> - (insert-file-contents message-user-organization-file)))
> + (insert organization))
> + ((and (eq t organization)
> + message-user-organization-file
> + (file-exists-p message-user-organization-file))
> + (insert-file-contents message-user-organization-file)))
>        (goto-char (point-min))
>        (while (re-search-forward "[\t\n]+" nil t)
> - (replace-match "" t t))
> + (replace-match "" t t))
>        (unless (zerop (buffer-size))
> - (buffer-string)))))
> + (buffer-string)))))
>
>  (defun message-make-lines ()
>    "Count the number of lines and return numeric string."
> @@ -5629,27 +5629,27 @@ In posting styles use `(\"Expires\" 
> (make-expires-date 30))'."
>    "Return the References header for this message."
>    (when message-reply-headers
>      (let ((message-id (mail-header-id message-reply-headers))
> - (references (mail-header-references message-reply-headers)))
> + (references (mail-header-references message-reply-headers)))
>        (if (or references message-id)
> - (concat (or references "") (and references " ")
> - (or message-id ""))
> - nil))))
> + (concat (or references "") (and references " ")
> + (or message-id ""))
> + nil))))
>
>  (defun message-make-in-reply-to ()
>    "Return the In-Reply-To header for this message."
>    (when message-reply-headers
>      (let ((from (mail-header-from message-reply-headers))
> - (date (mail-header-date message-reply-headers))
> - (msg-id (mail-header-id message-reply-headers)))
> + (date (mail-header-date message-reply-headers))
> + (msg-id (mail-header-id message-reply-headers)))
>        (when from
> - (let ((name (mail-extract-address-components from)))
> - (concat
> - msg-id (if msg-id " (")
> - (if (car name)
> - (if (string-match "[^\000-\177]" (car name))
> - ;; Quote a string containing non-ASCII characters.
> - ;; It will make the RFC2047 encoder cause an error
> - ;; if there are special characters.
> + (let ((name (mail-extract-address-components from)))
> + (concat
> + msg-id (if msg-id " (")
> + (if (car name)
> + (if (string-match "[^\000-\177]" (car name))
> + ;; Quote a string containing non-ASCII characters.
> + ;; It will make the RFC2047 encoder cause an error
> + ;; if there are special characters.
>                     (mm-with-multibyte-buffer
>                       (insert (car name))
>                       (goto-char (point-min))
> @@ -5662,24 +5662,24 @@ In posting styles use `(\"Expires\" 
> (make-expires-date 30))'."
>                         (forward-char))
>                       ;; Those quotes will be removed by the 
>                       ;; RFC2047 encoder.
>                       (concat "\"" (buffer-string) "\""))
> - (car name))
> - (nth 1 name))
> - "'s message of \""
> - (if (or (not date) (string= date ""))
> - "(unknown date)" date)
> - "\"" (if msg-id ")")))))))
> + (car name))
> + (nth 1 name))
> + "'s message of \""
> + (if (or (not date) (string= date ""))
> + "(unknown date)" date)
> + "\"" (if msg-id ")")))))))
>
>  (defun message-make-distribution ()
>    "Make a Distribution header."
>    (let ((orig-distribution (message-fetch-reply-field 
>    "distribution")))
>      (cond ((functionp message-distribution-function)
> - (funcall message-distribution-function))
> - (t orig-distribution))))
> + (funcall message-distribution-function))
> + (t orig-distribution))))
>
>  (defun message-make-expires ()
>    "Return an Expires header based on `message-expires'."
>    (let ((current (current-time))
> - (future (* 1.0 message-expires 60 60 24)))
> + (future (* 1.0 message-expires 60 60 24)))
>      ;; Add the future to current.
>      (setcar current (+ (car current) (round (/ future (expt 2 
>      16)))))
>      (setcar (cdr current) (+ (nth 1 current) (% (round future) 
>      (expt 2 16))))
> @@ -5689,66 +5689,66 @@ In posting styles use `(\"Expires\" 
> (make-expires-date 30))'."
>    "Return uucp path."
>    (let ((login-name (user-login-name)))
>      (cond ((null message-user-path)
> - (concat (system-name) "!" login-name))
> - ((stringp message-user-path)
> - ;; Support GENERICPATH. Suggested by [email-masked].
> - (concat message-user-path "!" login-name))
> - (t login-name))))
> + (concat (system-name) "!" login-name))
> + ((stringp message-user-path)
> + ;; Support GENERICPATH. Suggested by [email-masked].
> + (concat message-user-path "!" login-name))
> + (t login-name))))
>
>  (defun message-make-from (&optional name address)
>    "Make a From header."
>    (let* ((style message-from-style)
> - (login (or address (message-make-address)))
> - (fullname (or name user-full-name (user-full-name))))
> + (login (or address (message-make-address)))
> + (fullname (or name user-full-name (user-full-name))))
>      (when (string= fullname "&")
>        (setq fullname (user-login-name)))
>      (with-temp-buffer
>        (mm-enable-multibyte)
>        (cond
>         ((or (null style)
> - (equal fullname ""))
> - (insert login))
> + (equal fullname ""))
> + (insert login))
>         ((or (eq style 'angles)
> - (and (not (eq style 'parens))
> - ;; Use angles if no quoting is needed, or if parens would
> - ;; need quoting too.
> - (or (not (string-match "[^- !#-'*+/-9=?A-Z^-~]" fullname))
> - (let ((tmp (concat fullname nil)))
> - (while (string-match "([^()]*)" tmp)
> - (aset tmp (match-beginning 0) ?-)
> - (aset tmp (1- (match-end 0)) ?-))
> - (string-match "[\\()]" tmp)))))
> - (insert fullname)
> - (goto-char (point-min))
> - ;; Look for a character that cannot appear unquoted
> - ;; according to RFC 822.
> - (when (re-search-forward "[^- !#-'*+/-9=?A-Z^-~]" nil 1)
> - ;; Quote fullname, escaping specials.
> - (goto-char (point-min))
> - (insert "\"")
> - (while (re-search-forward "[\"\\]" nil 1)
> - (replace-match "\\\\\\&" t))
> - (insert "\""))
> - (insert " <" login ">"))
> + (and (not (eq style 'parens))
> + ;; Use angles if no quoting is needed, or if parens would
> + ;; need quoting too.
> + (or (not (string-match "[^- !#-'*+/-9=?A-Z^-~]" fullname))
> + (let ((tmp (concat fullname nil)))
> + (while (string-match "([^()]*)" tmp)
> + (aset tmp (match-beginning 0) ?-)
> + (aset tmp (1- (match-end 0)) ?-))
> + (string-match "[\\()]" tmp)))))
> + (insert fullname)
> + (goto-char (point-min))
> + ;; Look for a character that cannot appear unquoted
> + ;; according to RFC 822.
> + (when (re-search-forward "[^- !#-'*+/-9=?A-Z^-~]" nil 1)
> + ;; Quote fullname, escaping specials.
> + (goto-char (point-min))
> + (insert "\"")
> + (while (re-search-forward "[\"\\]" nil 1)
> + (replace-match "\\\\\\&" t))
> + (insert "\""))
> + (insert " <" login ">"))
>         (t ; 'parens or default
> - (insert login " (")
> - (let ((fullname-start (point)))
> - (insert fullname)
> - (goto-char fullname-start)
> - ;; RFC 822 says \ and nonmatching parentheses
> - ;; must be escaped in comments.
> - ;; Escape every instance of ()\ ...
> - (while (re-search-forward "[()\\]" nil 1)
> - (replace-match "\\\\\\&" t))
> - ;; ... then undo escaping of matching parentheses,
> - ;; including matching nested parentheses.
> - (goto-char fullname-start)
> - (while (re-search-forward
> - 
>  		  "\\(\\=\\|[^\\]\\(\\\\\\\\\\)*\\)\\\\(\\(\\([^\\]\\|\\\\\\\\\\)*\\)\\\\)"
> - nil 1)
> - (replace-match "\\1(\\3)" t)
> - (goto-char fullname-start)))
> - (insert ")")))
> + (insert login " (")
> + (let ((fullname-start (point)))
> + (insert fullname)
> + (goto-char fullname-start)
> + ;; RFC 822 says \ and nonmatching parentheses
> + ;; must be escaped in comments.
> + ;; Escape every instance of ()\ ...
> + (while (re-search-forward "[()\\]" nil 1)
> + (replace-match "\\\\\\&" t))
> + ;; ... then undo escaping of matching parentheses,
> + ;; including matching nested parentheses.
> + (goto-char fullname-start)
> + (while (re-search-forward
> + 
>            "\\(\\=\\|[^\\]\\(\\\\\\\\\\)*\\)\\\\(\\(\\([^\\]\\|\\\\\\\\\\)*\\)\\\\)"
> + nil 1)
> + (replace-match "\\1(\\3)" t)
> + (goto-char fullname-start)))
> + (insert ")")))
>        (buffer-string))))
>
>  (defun message-make-sender ()
> @@ -5765,55 +5765,55 @@ give as trustworthy answer as possible."
>  (defun message-user-mail-address ()
>    "Return the pertinent part of `user-mail-address'."
>    (when (and user-mail-address
> - (string-match "@.*\\." user-mail-address))
> + (string-match "@.*\\." user-mail-address))
>      (if (string-match " " user-mail-address)
> - (nth 1 (mail-extract-address-components user-mail-address))
> + (nth 1 (mail-extract-address-components user-mail-address))
>        user-mail-address)))
>
>  (defun message-sendmail-envelope-from ()
>    "Return the envelope from."
>    (cond ((eq message-sendmail-envelope-from 'header)
> - (nth 1 (mail-extract-address-components
> - (message-fetch-field "from"))))
> - ((stringp message-sendmail-envelope-from)
> - message-sendmail-envelope-from)
> - (t
> - (message-make-address))))
> + (nth 1 (mail-extract-address-components
> + (message-fetch-field "from"))))
> + ((stringp message-sendmail-envelope-from)
> + message-sendmail-envelope-from)
> + (t
> + (message-make-address))))
>
>  (defun message-make-fqdn ()
>    "Return user's fully qualified domain name."
>    (let* ((sysname (system-name))
> - (user-mail (message-user-mail-address))
> - (user-domain
> - (if (and user-mail
> - (string-match "@\\(.*\\)\\'" user-mail))
> - (match-string 1 user-mail)))
> - (case-fold-search t))
> + (user-mail (message-user-mail-address))
> + (user-domain
> + (if (and user-mail
> + (string-match "@\\(.*\\)\\'" user-mail))
> + (match-string 1 user-mail)))
> + (case-fold-search t))
>      (cond
>       ((and message-user-fqdn
> - (stringp message-user-fqdn)
> - (not (string-match message-bogus-system-names 
>  	   message-user-fqdn)))
> + (stringp message-user-fqdn)
> + (not (string-match message-bogus-system-names 
>         message-user-fqdn)))
>        ;; `message-user-fqdn' seems to be valid
>        message-user-fqdn)
>       ;; A system name without any dots is unlikely to be a good 
>       ;; fully
>       ;; qualified domain name.
>       ((and (string-match "[.]" sysname)
> - (not (string-match message-bogus-system-names sysname)))
> + (not (string-match message-bogus-system-names sysname)))
>        ;; `system-name' returned the right result.
>        sysname)
>       ;; Try `mail-host-address'.
>       ((and (stringp mail-host-address)
> - (not (string-match message-bogus-system-names 
>  	   mail-host-address)))
> + (not (string-match message-bogus-system-names 
>         mail-host-address)))
>        mail-host-address)
>       ;; We try `user-mail-address' as a backup.
>       ((and user-domain
> - (stringp user-domain)
> - (not (string-match message-bogus-system-names user-domain)))
> + (stringp user-domain)
> + (not (string-match message-bogus-system-names user-domain)))
>        user-domain)
>       ;; Default to this bogus thing.
>       (t
>        (concat sysname
> - ".i-did-not-set--mail-host-address--so-tickle-me")))))
> + ".i-did-not-set--mail-host-address--so-tickle-me")))))
>
>  (defun message-make-domain ()
>    "Return the domain name."
> @@ -5827,53 +5827,53 @@ Remove all addresses but the list 
> address from To and Cc headers."
>    (let ((listaddr (message-make-mail-followup-to t)))
>      (when listaddr
>        (save-excursion
> - (message-remove-header "to")
> - (message-remove-header "cc")
> - (message-position-on-field "To" "X-Draft-From")
> - (insert listaddr)))))
> + (message-remove-header "to")
> + (message-remove-header "cc")
> + (message-position-on-field "To" "X-Draft-From")
> + (insert listaddr)))))
>
>  (defun message-make-mail-followup-to (&optional 
>  only-show-subscribed)
>    "Return the Mail-Followup-To header.
>  If passed the optional argument ONLY-SHOW-SUBSCRIBED only 
>  return the
>  subscribed address (and not the additional To and Cc header 
>  contents)."
>    (let* ((case-fold-search t)
> - (to (message-fetch-field "To"))
> - (cc (message-fetch-field "cc"))
> - (msg-recipients (concat to (and to cc ", ") cc))
> - (recipients
> - (mapcar 'mail-strip-quoted-names
> - (message-tokenize-header msg-recipients)))
> - (file-regexps
> - (if message-subscribed-address-file
> - (let (begin end item re)
> - (save-excursion
> - (with-temp-buffer
> - (insert-file-contents message-subscribed-address-file)
> - (while (not (eobp))
> - (setq begin (point))
> - (forward-line 1)
> - (setq end (point))
> - (if (bolp) (setq end (1- end)))
> - (setq item (regexp-quote (buffer-substring begin end)))
> - (if re (setq re (concat re "\\|" item))
> - (setq re (concat "\\`\\(" item))))
> - (and re (list (concat re "\\)\\'"))))))))
> - (mft-regexps (apply 'append message-subscribed-regexps
> - (mapcar 'regexp-quote
> - message-subscribed-addresses)
> - file-regexps
> - (mapcar 'funcall
> - message-subscribed-address-functions))))
> + (to (message-fetch-field "To"))
> + (cc (message-fetch-field "cc"))
> + (msg-recipients (concat to (and to cc ", ") cc))
> + (recipients
> + (mapcar 'mail-strip-quoted-names
> + (message-tokenize-header msg-recipients)))
> + (file-regexps
> + (if message-subscribed-address-file
> + (let (begin end item re)
> + (save-excursion
> + (with-temp-buffer
> + (insert-file-contents message-subscribed-address-file)
> + (while (not (eobp))
> + (setq begin (point))
> + (forward-line 1)
> + (setq end (point))
> + (if (bolp) (setq end (1- end)))
> + (setq item (regexp-quote (buffer-substring begin end)))
> + (if re (setq re (concat re "\\|" item))
> + (setq re (concat "\\`\\(" item))))
> + (and re (list (concat re "\\)\\'"))))))))
> + (mft-regexps (apply 'append message-subscribed-regexps
> + (mapcar 'regexp-quote
> + message-subscribed-addresses)
> + file-regexps
> + (mapcar 'funcall
> + message-subscribed-address-functions))))
>      (save-match-data
>        (let ((list
> - (cl-loop for recipient in recipients
> - when (cl-loop for regexp in mft-regexps
> - thereis (string-match regexp recipient))
> - return recipient)))
> - (when list
> - (if only-show-subscribed
> - list
> - msg-recipients))))))
> + (cl-loop for recipient in recipients
> + when (cl-loop for regexp in mft-regexps
> + thereis (string-match regexp recipient))
> + return recipient)))
> + (when list
> + (if only-show-subscribed
> + list
> + msg-recipients))))))
>
>  (defun message-idna-to-ascii-rhs-1 (header)
>    "Interactively potentially IDNA encode domain names in 
>    HEADER."
> @@ -5881,30 +5881,30 @@ subscribed address (and not the 
> additional To and Cc header contents)."
>          ace)
>      (when field
>        (dolist (rhs
> - (delete-dups
> - (mapcar (lambda (rhs) (or (cadr (split-string rhs "@")) ""))
> - (mapcar 'downcase
> - (mapcar
> - (lambda (elem)
> - (or (cadr elem)
> - ""))
> - (mail-extract-address-components field t))))))
> - ;; Note that `rhs' will be "" if the address does not have
> - ;; the domain part, i.e., if it is a local user's address.
> - (setq ace (if (string-match "\\`[[:ascii:]]*\\'" rhs)
> - rhs
> - (downcase (puny-encode-domain rhs))))
> - (when (and (not (equal rhs ace))
> - (or (not (eq message-use-idna 'ask))
> - (y-or-n-p (format "Replace %s with %s in %s:? "
> - rhs ace header))))
> - (goto-char (point-min))
> - (while (re-search-forward (concat "^" header ":") nil t)
> - (message-narrow-to-field)
> - (while (search-forward (concat "@" rhs) nil t)
> - (replace-match (concat "@" ace) t t))
> - (goto-char (point-max))
> - (widen)))))))
> + (delete-dups
> + (mapcar (lambda (rhs) (or (cadr (split-string rhs "@")) ""))
> + (mapcar 'downcase
> + (mapcar
> + (lambda (elem)
> + (or (cadr elem)
> + ""))
> + (mail-extract-address-components field t))))))
> + ;; Note that `rhs' will be "" if the address does not have
> + ;; the domain part, i.e., if it is a local user's address.
> + (setq ace (if (string-match "\\`[[:ascii:]]*\\'" rhs)
> + rhs
> + (downcase (puny-encode-domain rhs))))
> + (when (and (not (equal rhs ace))
> + (or (not (eq message-use-idna 'ask))
> + (y-or-n-p (format "Replace %s with %s in %s:? "
> + rhs ace header))))
> + (goto-char (point-min))
> + (while (re-search-forward (concat "^" header ":") nil t)
> + (message-narrow-to-field)
> + (while (search-forward (concat "@" rhs) nil t)
> + (replace-match (concat "@" ace) t t))
> + (goto-char (point-max))
> + (widen)))))))
>
>  (defun message-idna-to-ascii-rhs ()
>    "Possibly IDNA encode non-ASCII domain names in From:, To: 
>    and Cc: headers.
> @@ -5913,19 +5913,19 @@ See `message-idna-encode'."
>    (when message-use-idna
>      (save-excursion
>        (save-restriction
> - ;; `message-narrow-to-head' that recognizes only the first 
>  	;; empty
> - ;; line as the message header separator used to be used here.
> - ;; However, since there is the "--text follows this line--" 
>  	;; line
> - ;; normally, it failed in narrowing to the headers and 
>  	;; potentially
> - ;; caused the IDNA encoding on lines that look like headers in
> - ;; the message body.
> - (message-narrow-to-headers-or-head)
> - (message-idna-to-ascii-rhs-1 "From")
> - (message-idna-to-ascii-rhs-1 "To")
> - (message-idna-to-ascii-rhs-1 "Reply-To")
> - (message-idna-to-ascii-rhs-1 "Mail-Reply-To")
> - (message-idna-to-ascii-rhs-1 "Mail-Followup-To")
> - (message-idna-to-ascii-rhs-1 "Cc")))))
> + ;; `message-narrow-to-head' that recognizes only the first 
>      ;; empty
> + ;; line as the message header separator used to be used here.
> + ;; However, since there is the "--text follows this line--" 
>      ;; line
> + ;; normally, it failed in narrowing to the headers and 
>      ;; potentially
> + ;; caused the IDNA encoding on lines that look like headers in
> + ;; the message body.
> + (message-narrow-to-headers-or-head)
> + (message-idna-to-ascii-rhs-1 "From")
> + (message-idna-to-ascii-rhs-1 "To")
> + (message-idna-to-ascii-rhs-1 "Reply-To")
> + (message-idna-to-ascii-rhs-1 "Mail-Reply-To")
> + (message-idna-to-ascii-rhs-1 "Mail-Followup-To")
> + (message-idna-to-ascii-rhs-1 "Cc")))))
>
>  (defun message-generate-headers (headers)
>    "Prepare article HEADERS.
> @@ -5934,155 +5934,155 @@ Headers already prepared in the buffer 
> are not modified."
>    (save-restriction
>      (message-narrow-to-headers)
>      (let* ((header-values
> - (list 'Date (message-make-date)
> - 'Message-ID (message-make-message-id)
> - 'Organization (message-make-organization)
> - 'From (message-make-from)
> - 'Path (message-make-path)
> - 'Subject nil
> - 'Newsgroups nil
> - 'In-Reply-To (message-make-in-reply-to)
> - 'References (message-make-references)
> - 'To nil
> - 'Distribution (message-make-distribution)
> - 'Lines (message-make-lines)
> - 'User-Agent message-newsreader
> - 'Expires (message-make-expires)))
> - (case-fold-search t)
> - (optionalp nil)
> - header value elem header-string)
> + (list 'Date (message-make-date)
> + 'Message-ID (message-make-message-id)
> + 'Organization (message-make-organization)
> + 'From (message-make-from)
> + 'Path (message-make-path)
> + 'Subject nil
> + 'Newsgroups nil
> + 'In-Reply-To (message-make-in-reply-to)
> + 'References (message-make-references)
> + 'To nil
> + 'Distribution (message-make-distribution)
> + 'Lines (message-make-lines)
> + 'User-Agent message-newsreader
> + 'Expires (message-make-expires)))
> + (case-fold-search t)
> + (optionalp nil)
> + header value elem header-string)
>        ;; First we remove any old generated headers.
>        (let ((headers message-deletable-headers))
> - (unless (buffer-modified-p)
> - (setq headers (delq 'Message-ID (copy-sequence headers))))
> - (while headers
> - (goto-char (point-min))
> - (and (re-search-forward
> - (concat "^" (symbol-name (car headers)) ": *") nil t)
> - (get-text-property (1+ (match-beginning 0)) 
>  	       'message-deletable)
> - (message-delete-line))
> - (pop headers)))
> + (unless (buffer-modified-p)
> + (setq headers (delq 'Message-ID (copy-sequence headers))))
> + (while headers
> + (goto-char (point-min))
> + (and (re-search-forward
> + (concat "^" (symbol-name (car headers)) ": *") nil t)
> + (get-text-property (1+ (match-beginning 0)) 
>             'message-deletable)
> + (message-delete-line))
> + (pop headers)))
>        ;; Go through all the required headers and see if they 
>        ;; are in the
>        ;; articles already. If they are not, or are empty, they 
>        ;; are
>        ;; inserted automatically - except for Subject, 
>        ;; Newsgroups and
>        ;; Distribution.
>        (while headers
> - (goto-char (point-min))
> - (setq elem (pop headers))
> - (if (consp elem)
> - (if (eq (car elem) 'optional)
> - (setq header (cdr elem)
> - optionalp t)
> - (setq header (car elem)))
> - (setq header elem))
> - (setq header-string (if (stringp header)
> - header
> - (symbol-name header)))
> - (when (or (not (re-search-forward
> - (concat "^"
> - (regexp-quote (downcase header-string))
> - ":")
> - nil t))
> - (progn
> - ;; The header was found. We insert a space after the
> - ;; colon, if there is none.
> - (if (/= (char-after) ? ) (insert " ") (forward-char 1))
> - ;; Find out whether the header is empty.
> - (looking-at "[ \t]*\n[^ \t]")))
> - ;; So we find out what value we should insert.
> - (setq value
> - (cond
> - ((and (consp elem)
> - (eq (car elem) 'optional)
> - (not (member header-string message-inserted-headers)))
> - ;; This is an optional header. If the cdr of this
> - ;; is something that is nil, then we do not insert
> - ;; this header.
> - (setq header (cdr elem))
> - (or (and (functionp (cdr elem))
> - (funcall (cdr elem)))
> - (and (symbolp (cdr elem))
> - (plist-get header-values (cdr elem)))))
> - ((consp elem)
> - ;; The element is a cons. Either the cdr is a
> - ;; string to be inserted verbatim, or it is a
> - ;; function, and we insert the value returned from
> - ;; this function.
> - (or (and (stringp (cdr elem))
> - (cdr elem))
> - (and (functionp (cdr elem))
> - (funcall (cdr elem)))))
> - ((and (symbolp header)
> - (plist-member header-values header))
> - ;; The element is a symbol. We insert the value of
> - ;; this symbol, if any.
> - (plist-get header-values header))
> - ((not (message-check-element
> - (intern (downcase (symbol-name header)))))
> - ;; We couldn't generate a value for this header,
> - ;; so we just ask the user.
> - (read-from-minibuffer
> - (format "Empty header for %s; enter value: " header)))))
> - ;; Finally insert the header.
> - (when (and value
> - (not (equal value "")))
> - (save-excursion
> - (if (bolp)
> - (progn
> - ;; This header didn't exist, so we insert it.
> - (goto-char (point-max))
> - (let ((formatter
> - (cdr (assq header message-header-format-alist))))
> - (if formatter
> - (funcall formatter header value)
> - (insert header-string ": " value))
> - (push header-string message-inserted-headers)
> - (goto-char (message-fill-field))
> - ;; We check whether the value was ended by a
> - ;; newline. If not, we insert one.
> - (unless (bolp)
> - (insert "\n"))
> - (forward-line -1)))
> - ;; The value of this header was empty, so we clear
> - ;; totally and insert the new value.
> - (delete-region (point) (point-at-eol))
> - ;; If the header is optional, and the header was
> - ;; empty, we can't insert it anyway.
> - (unless optionalp
> - (push header-string message-inserted-headers)
> - (insert value)
> - (message-fill-field)))
> - ;; Add the deletable property to the headers that require it.
> - (and (memq header message-deletable-headers)
> - (progn (beginning-of-line) (looking-at "[^:]+: "))
> - (add-text-properties
> - (point) (match-end 0)
> - '(message-deletable t face italic) (current-buffer)))))))
> + (goto-char (point-min))
> + (setq elem (pop headers))
> + (if (consp elem)
> + (if (eq (car elem) 'optional)
> + (setq header (cdr elem)
> + optionalp t)
> + (setq header (car elem)))
> + (setq header elem))
> + (setq header-string (if (stringp header)
> + header
> + (symbol-name header)))
> + (when (or (not (re-search-forward
> + (concat "^"
> + (regexp-quote (downcase header-string))
> + ":")
> + nil t))
> + (progn
> + ;; The header was found. We insert a space after the
> + ;; colon, if there is none.
> + (if (/= (char-after) ? ) (insert " ") (forward-char 1))
> + ;; Find out whether the header is empty.
> + (looking-at "[ \t]*\n[^ \t]")))
> + ;; So we find out what value we should insert.
> + (setq value
> + (cond
> + ((and (consp elem)
> + (eq (car elem) 'optional)
> + (not (member header-string message-inserted-headers)))
> + ;; This is an optional header. If the cdr of this
> + ;; is something that is nil, then we do not insert
> + ;; this header.
> + (setq header (cdr elem))
> + (or (and (functionp (cdr elem))
> + (funcall (cdr elem)))
> + (and (symbolp (cdr elem))
> + (plist-get header-values (cdr elem)))))
> + ((consp elem)
> + ;; The element is a cons. Either the cdr is a
> + ;; string to be inserted verbatim, or it is a
> + ;; function, and we insert the value returned from
> + ;; this function.
> + (or (and (stringp (cdr elem))
> + (cdr elem))
> + (and (functionp (cdr elem))
> + (funcall (cdr elem)))))
> + ((and (symbolp header)
> + (plist-member header-values header))
> + ;; The element is a symbol. We insert the value of
> + ;; this symbol, if any.
> + (plist-get header-values header))
> + ((not (message-check-element
> + (intern (downcase (symbol-name header)))))
> + ;; We couldn't generate a value for this header,
> + ;; so we just ask the user.
> + (read-from-minibuffer
> + (format "Empty header for %s; enter value: " header)))))
> + ;; Finally insert the header.
> + (when (and value
> + (not (equal value "")))
> + (save-excursion
> + (if (bolp)
> + (progn
> + ;; This header didn't exist, so we insert it.
> + (goto-char (point-max))
> + (let ((formatter
> + (cdr (assq header message-header-format-alist))))
> + (if formatter
> + (funcall formatter header value)
> + (insert header-string ": " value))
> + (push header-string message-inserted-headers)
> + (goto-char (message-fill-field))
> + ;; We check whether the value was ended by a
> + ;; newline. If not, we insert one.
> + (unless (bolp)
> + (insert "\n"))
> + (forward-line -1)))
> + ;; The value of this header was empty, so we clear
> + ;; totally and insert the new value.
> + (delete-region (point) (point-at-eol))
> + ;; If the header is optional, and the header was
> + ;; empty, we can't insert it anyway.
> + (unless optionalp
> + (push header-string message-inserted-headers)
> + (insert value)
> + (message-fill-field)))
> + ;; Add the deletable property to the headers that require it.
> + (and (memq header message-deletable-headers)
> + (progn (beginning-of-line) (looking-at "[^:]+: "))
> + (add-text-properties
> + (point) (match-end 0)
> + '(message-deletable t face italic) (current-buffer)))))))
>        ;; Insert new Sender if the From is strange.
>        (let ((from (message-fetch-field "from"))
> - (sender (message-fetch-field "sender"))
> - (secure-sender (message-make-sender)))
> - (when (and from
> - (not (message-check-element 'sender))
> - (not (string=
> - (downcase
> - (cadr (mail-extract-address-components from)))
> - (downcase secure-sender)))
> - (or (null sender)
> - (not
> - (string=
> - (downcase
> - (cadr (mail-extract-address-components sender)))
> - (downcase secure-sender)))))
> - (goto-char (point-min))
> - ;; Rename any old Sender headers to Original-Sender.
> - (when (re-search-forward "^\\(Original-\\)*Sender:" nil t)
> - (beginning-of-line)
> - (insert "Original-")
> - (beginning-of-line))
> - (when (or (message-news-p)
> - (string-match "@.+\\.." secure-sender))
> - (insert "Sender: " secure-sender "\n"))))
> + (sender (message-fetch-field "sender"))
> + (secure-sender (message-make-sender)))
> + (when (and from
> + (not (message-check-element 'sender))
> + (not (string=
> + (downcase
> + (cadr (mail-extract-address-components from)))
> + (downcase secure-sender)))
> + (or (null sender)
> + (not
> + (string=
> + (downcase
> + (cadr (mail-extract-address-components sender)))
> + (downcase secure-sender)))))
> + (goto-char (point-min))
> + ;; Rename any old Sender headers to Original-Sender.
> + (when (re-search-forward "^\\(Original-\\)*Sender:" nil t)
> + (beginning-of-line)
> + (insert "Original-")
> + (beginning-of-line))
> + (when (or (message-news-p)
> + (string-match "@.+\\.." secure-sender))
> + (insert "Sender: " secure-sender "\n"))))
>        ;; Check for IDNA
>        (message-idna-to-ascii-rhs))))
>
> @@ -6091,17 +6091,17 @@ Headers already prepared in the buffer 
> are not modified."
>    (let (newsgroups)
>      (save-excursion
>        (save-restriction
> - (message-narrow-to-headers)
> - (when (setq newsgroups (message-fetch-field "newsgroups"))
> - (goto-char (point-max))
> - (insert "Posted-To: " newsgroups "\n")))
> + (message-narrow-to-headers)
> + (when (setq newsgroups (message-fetch-field "newsgroups"))
> + (goto-char (point-max))
> + (insert "Posted-To: " newsgroups "\n")))
>        (forward-line 1)
>        (when message
> - (cond
> - ((string-match "%s" message)
> - (insert (format message newsgroups)))
> - (t
> - (insert message)))))))
> + (cond
> + ((string-match "%s" message)
> + (insert (format message newsgroups)))
> + (t
> + (insert message)))))))
>
>  ;;;
>  ;;; Setting up a message buffer
> @@ -6109,19 +6109,19 @@ Headers already prepared in the buffer 
> are not modified."
>
>  (defun message-skip-to-next-address ()
>    (let ((end (save-excursion
> - (message-next-header)
> - (point)))
> - quoted char)
> + (message-next-header)
> + (point)))
> + quoted char)
>      (when (looking-at ",")
>        (forward-char 1))
>      (while (and (not (= (point) end))
> - (or (not (eq char ?,))
> - quoted))
> + (or (not (eq char ?,))
> + quoted))
>        (skip-chars-forward "^,\"" end)
>        (when (eq (setq char (following-char)) ?\")
> - (setq quoted (not quoted)))
> + (setq quoted (not quoted)))
>        (unless (= (point) end)
> - (forward-char 1)))
> + (forward-char 1)))
>      (skip-chars-forward " \t\n")))
>
>  (defun message-split-line ()
> @@ -6132,8 +6132,8 @@ If the current line has 
> `message-yank-prefix', insert it on the new line."
>
>  (defun message-insert-header (header value)
>    (insert (capitalize (symbol-name header))
> - ": "
> - (if (consp value) (car value) value)))
> + ": "
> + (if (consp value) (car value) value)))
>
>  (defun message-field-name ()
>    (save-excursion
> @@ -6146,8 +6146,8 @@ If the current line has 
> `message-yank-prefix', insert it on the new line."
>      (save-restriction
>        (message-narrow-to-field)
>        (let ((field-name (message-field-name)))
> - (funcall (or (cadr (assq field-name message-field-fillers))
> - 'message-fill-field-general)))
> + (funcall (or (cadr (assq field-name message-field-fillers))
> + 'message-fill-field-general)))
>        (point-max))))
>
>  (defun message-fill-field-address ()
> @@ -6155,25 +6155,25 @@ If the current line has 
> `message-yank-prefix', insert it on the new line."
>      (while (not end)
>        (message-skip-to-next-address)
>        (cond ((bolp)
> - (end-of-line 0)
> - (setq end 1))
> - ((eobp)
> - (setq end 0)))
> + (end-of-line 0)
> + (setq end 1))
> + ((eobp)
> + (setq end 0)))
>        (when (and (> (current-column) 78)
> - last)
> - (save-excursion
> - (goto-char last)
> - (delete-char (- (skip-chars-backward " \t")))
> - (insert "\n\t")))
> + last)
> + (save-excursion
> + (goto-char last)
> + (delete-char (- (skip-chars-backward " \t")))
> + (insert "\n\t")))
>        (setq last (point)))
>      (forward-line end)))
>
>  (defun message-fill-field-general ()
>    (let ((begin (point))
> - (fill-column 78)
> - (fill-prefix "\t"))
> + (fill-column 78)
> + (fill-prefix "\t"))
>      (while (and (search-forward "\n" nil t)
> - (not (eobp)))
> + (not (eobp)))
>        (replace-match " " t t))
>      (fill-region-as-paragraph begin (point-max))
>      ;; Tapdance around looong Message-IDs.
> @@ -6189,7 +6189,7 @@ If the current line has 
> `message-yank-prefix', insert it on the new line."
>  (defun message-shorten-1 (list cut surplus)
>    "Cut SURPLUS elements out of LIST, beginning with CUTth one."
>    (setcdr (nthcdr (- cut 2) list)
> - (nthcdr (+ (- cut 2) surplus 1) list)))
> + (nthcdr (+ (- cut 2) surplus 1) list)))
>
>  (defun message-shorten-references (header references)
>    "Trim REFERENCES to be 21 Message-ID long or less, and fold 
>    them.
> @@ -6198,9 +6198,9 @@ than 988 characters long, and if they are 
> not, trim them until
>  they are."
>    ;; 21 is the number suggested by USAGE.
>    (let ((maxcount 21)
> - (count 0)
> - (cut 2)
> - refs)
> + (count 0)
> + (cut 2)
> + refs)
>      (with-temp-buffer
>        (insert references)
>        (goto-char (point-min))
> @@ -6208,17 +6208,17 @@ they are."
>        ;; with whitespace or missing brackets (7.a "Does not 
>        ;; propagate broken
>        ;; Message-IDs in original References").
>        (while (re-search-forward "<[^ <]+@[^ <]+>" nil t)
> - (push (match-string 0) refs))
> + (push (match-string 0) refs))
>        (setq refs (nreverse refs)
> - count (length refs)))
> + count (length refs)))
>
>      ;; If the list has more than MAXCOUNT elements, trim it by
>      ;; removing the CUTth element and the required number of
>      ;; elements that follow.
>      (when (> count maxcount)
>        (let ((surplus (- count maxcount)))
> - (message-shorten-1 refs cut surplus)
> - (cl-decf count surplus)))
> + (message-shorten-1 refs cut surplus)
> + (cl-decf count surplus)))
>
>      ;; When sending via news, make sure the total folded length 
>      ;; will
>      ;; be less than 998 characters. This is to cater to broken 
>      ;; INN
> @@ -6232,11 +6232,11 @@ they are."
>      ;; message-this-is-news directly.
>      (when message-this-is-news
>        (while (< 998
> - (with-temp-buffer
> - (message-insert-header
> - header (mapconcat #'identity refs " "))
> - (buffer-size)))
> - (message-shorten-1 refs cut 1)))
> + (with-temp-buffer
> + (message-insert-header
> + header (mapconcat #'identity refs " "))
> + (buffer-size)))
> + (message-shorten-1 refs cut 1)))
>      ;; Finally, collect the references back into a string and 
>      ;; insert
>      ;; it into the buffer.
>      (message-insert-header header (mapconcat #'identity refs " 
>      "))))
> @@ -6250,7 +6250,7 @@ they are."
>      (widen)
>      (forward-char 1)
>      (if (eq (char-after) ? )
> - (forward-char 1)
> + (forward-char 1)
>        (insert " ")))
>     (t
>      (goto-char (point-max))
> @@ -6346,13 +6346,13 @@ moved to the beginning "
>     ((memq message-generate-new-buffers '(unique t))
>      (generate-new-buffer-name
>       (concat "*" type
> - (if to
> - (concat " to "
> - (or (car (mail-extract-address-components to))
> - to) "")
> - "")
> - (if (and group (not (string= group ""))) (concat " on " group) 
>  	     "")
> - "*")))
> + (if to
> + (concat " to "
> + (or (car (mail-extract-address-components to))
> + to) "")
> + "")
> + (if (and group (not (string= group ""))) (concat " on " group) 
>           "")
> + "*")))
>     ;; Check whether `message-generate-new-buffers' is a 
>     ;; function,
>     ;; and if so, call it.
>     ((functionp message-generate-new-buffers)
> @@ -6360,62 +6360,62 @@ moved to the beginning "
>     ((eq message-generate-new-buffers 'unsent)
>      (generate-new-buffer-name
>       (concat "*unsent " type
> - (if to
> - (concat " to "
> - (or (car (mail-extract-address-components to))
> - to) "")
> - "")
> - (if (and group (not (string= group ""))) (concat " on " group) 
>  	     "")
> - "*")))
> + (if to
> + (concat " to "
> + (or (car (mail-extract-address-components to))
> + to) "")
> + "")
> + (if (and group (not (string= group ""))) (concat " on " group) 
>           "")
> + "*")))
>     ;; Search for the existing message buffer with the specified 
>     ;; name.
>     (t
>      (let* ((new (if (eq message-generate-new-buffers 'standard)
> - (generate-new-buffer-name (concat "*" type " message*"))
> - (let ((message-generate-new-buffers 'unique))
> - (message-buffer-name type to group))))
> - (regexp (concat "\\`"
> - (regexp-quote
> - (if (string-match "<[0-9]+>\\'" new)
> - (substring new 0 (match-beginning 0))
> - new))
> - "\\(?:<\\([0-9]+\\)>\\)?\\'"))
> - (case-fold-search nil))
> + (generate-new-buffer-name (concat "*" type " message*"))
> + (let ((message-generate-new-buffers 'unique))
> + (message-buffer-name type to group))))
> + (regexp (concat "\\`"
> + (regexp-quote
> + (if (string-match "<[0-9]+>\\'" new)
> + (substring new 0 (match-beginning 0))
> + new))
> + "\\(?:<\\([0-9]+\\)>\\)?\\'"))
> + (case-fold-search nil))
>        (or (cdar
> - (last
> - (sort
> - (delq nil
> - (mapcar
> - (lambda (b)
> - (when (and (string-match regexp (setq b (buffer-name b)))
> - (eq (with-current-buffer b major-mode)
> - 'message-mode))
> - (cons (string-to-number (or (match-string 1 b) "1"))
> - b)))
> - (buffer-list)))
> - 'car-less-than-car)))
> - new)))))
> + (last
> + (sort
> + (delq nil
> + (mapcar
> + (lambda (b)
> + (when (and (string-match regexp (setq b (buffer-name b)))
> + (eq (with-current-buffer b major-mode)
> + 'message-mode))
> + (cons (string-to-number (or (match-string 1 b) "1"))
> + b)))
> + (buffer-list)))
> + 'car-less-than-car)))
> + new)))))
>
>  (defun message-pop-to-buffer (name &optional switch-function)
>    "Pop to buffer NAME, and warn if it already exists and is 
>    modified."
>    (let ((buffer (get-buffer name)))
>      (if (and buffer
> - (buffer-name buffer))
> - (let ((window (get-buffer-window buffer 0)))
> - (if window
> - ;; Raise the frame already displaying the message buffer.
> - (progn
> - (select-frame-set-input-focus (window-frame window))
> - (select-window window))
> - (funcall (or switch-function #'pop-to-buffer) buffer)
> - (set-buffer buffer))
> - (when (and (buffer-modified-p)
> - (not (prog1
> - (y-or-n-p
> - "Message already being composed; erase? ")
> - (message nil))))
> - (error "Message being composed")))
> + (buffer-name buffer))
> + (let ((window (get-buffer-window buffer 0)))
> + (if window
> + ;; Raise the frame already displaying the message buffer.
> + (progn
> + (select-frame-set-input-focus (window-frame window))
> + (select-window window))
> + (funcall (or switch-function #'pop-to-buffer) buffer)
> + (set-buffer buffer))
> + (when (and (buffer-modified-p)
> + (not (prog1
> + (y-or-n-p
> + "Message already being composed; erase? ")
> + (message nil))))
> + (error "Message being composed")))
>        (funcall (or switch-function 'pop-to-buffer-same-window)
> - name)
> + name)
>        (set-buffer name))
>      (erase-buffer)
>      (message-mode)))
> @@ -6426,13 +6426,13 @@ moved to the beginning "
>    ;; list of buffers.
>    (setq message-buffer-list (delq (current-buffer) 
>    message-buffer-list))
>    (while (and message-max-buffers
> - message-buffer-list
> - (>= (length message-buffer-list) message-max-buffers))
> + message-buffer-list
> + (>= (length message-buffer-list) message-max-buffers))
>      ;; Kill the oldest buffer -- unless it has been changed.
>      (let ((buffer (pop message-buffer-list)))
>        (when (and (buffer-name buffer)
> - (not (buffer-modified-p buffer)))
> - (kill-buffer buffer))))
> + (not (buffer-modified-p buffer)))
> + (kill-buffer buffer))))
>    ;; Rename the buffer.
>    (if message-send-rename-function
>        (funcall message-send-rename-function)
> @@ -6440,72 +6440,72 @@ moved to the beginning "
>    ;; Push the current buffer onto the list.
>    (when message-max-buffers
>      (setq message-buffer-list
> - (nconc message-buffer-list (list (current-buffer))))))
> + (nconc message-buffer-list (list (current-buffer))))))
>
>  (defun message-default-send-rename-function ()
>    ;; Note: mail-abbrevs of XEmacs renames buffer name behind 
>    ;; Gnus.
>    (when (string-match
> - "\\`\\*\\(sent \\|unsent \\)?\\(.+\\)\\*[^\\*]*\\|\\`mail to "
> - (buffer-name))
> + "\\`\\*\\(sent \\|unsent \\)?\\(.+\\)\\*[^\\*]*\\|\\`mail to "
> + (buffer-name))
>      (let ((name (match-string 2 (buffer-name)))
> - to group)
> + to group)
>        (if (not (or (null name)
> - (string-equal name "mail")
> - (string-equal name "posting")))
> - (setq name (concat "*sent " name "*"))
> - (message-narrow-to-headers)
> - (setq to (message-fetch-field "to"))
> - (setq group (message-fetch-field "newsgroups"))
> - (widen)
> - (setq name
> - (cond
> - (to (concat "*sent mail to "
> - (or (car (mail-extract-address-components to))
> - to) "*"))
> - ((and group (not (string= group "")))
> - (concat "*sent posting on " group "*"))
> - (t "*sent mail*"))))
> + (string-equal name "mail")
> + (string-equal name "posting")))
> + (setq name (concat "*sent " name "*"))
> + (message-narrow-to-headers)
> + (setq to (message-fetch-field "to"))
> + (setq group (message-fetch-field "newsgroups"))
> + (widen)
> + (setq name
> + (cond
> + (to (concat "*sent mail to "
> + (or (car (mail-extract-address-components to))
> + to) "*"))
> + ((and group (not (string= group "")))
> + (concat "*sent posting on " group "*"))
> + (t "*sent mail*"))))
>        (unless (string-equal name (buffer-name))
> - (rename-buffer name t)))))
> + (rename-buffer name t)))))
>
>  (defun message-mail-user-agent ()
>    (let ((mua (cond
> - ((not message-mail-user-agent) nil)
> - ((eq message-mail-user-agent t) mail-user-agent)
> - (t message-mail-user-agent))))
> + ((not message-mail-user-agent) nil)
> + ((eq message-mail-user-agent t) mail-user-agent)
> + (t message-mail-user-agent))))
>      (if (memq mua '(message-user-agent gnus-user-agent))
> - nil
> + nil
>        mua)))
>
>  ;; YANK-ACTION, if non-nil, can be a buffer or a yank action of 
>  ;; the
>  ;; form (FUNCTION . ARGS).
>  (defun message-setup (headers &optional yank-action actions
> - continue switch-function return-action)
> + continue switch-function return-action)
>    (let ((mua (message-mail-user-agent))
> - subject to field)
> + subject to field)
>      (if (not (and message-this-is-mail mua))
> - (message-setup-1 headers yank-action actions return-action)
> + (message-setup-1 headers yank-action actions return-action)
>        (setq headers (copy-sequence headers))
>        (setq field (assq 'Subject headers))
>        (when field
> - (setq subject (cdr field))
> - (setq headers (delq field headers)))
> + (setq subject (cdr field))
> + (setq headers (delq field headers)))
>        (setq field (assq 'To headers))
>        (when field
> - (setq to (cdr field))
> - (setq headers (delq field headers)))
> + (setq to (cdr field))
> + (setq headers (delq field headers)))
>        (let ((mail-user-agent mua))
> - (compose-mail to subject
> - (mapcar (lambda (item)
> - (cons
> - (format "%s" (car item))
> - (cdr item)))
> - headers)
> - continue switch-function
> - (if (bufferp yank-action)
> - (list 'insert-buffer yank-action)
> - yank-action)
> - actions)))))
> + (compose-mail to subject
> + (mapcar (lambda (item)
> + (cons
> + (format "%s" (car item))
> + (cdr item)))
> + headers)
> + continue switch-function
> + (if (bufferp yank-action)
> + (list 'insert-buffer yank-action)
> + yank-action)
> + actions)))))
>
>  (defun message-headers-to-generate (headers included-headers 
>  excluded-headers)
>    "Return a list that includes all headers from HEADERS.
> @@ -6513,44 +6513,44 @@ If INCLUDED-HEADERS is a list, just 
> include those headers. If it is
>  t, include all headers. In any case, headers from 
>  EXCLUDED-HEADERS
>  are not included."
>    (let ((result nil)
> - header-name)
> + header-name)
>      (dolist (header headers)
>        (setq header-name (cond
> - ((and (consp header)
> - (eq (car header) 'optional))
> - ;; On the form (optional . Header)
> - (cdr header))
> - ((consp header)
> - ;; On the form (Header . function)
> - (car header))
> - (t
> - ;; Just a Header.
> - header)))
> + ((and (consp header)
> + (eq (car header) 'optional))
> + ;; On the form (optional . Header)
> + (cdr header))
> + ((consp header)
> + ;; On the form (Header . function)
> + (car header))
> + (t
> + ;; Just a Header.
> + header)))
>        (when (and (not (memq header-name excluded-headers))
> - (or (eq included-headers t)
> - (memq header-name included-headers)))
> - (push header result)))
> + (or (eq included-headers t)
> + (memq header-name included-headers)))
> + (push header result)))
>      (nreverse result)))
>
>  (defun message-setup-1 (headers &optional yank-action actions 
>  return-action)
>    (dolist (action actions)
>      (condition-case nil
> - (add-to-list 'message-send-actions
> - `(apply ',(car action) ',(cdr action)))))
> + (add-to-list 'message-send-actions
> + `(apply ',(car action) ',(cdr action)))))
>    (setq message-return-action return-action)
>    (setq message-reply-buffer
> - (if (and (consp yank-action)
> - (eq (car yank-action) 'insert-buffer))
> - (nth 1 yank-action)
> - yank-action))
> + (if (and (consp yank-action)
> + (eq (car yank-action) 'insert-buffer))
> + (nth 1 yank-action)
> + yank-action))
>    (goto-char (point-min))
>    ;; Insert all the headers.
>    (mail-header-format
>     (let ((h headers)
> - (alist message-header-format-alist))
> + (alist message-header-format-alist))
>       (while h
>         (unless (assq (caar h) message-header-format-alist)
> - (push (list (caar h)) alist))
> + (push (list (caar h)) alist))
>         (pop h))
>       alist)
>     headers)
> @@ -6607,7 +6607,7 @@ are not included."
>      (save-restriction
>        (message-narrow-to-headers)
>        (if message-alternative-emails
> - (message-use-alternative-email-as-from))))
> + (message-use-alternative-email-as-from))))
>    (message-position-point)
>    ;; Allow correct handling of `message-checksum' in 
>    ;; `message-yank-original':
>    (set-buffer-modified-p nil)
> @@ -6619,11 +6619,11 @@ are not included."
>    "Associate the message buffer with a file in the drafts 
>    directory."
>    (when message-auto-save-directory
>      (unless (file-directory-p
> - (directory-file-name message-auto-save-directory))
> + (directory-file-name message-auto-save-directory))
>        (make-directory message-auto-save-directory t))
>      (if (gnus-alive-p)
> - (setq message-draft-article
> - (nndraft-request-associate-buffer "drafts"))
> + (setq message-draft-article
> + (nndraft-request-associate-buffer "drafts"))
>
>        ;; If Gnus were alive, draft messages would be saved in 
>        ;; the drafts folder.
>        ;; But Gnus is not alive, so arrange to save the draft 
>        ;; message in a
> @@ -6632,13 +6632,13 @@ are not included."
>        ;; simultaneously without overwriting each other (which 
>        ;; mimics the
>        ;; functionality of the Gnus drafts folder).
>        (setq buffer-file-name (expand-file-name
> - (concat
> - (if (memq system-type
> - '(ms-dos windows-nt cygwin))
> - "message"
> - "*message*")
> - (format-time-string "-%Y%m%d-%H%M%S"))
> - message-auto-save-directory))
> + (concat
> + (if (memq system-type
> + '(ms-dos windows-nt cygwin))
> + "message"
> + "*message*")
> + (format-time-string "-%Y%m%d-%H%M%S"))
> + message-auto-save-directory))
>        (setq buffer-auto-save-file-name 
>        (make-auto-save-file-name)))
>      (clear-visited-file-modtime)
>      (setq buffer-file-coding-system 
>      message-draft-coding-system)))
> @@ -6656,15 +6656,15 @@ are not included."
>      (save-restriction
>        (message-narrow-to-headers)
>        (when (message-news-p)
> - (message-generate-headers
> - (delq 'Lines
> - (delq 'Subject
> - (copy-sequence message-required-news-headers)))))
> + (message-generate-headers
> + (delq 'Lines
> + (delq 'Subject
> + (copy-sequence message-required-news-headers)))))
>        (when (message-mail-p)
> - (message-generate-headers
> - (delq 'Lines
> - (delq 'Subject
> - (copy-sequence message-required-mail-headers))))))))
> + (message-generate-headers
> + (delq 'Lines
> + (delq 'Subject
> + (copy-sequence message-required-mail-headers))))))))
>
>  
>
> @@ -6674,32 +6674,32 @@ are not included."
>
>  ;;;###autoload
>  (defun message-mail (&optional to subject other-headers 
>  continue
> - switch-function yank-action send-actions
> - return-action &rest ignored)
> + switch-function yank-action send-actions
> + return-action &rest ignored)
>    "Start editing a mail message to be sent.
>  OTHER-HEADERS is an alist of header/value pairs. CONTINUE says 
>  whether
>  to continue editing a message already being composed. 
>  SWITCH-FUNCTION
>  is a function used to switch to and display the mail buffer."
>    (interactive)
>    (let ((message-this-is-mail t)
> - message-buffers)
> + message-buffers)
>      ;; Search for the existing message buffer if `continue' is 
>      ;; non-nil.
>      (if (and continue
> - (setq message-buffers (message-buffers)))
> - (pop-to-buffer (car message-buffers))
> + (setq message-buffers (message-buffers)))
> + (pop-to-buffer (car message-buffers))
>        ;; Start a new buffer.
>        (unless (message-mail-user-agent)
> - (message-pop-to-buffer (message-buffer-name "mail" to) 
>  	switch-function))
> + (message-pop-to-buffer (message-buffer-name "mail" to) 
>      switch-function))
>        (message-setup
>         (nconc
> - `((To . ,(or to "")) (Subject . ,(or subject "")))
> - ;; C-h f compose-mail says that headers should be specified as
> - ;; (string . value); however all the rest of message expects
> - ;; headers to be symbols, not strings (eg 
>  	;; message-header-format-alist).
> - ;; https://lists.gnu.org/r/emacs-devel/2011-01/msg00337.html
> - ;; We need to convert any string input, eg from 
>  	;; rmail-start-mail.
> - (dolist (h other-headers other-headers)
> - (if (stringp (car h)) (setcar h (intern (capitalize (car 
>  	  h)))))))
> + `((To . ,(or to "")) (Subject . ,(or subject "")))
> + ;; C-h f compose-mail says that headers should be specified as
> + ;; (string . value); however all the rest of message expects
> + ;; headers to be symbols, not strings (eg 
>      ;; message-header-format-alist).
> + ;; https://lists.gnu.org/r/emacs-devel/2011-01/msg00337.html
> + ;; We need to convert any string input, eg from 
>      ;; rmail-start-mail.
> + (dolist (h other-headers other-headers)
> + (if (stringp (car h)) (setcar h (intern (capitalize (car 
>        h)))))))
>         yank-action send-actions continue switch-function
>         return-action))))
>
> @@ -6710,7 +6710,7 @@ is a function used to switch to and 
> display the mail buffer."
>    (let ((message-this-is-news t))
>      (message-pop-to-buffer (message-buffer-name "posting" nil 
>      newsgroups))
>      (message-setup `((Newsgroups . ,(or newsgroups ""))
> - (Subject . ,(or subject ""))))))
> + (Subject . ,(or subject ""))))))
>
>  (defun message-alter-recipients-discard-bogus-full-name 
>  (addrcell)
>    "Discard mail address in full names.
> @@ -6719,8 +6719,8 @@ address (e.g. \"foo@bar <foo@bar>\"), 
> discard full name.
>  ADDRCELL is a cons cell where the car is the mail address and 
>  the
>  cdr is the complete address (full name and mail address)."
>    (if (string-match (concat (regexp-quote (car addrcell)) ".*"
> - (regexp-quote (car addrcell)))
> - (cdr addrcell))
> + (regexp-quote (car addrcell)))
> + (cdr addrcell))
>        (cons (car addrcell) (car addrcell))
>      addrcell))
>
> @@ -6729,9 +6729,9 @@ cdr is the complete address (full name and 
> mail address)."
>  It is called in `message-get-reply-headers' for each recipient.
>  The function is called with one parameter, a cons cell ..."
>    :type '(choice (const :tag "None" nil)
> - (const :tag "Discard bogus full name"
> - message-alter-recipients-discard-bogus-full-name)
> - function)
> + (const :tag "Discard bogus full name"
> + message-alter-recipients-discard-bogus-full-name)
> + function)
>    :version "23.1" ;; No Gnus
>    :group 'message-headers)
>
> @@ -6743,65 +6743,65 @@ The function is called with one 
> parameter, a cons cell ..."
>        ;; Gmane renames "To". Look at "Original-To", too, if it 
>        ;; is present in
>        ;; message-header-synonyms.
>        (setq to (or (message-fetch-field "to")
> - (and (cl-loop for synonym in message-header-synonyms
> - when (memq 'Original-To synonym)
> - return t)
> - (message-fetch-field "original-to")))
> - cc (message-fetch-field "cc")
> - extra (when message-extra-wide-headers
> - (mapconcat 'identity
> - (mapcar 'message-fetch-field
> - message-extra-wide-headers)
> - ", "))
> - mct (message-fetch-field "mail-copies-to")
> - author (or (message-fetch-field "mail-reply-to")
> - (message-fetch-field "reply-to"))
> - mft (and message-use-mail-followup-to
> - (message-fetch-field "mail-followup-to")))
> + (and (cl-loop for synonym in message-header-synonyms
> + when (memq 'Original-To synonym)
> + return t)
> + (message-fetch-field "original-to")))
> + cc (message-fetch-field "cc")
> + extra (when message-extra-wide-headers
> + (mapconcat 'identity
> + (mapcar 'message-fetch-field
> + message-extra-wide-headers)
> + ", "))
> + mct (message-fetch-field "mail-copies-to")
> + author (or (message-fetch-field "mail-reply-to")
> + (message-fetch-field "reply-to"))
> + mft (and message-use-mail-followup-to
> + (message-fetch-field "mail-followup-to")))
>        ;; Make sure this message goes to the author if this is a 
>        ;; wide
>        ;; reply, since Reply-To address may be a list address a 
>        ;; mailing
>        ;; list server added.
>        (when (and wide author)
> - (setq cc (concat author ", " cc)))
> + (setq cc (concat author ", " cc)))
>        (when (or wide (not author))
> - (setq author (or (message-fetch-field "from") ""))))
> + (setq author (or (message-fetch-field "from") ""))))
>
>      ;; Handle special values of Mail-Copies-To.
>      (when mct
>        (cond ((or (equal (downcase mct) "never")
> - (equal (downcase mct) "nobody"))
> - (setq never-mct t)
> - (setq mct nil))
> - ((or (equal (downcase mct) "always")
> - (equal (downcase mct) "poster"))
> - (setq mct author))))
> + (equal (downcase mct) "nobody"))
> + (setq never-mct t)
> + (setq mct nil))
> + ((or (equal (downcase mct) "always")
> + (equal (downcase mct) "poster"))
> + (setq mct author))))
>
>      (save-match-data
>        ;; Build (textual) list of new recipient addresses.
>        (cond
>         (to-address
> - (setq recipients (concat ", " to-address))
> - ;; If the author explicitly asked for a copy, we don't deny it 
>  	;; to them.
> - (if mct (setq recipients (concat recipients ", " mct))))
> + (setq recipients (concat ", " to-address))
> + ;; If the author explicitly asked for a copy, we don't deny it 
>      ;; to them.
> + (if mct (setq recipients (concat recipients ", " mct))))
>         ((not wide)
> - (setq recipients (concat ", " author)))
> + (setq recipients (concat ", " author)))
>         (address-headers
> - (dolist (header address-headers)
> - (let ((value (message-fetch-field header)))
> - (when value
> - (setq recipients (concat recipients ", " value))))))
> + (dolist (header address-headers)
> + (let ((value (message-fetch-field header)))
> + (when value
> + (setq recipients (concat recipients ", " value))))))
>         ((and mft
> - (string-match "[^ \t,]" mft)
> - (or (not (eq message-use-mail-followup-to 'ask))
> - (message-y-or-n-p "Obey Mail-Followup-To? " t "\
> + (string-match "[^ \t,]" mft)
> + (or (not (eq message-use-mail-followup-to 'ask))
> + (message-y-or-n-p "Obey Mail-Followup-To? " t "\
>  You should normally obey the Mail-Followup-To: header. In this
>  article, it has the value of
>
>  " mft "
>
>  which directs your response to " (if (string-match "," mft)
> - "the specified addresses"
> - "that address only") ".
> + "the specified addresses"
> + "that address only") ".
>
>  Most commonly, Mail-Followup-To is used by a mailing list 
>  poster to
>  express that responses should be sent to just the list, and not 
>  the
> @@ -6817,19 +6817,19 @@ responses here are directed to other 
> addresses.
>
>  You may customize the variable `message-use-mail-followup-to', 
>  if you
>  want to get rid of this query permanently.")))
> - (setq recipients (concat ", " mft)))
> + (setq recipients (concat ", " mft)))
>         (t
> - (setq recipients (if never-mct "" (concat ", " author)))
> - (if to (setq recipients (concat recipients ", " to)))
> - (if cc (setq recipients (concat recipients ", " cc)))
> - (if extra (setq recipients (concat recipients ", " extra)))
> - (if mct (setq recipients (concat recipients ", " mct)))))
> + (setq recipients (if never-mct "" (concat ", " author)))
> + (if to (setq recipients (concat recipients ", " to)))
> + (if cc (setq recipients (concat recipients ", " cc)))
> + (if extra (setq recipients (concat recipients ", " extra)))
> + (if mct (setq recipients (concat recipients ", " mct)))))
>        (if (>= (length recipients) 2)
> - ;; Strip the leading ", ".
> - (setq recipients (substring recipients 2)))
> + ;; Strip the leading ", ".
> + (setq recipients (substring recipients 2)))
>        ;; Squeeze whitespace.
>        (while (string-match "[ \t][ \t]+" recipients)
> - (setq recipients (replace-match " " t t recipients)))
> + (setq recipients (replace-match " " t t recipients)))
>        ;; Remove addresses that match 
>        ;; `message-dont-reply-to-names'.
>        (setq recipients
>              (cond ((functionp message-dont-reply-to-names)
> @@ -6846,74 +6846,74 @@ want to get rid of this query 
> permanently.")))
>                         (mail-dont-reply-to recipients)))))
>        ;; Perhaps "Mail-Copies-To: never" removed the only 
>        ;; address?
>        (if (string-equal recipients "")
> - (setq recipients author))
> + (setq recipients author))
>        ;; Convert string to a list of (("foo@bar" . "Name 
>        ;; <Foo@BAR>") ...).
>        (setq recipients
> - (mapcar
> - (lambda (addr)
> - (if message-alter-recipients-function
> - (funcall message-alter-recipients-function
> - (cons (downcase (mail-strip-quoted-names addr))
> - addr))
> - (cons (downcase (mail-strip-quoted-names addr)) addr)))
> - (message-tokenize-header recipients)))
> + (mapcar
> + (lambda (addr)
> + (if message-alter-recipients-function
> + (funcall message-alter-recipients-function
> + (cons (downcase (mail-strip-quoted-names addr))
> + addr))
> + (cons (downcase (mail-strip-quoted-names addr)) addr)))
> + (message-tokenize-header recipients)))
>        ;; Remove all duplicates.
>        (let ((s recipients))
> - (while s
> - (let ((address (car (pop s))))
> - (while (assoc address s)
> - (setq recipients (delq (assoc address s) recipients)
> - s (delq (assoc address s) s))))))
> + (while s
> + (let ((address (car (pop s))))
> + (while (assoc address s)
> + (setq recipients (delq (assoc address s) recipients)
> + s (delq (assoc address s) s))))))
>
>        ;; Remove hierarchical lists that are contained within 
>        ;; each other,
>        ;; if message-hierarchical-addresses is defined.
>        (when message-hierarchical-addresses
> - (let ((plain-addrs (mapcar 'car recipients))
> - subaddrs recip)
> - (while plain-addrs
> - (setq subaddrs (assoc (car plain-addrs)
> - message-hierarchical-addresses)
> - plain-addrs (cdr plain-addrs))
> - (when subaddrs
> - (setq subaddrs (cdr subaddrs))
> - (while subaddrs
> - (setq recip (assoc (car subaddrs) recipients)
> - subaddrs (cdr subaddrs))
> - (if recip
> - (setq recipients (delq recip recipients))))))))
> + (let ((plain-addrs (mapcar 'car recipients))
> + subaddrs recip)
> + (while plain-addrs
> + (setq subaddrs (assoc (car plain-addrs)
> + message-hierarchical-addresses)
> + plain-addrs (cdr plain-addrs))
> + (when subaddrs
> + (setq subaddrs (cdr subaddrs))
> + (while subaddrs
> + (setq recip (assoc (car subaddrs) recipients)
> + subaddrs (cdr subaddrs))
> + (if recip
> + (setq recipients (delq recip recipients))))))))
>
>        (setq recipients (message-prune-recipients recipients))
>        (setq recipients
> - (cl-loop for (id . address) in recipients
> - collect (cons id (message--alter-repeat-address address))))
> + (cl-loop for (id . address) in recipients
> + collect (cons id (message--alter-repeat-address address))))
>
>        ;; Build the header alist. Allow the user to be asked 
>        ;; whether
>        ;; or not to reply to all recipients in a wide reply.
>        (setq follow-to (list (cons 'To (cdr (pop recipients)))))
>        (when (and recipients
> - (or (not message-wide-reply-confirm-recipients)
> - (y-or-n-p "Reply to all recipients? ")))
> - (setq recipients (mapconcat
> - (lambda (addr) (cdr addr)) recipients ", "))
> - (if (string-match "^ +" recipients)
> - (setq recipients (substring recipients (match-end 0))))
> - (push (cons 'Cc recipients) follow-to)))
> + (or (not message-wide-reply-confirm-recipients)
> + (y-or-n-p "Reply to all recipients? ")))
> + (setq recipients (mapconcat
> + (lambda (addr) (cdr addr)) recipients ", "))
> + (if (string-match "^ +" recipients)
> + (setq recipients (substring recipients (match-end 0))))
> + (push (cons 'Cc recipients) follow-to)))
>      follow-to))
>
>  (defun message-prune-recipients (recipients)
>    (dolist (rule message-prune-recipient-rules)
>      (let ((match (car rule))
> - dup-match
> - address)
> + dup-match
> + address)
> + (dolist (recipient recipients)
> + (setq address (car recipient))
> + (when (string-match match address)
> + (setq dup-match (replace-match (cadr rule) nil nil address))
>        (dolist (recipient recipients)
> - (setq address (car recipient))
> - (when (string-match match address)
> - (setq dup-match (replace-match (cadr rule) nil nil address))
> - (dolist (recipient recipients)
> - ;; Don't delete the address that triggered this.
> - (when (and (not (eq address (car recipient)))
> - (string-match dup-match (car recipient)))
> - (setq recipients (delq recipient recipients))))))))
> + ;; Don't delete the address that triggered this.
> + (when (and (not (eq address (car recipient)))
> + (string-match dup-match (car recipient)))
> + (setq recipients (delq recipient recipients))))))))
>    recipients)
>
>  (defun message--alter-repeat-address (address)
> @@ -6921,7 +6921,7 @@ want to get rid of this query 
> permanently.")))
>  The first bit will be elided if a match is made."
>    (let ((bits (gnus-extract-address-components address)))
>      (if (equal (car bits) (cadr bits))
> - (car bits)
> + (car bits)
>        ;; Return the original address if we don't have 
>        ;; repetition.
>        address)))
>
> @@ -6947,12 +6947,12 @@ Useful functions to put in this list 
> include:
>      ;; Simplify fully:
>      (setq functions message-simplify-subject-functions))
>    (when (and (memq 'message-strip-list-identifiers functions)
> - gnus-list-identifiers)
> + gnus-list-identifiers)
>      (setq subject (message-strip-list-identifiers subject)))
>    (when (memq 'message-strip-subject-re functions)
>      (setq subject (concat "Re: " (message-strip-subject-re 
>      subject))))
>    (when (and (memq 'message-strip-subject-trailing-was 
>    functions)
> - message-subject-trailing-was-query)
> + message-subject-trailing-was-query)
>      (setq subject (message-strip-subject-trailing-was 
>      subject)))
>    (when (memq 'message-strip-subject-encoded-words functions)
>      (setq subject (message-strip-subject-encoded-words 
>      subject)))
> @@ -6964,52 +6964,52 @@ Useful functions to put in this list 
> include:
>    (interactive)
>    (require 'gnus-sum) ; for gnus-list-identifiers
>    (let ((cur (current-buffer))
> - from subject date
> - references message-id follow-to
> - (inhibit-point-motion-hooks t)
> - (message-this-is-mail t)
> - gnus-warning)
> + from subject date
> + references message-id follow-to
> + (inhibit-point-motion-hooks t)
> + (message-this-is-mail t)
> + gnus-warning)
>      (save-restriction
>        (message-narrow-to-head-1)
>        ;; Allow customizations to have their say.
>        (if (not wide)
> - ;; This is a regular reply.
> - (when (functionp message-reply-to-function)
> - (save-excursion
> - (setq follow-to (funcall message-reply-to-function))))
> - ;; This is a followup.
> - (when (functionp message-wide-reply-to-function)
> - (save-excursion
> - (setq follow-to
> - (funcall message-wide-reply-to-function)))))
> + ;; This is a regular reply.
> + (when (functionp message-reply-to-function)
> + (save-excursion
> + (setq follow-to (funcall message-reply-to-function))))
> + ;; This is a followup.
> + (when (functionp message-wide-reply-to-function)
> + (save-excursion
> + (setq follow-to
> + (funcall message-wide-reply-to-function)))))
>        (setq message-id (message-fetch-field "message-id" t)
> - references (message-fetch-field "references")
> - date (message-fetch-field "date")
> - from (or (message-fetch-field "from") "nobody")
> - subject (or (message-fetch-field "subject") "none"))
> + references (message-fetch-field "references")
> + date (message-fetch-field "date")
> + from (or (message-fetch-field "from") "nobody")
> + subject (or (message-fetch-field "subject") "none"))
>
>        ;; Strip list identifiers, "Re: ", and "was:"
>        (setq subject (message-simplify-subject subject))
>
>        (when (and (setq gnus-warning (message-fetch-field 
>        "gnus-warning"))
> - (string-match "<[^>]+>" gnus-warning))
> - (setq message-id (match-string 0 gnus-warning)))
> + (string-match "<[^>]+>" gnus-warning))
> + (setq message-id (match-string 0 gnus-warning)))
>
>        (unless follow-to
> - (setq follow-to (message-get-reply-headers wide to-address))))
> + (setq follow-to (message-get-reply-headers wide to-address))))
>
>      (let ((headers
> - `((Subject . ,subject)
> - ,@follow-to)))
> + `((Subject . ,subject)
> + ,@follow-to)))
>        (unless (message-mail-user-agent)
> - (message-pop-to-buffer
> - (message-buffer-name
> - (if wide "wide reply" "reply") from
> - (if wide to-address nil))
> - switch-function))
> + (message-pop-to-buffer
> + (message-buffer-name
> + (if wide "wide reply" "reply") from
> + (if wide to-address nil))
> + switch-function))
>        (setq message-reply-headers
> - (vector 0 (cdr (assq 'Subject headers))
> - from date message-id references 0 0 ""))
> + (vector 0 (cdr (assq 'Subject headers))
> + from date message-id references 0 0 ""))
>        (message-setup headers cur))))
>
>  ;;;###autoload
> @@ -7025,40 +7025,40 @@ If TO-NEWSGROUPS, use that as the new 
> Newsgroups line."
>    (interactive)
>    (require 'gnus-sum) ; for gnus-list-identifiers
>    (let ((cur (current-buffer))
> - from subject date reply-to mrt mct
> - references message-id follow-to
> - (inhibit-point-motion-hooks t)
> - (message-this-is-news t)
> - followup-to distribution newsgroups gnus-warning posted-to)
> + from subject date reply-to mrt mct
> + references message-id follow-to
> + (inhibit-point-motion-hooks t)
> + (message-this-is-news t)
> + followup-to distribution newsgroups gnus-warning posted-to)
>      (save-restriction
>        (narrow-to-region
>         (goto-char (point-min))
>         (if (search-forward "\n\n" nil t)
> - (1- (point))
> - (point-max)))
> + (1- (point))
> + (point-max)))
>        (when (functionp message-followup-to-function)
> - (setq follow-to
> - (funcall message-followup-to-function)))
> + (setq follow-to
> + (funcall message-followup-to-function)))
>        (setq from (message-fetch-field "from")
> - date (message-fetch-field "date")
> - subject (or (message-fetch-field "subject") "none")
> - references (message-fetch-field "references")
> - message-id (message-fetch-field "message-id" t)
> - followup-to (message-fetch-field "followup-to")
> - newsgroups (message-fetch-field "newsgroups")
> - posted-to (message-fetch-field "posted-to")
> - reply-to (message-fetch-field "reply-to")
> - mrt (message-fetch-field "mail-reply-to")
> - distribution (message-fetch-field "distribution")
> - mct (message-fetch-field "mail-copies-to"))
> + date (message-fetch-field "date")
> + subject (or (message-fetch-field "subject") "none")
> + references (message-fetch-field "references")
> + message-id (message-fetch-field "message-id" t)
> + followup-to (message-fetch-field "followup-to")
> + newsgroups (message-fetch-field "newsgroups")
> + posted-to (message-fetch-field "posted-to")
> + reply-to (message-fetch-field "reply-to")
> + mrt (message-fetch-field "mail-reply-to")
> + distribution (message-fetch-field "distribution")
> + mct (message-fetch-field "mail-copies-to"))
>        (when (and (setq gnus-warning (message-fetch-field 
>        "gnus-warning"))
> - (string-match "<[^>]+>" gnus-warning))
> - (setq message-id (match-string 0 gnus-warning)))
> + (string-match "<[^>]+>" gnus-warning))
> + (setq message-id (match-string 0 gnus-warning)))
>        ;; Remove bogus distribution.
>        (when (and (stringp distribution)
> - (let ((case-fold-search t))
> - (string-match "world" distribution)))
> - (setq distribution nil))
> + (let ((case-fold-search t))
> + (string-match "world" distribution)))
> + (setq distribution nil))
>        ;; Strip list identifiers, "Re: ", and "was:"
>        (setq subject (message-simplify-subject subject))
>        (widen))
> @@ -7066,20 +7066,20 @@ If TO-NEWSGROUPS, use that as the new 
> Newsgroups line."
>      (message-pop-to-buffer (message-buffer-name "followup" from 
>      newsgroups))
>
>      (setq message-reply-headers
> - (vector 0 subject from date message-id references 0 0 ""))
> + (vector 0 subject from date message-id references 0 0 ""))
>
>      (message-setup
>       `((Subject . ,subject)
>         ,@(cond
> - (to-newsgroups
> - (list (cons 'Newsgroups to-newsgroups)))
> - (follow-to follow-to)
> - ((and followup-to message-use-followup-to)
> - (list
> - (cond
> - ((equal (downcase followup-to) "poster")
> - (if (or (eq message-use-followup-to 'use)
> - (message-y-or-n-p "Obey Followup-To: poster? " t "\
> + (to-newsgroups
> + (list (cons 'Newsgroups to-newsgroups)))
> + (follow-to follow-to)
> + ((and followup-to message-use-followup-to)
> + (list
> + (cond
> + ((equal (downcase followup-to) "poster")
> + (if (or (eq message-use-followup-to 'use)
> + (message-y-or-n-p "Obey Followup-To: poster? " t "\
>  You should normally obey the Followup-To: header.
>
>  `Followup-To: poster' sends your response via e-mail instead of 
>  news.
> @@ -7089,21 +7089,21 @@ does not read the newsgroup, so he 
> wouldn't see any replies sent to it.
>
>  You may customize the variable `message-use-followup-to', if 
>  you
>  want to get rid of this query permanently."))
> - (progn
> - (setq message-this-is-news nil)
> - (cons 'To (or mrt reply-to from "")))
> - (cons 'Newsgroups newsgroups)))
> - (t
> - (if (or (equal followup-to newsgroups)
> - (not (eq message-use-followup-to 'ask))
> - (message-y-or-n-p
> - (concat "Obey Followup-To: " followup-to "? ") t "\
> + (progn
> + (setq message-this-is-news nil)
> + (cons 'To (or mrt reply-to from "")))
> + (cons 'Newsgroups newsgroups)))
> + (t
> + (if (or (equal followup-to newsgroups)
> + (not (eq message-use-followup-to 'ask))
> + (message-y-or-n-p
> + (concat "Obey Followup-To: " followup-to "? ") t "\
>  You should normally obey the Followup-To: header.
>
> - `Followup-To: " followup-to "'
> + `Followup-To: " followup-to "'
>  directs your response to " (if (string-match "," followup-to)
> - "the specified newsgroups"
> - "that newsgroup only") ".
> + "the specified newsgroups"
> + "that newsgroup only") ".
>
>  If a message is posted to several newsgroups, Followup-To is 
>  often
>  used to direct the following discussion to one newsgroup only,
> @@ -7115,20 +7115,20 @@ responses here are directed to other 
> newsgroups.
>
>  You may customize the variable `message-use-followup-to', if 
>  you
>  want to get rid of this query permanently."))
> - (cons 'Newsgroups followup-to)
> - (cons 'Newsgroups newsgroups))))))
> - (posted-to
> - `((Newsgroups . ,posted-to)))
> - (t
> - `((Newsgroups . ,newsgroups))))
> + (cons 'Newsgroups followup-to)
> + (cons 'Newsgroups newsgroups))))))
> + (posted-to
> + `((Newsgroups . ,posted-to)))
> + (t
> + `((Newsgroups . ,newsgroups))))
>         ,@(and distribution (list (cons 'Distribution 
>         distribution)))
>         ,@(when (and mct
> - (not (or (equal (downcase mct) "never")
> - (equal (downcase mct) "nobody"))))
> - (list (cons 'Cc (if (or (equal (downcase mct) "always")
> - (equal (downcase mct) "poster"))
> - (or mrt reply-to from "")
> - mct)))))
> + (not (or (equal (downcase mct) "never")
> + (equal (downcase mct) "nobody"))))
> + (list (cons 'Cc (if (or (equal (downcase mct) "always")
> + (equal (downcase mct) "poster"))
> + (or mrt reply-to from "")
> + mct)))))
>
>       cur)))
>
> @@ -7152,26 +7152,26 @@ to match all of yours addresses."
>      (save-restriction
>        (message-narrow-to-head-1)
>        (if (and (message-fetch-field "Cancel-Lock")
> - (message-gnksa-enable-p 'canlock-verify))
> - (if (null (canlock-verify))
> - t
> - (error "Failed to verify Cancel-lock: This article is not 
>  	    yours"))
> - (let (sender from)
> - (or
> - (message-gnksa-enable-p 'cancel-messages)
> - (and (setq sender (message-fetch-field "sender"))
> - (string-equal (downcase sender)
> - (downcase (message-make-sender))))
> - ;; Email address in From field equals to our address
> - (and (setq from (message-fetch-field "from"))
> - (string-equal
> - (downcase (car (mail-header-parse-address from)))
> - (downcase (car (mail-header-parse-address
> - (message-make-from))))))
> - ;; Email address in From field matches
> - ;; 'message-alternative-emails' regexp or function.
> - (and from
> - message-alternative-emails
> + (message-gnksa-enable-p 'canlock-verify))
> + (if (null (canlock-verify))
> + t
> + (error "Failed to verify Cancel-lock: This article is not 
>          yours"))
> + (let (sender from)
> + (or
> + (message-gnksa-enable-p 'cancel-messages)
> + (and (setq sender (message-fetch-field "sender"))
> + (string-equal (downcase sender)
> + (downcase (message-make-sender))))
> + ;; Email address in From field equals to our address
> + (and (setq from (message-fetch-field "from"))
> + (string-equal
> + (downcase (car (mail-header-parse-address from)))
> + (downcase (car (mail-header-parse-address
> + (message-make-from))))))
> + ;; Email address in From field matches
> + ;; 'message-alternative-emails' regexp or function.
> + (and from
> + message-alternative-emails
>                  (cond ((functionp message-alternative-emails)
>                         (funcall message-alternative-emails
>                                  (mail-header-parse-address 
>                                  from)))
> @@ -7189,37 +7189,37 @@ If ARG, allow editing of the 
> cancellation message."
>      (save-excursion
>        ;; Get header info from original article.
>        (save-restriction
> - (message-narrow-to-head-1)
> - (setq from (message-fetch-field "from")
> - newsgroups (message-fetch-field "newsgroups")
> - message-id (message-fetch-field "message-id" t)
> - distribution (message-fetch-field "distribution")))
> + (message-narrow-to-head-1)
> + (setq from (message-fetch-field "from")
> + newsgroups (message-fetch-field "newsgroups")
> + message-id (message-fetch-field "message-id" t)
> + distribution (message-fetch-field "distribution")))
>        ;; Make sure that this article was written by the user.
>        (unless (message-is-yours-p)
> - (error "This article is not yours"))
> + (error "This article is not yours"))
>        (when (yes-or-no-p "Do you really want to cancel this 
>        article? ")
> - ;; Make control message.
> - (if arg
> - (message-news)
> - (setq buf (set-buffer (get-buffer-create " *message 
>  	  cancel*"))))
> - (erase-buffer)
> - (insert "Newsgroups: " newsgroups "\n"
> - "From: " from "\n"
> - "Subject: cancel " message-id "\n"
> - "Control: cancel " message-id "\n"
> - (if distribution
> - (concat "Distribution: " distribution "\n")
> - "")
> - mail-header-separator "\n"
> - message-cancel-message)
> - (run-hooks 'message-cancel-hook)
> - (unless arg
> - (message "Canceling your article...")
> - (if (let ((message-syntax-checks
> - 'dont-check-for-anything-just-trust-me))
> - (funcall message-send-news-function))
> - (message "Canceling your article...done"))
> - (kill-buffer buf))))))
> + ;; Make control message.
> + (if arg
> + (message-news)
> + (setq buf (set-buffer (get-buffer-create " *message 
>        cancel*"))))
> + (erase-buffer)
> + (insert "Newsgroups: " newsgroups "\n"
> + "From: " from "\n"
> + "Subject: cancel " message-id "\n"
> + "Control: cancel " message-id "\n"
> + (if distribution
> + (concat "Distribution: " distribution "\n")
> + "")
> + mail-header-separator "\n"
> + message-cancel-message)
> + (run-hooks 'message-cancel-hook)
> + (unless arg
> + (message "Canceling your article...")
> + (if (let ((message-syntax-checks
> + 'dont-check-for-anything-just-trust-me))
> + (funcall message-send-news-function))
> + (message "Canceling your article...done"))
> + (kill-buffer buf))))))
>
>  ;;;###autoload
>  (defun message-supersede ()
> @@ -7241,7 +7241,7 @@ header line with the old Message-ID."
>        (message-remove-header message-ignored-supersedes-headers 
>        t))
>      (goto-char (point-min))
>      (if (not (re-search-forward "^Message-ID: " nil t))
> - (error "No Message-ID in this article")
> + (error "No Message-ID in this article")
>        (replace-match "Supersedes: " t t))
>      (goto-char (point-max))
>      (insert mail-header-separator)
> @@ -7254,18 +7254,18 @@ header line with the old Message-ID."
>    (interactive)
>    (let ((file-name (make-auto-save-file-name)))
>      (cond ((save-window-excursion
> - (with-output-to-temp-buffer "*Directory*"
> - (with-current-buffer standard-output
> - (fundamental-mode))
> - (buffer-disable-undo standard-output)
> - (let ((default-directory "/"))
> - (call-process
> - "ls" nil standard-output nil "-l" file-name)))
> - (yes-or-no-p (format "Recover auto save file %s? " 
>  	     file-name)))
> - (let ((buffer-read-only nil))
> - (erase-buffer)
> - (insert-file-contents file-name nil)))
> - (t (error "message-recover canceled")))))
> + (with-output-to-temp-buffer "*Directory*"
> + (with-current-buffer standard-output
> + (fundamental-mode))
> + (buffer-disable-undo standard-output)
> + (let ((default-directory "/"))
> + (call-process
> + "ls" nil standard-output nil "-l" file-name)))
> + (yes-or-no-p (format "Recover auto save file %s? " 
>           file-name)))
> + (let ((buffer-read-only nil))
> + (erase-buffer)
> + (insert-file-contents file-name nil)))
> + (t (error "message-recover canceled")))))
>
>  ;;; Washing Subject:
>
> @@ -7277,7 +7277,7 @@ Previous forwarders, repliers, etc. may 
> add it."
>      (goto-char (point-min))
>      ;; strip Re/Fwd stuff off the beginning
>      (while (re-search-forward
> - 
>  	    "\\([Rr][Ee]:\\|[Ff][Ww][Dd]\\(\\[[0-9]*\\]\\)?:\\|[Ff][Ww]:\\)" 
>  	    nil t)
> + 
>          "\\([Rr][Ee]:\\|[Ff][Ww][Dd]\\(\\[[0-9]*\\]\\)?:\\|[Ff][Ww]:\\)" 
>          nil t)
>        (replace-match ""))
>
>      ;; and gnus-style forwards [[email-masked]] subject
> @@ -7311,19 +7311,19 @@ The form is: [Source] Subject, where if 
> the original message was mail,
>  Source is the name of the sender, and if the original message 
>  was
>  news, Source is the list of newsgroups is was posted to."
>    (let* ((group (message-fetch-field "newsgroups"))
> - (from (message-fetch-field "from"))
> - (prefix
> - (if group
> - (gnus-group-decoded-name group)
> - (or (and from (or
> - (car (gnus-extract-address-components from))
> - (cadr (gnus-extract-address-components from))))
> - "(nowhere)"))))
> + (from (message-fetch-field "from"))
> + (prefix
> + (if group
> + (gnus-group-decoded-name group)
> + (or (and from (or
> + (car (gnus-extract-address-components from))
> + (cadr (gnus-extract-address-components from))))
> + "(nowhere)"))))
>      (concat "["
> - (if message-forward-decoded-p
> - prefix
> - (mail-decode-encoded-word-string prefix))
> - "] " subject)))
> + (if message-forward-decoded-p
> + prefix
> + (mail-decode-encoded-word-string prefix))
> + "] " subject)))
>
>  (defun message-forward-subject-author-subject (subject)
>    "Generate a SUBJECT for a forwarded message.
> @@ -7331,16 +7331,16 @@ The form is: [Source] Subject, where if 
> the original message was mail,
>  Source is the sender, and if the original message was news, 
>  Source is
>  the list of newsgroups is was posted to."
>    (let* ((group (message-fetch-field "newsgroups"))
> - (prefix
> - (if group
> - (gnus-group-decoded-name group)
> - (or (message-fetch-field "from")
> - "(nowhere)"))))
> + (prefix
> + (if group
> + (gnus-group-decoded-name group)
> + (or (message-fetch-field "from")
> + "(nowhere)"))))
>      (concat "["
> - (if message-forward-decoded-p
> - prefix
> - (mail-decode-encoded-word-string prefix))
> - "] " subject)))
> + (if message-forward-decoded-p
> + prefix
> + (mail-decode-encoded-word-string prefix))
> + "] " subject)))
>
>  (defun message-forward-subject-fwd (subject)
>    "Generate a SUBJECT for a forwarded message.
> @@ -7356,25 +7356,25 @@ the message."
>      (save-restriction
>        (message-narrow-to-head-1)
>        (let ((funcs message-make-forward-subject-function)
> - (subject (message-fetch-field "Subject")))
> - (setq subject
> - (if subject
> - (if message-forward-decoded-p
> - subject
> - (mail-decode-encoded-word-string subject))
> - ""))
> - (when message-wash-forwarded-subjects
> - (setq subject (message-wash-subject subject)))
> - ;; Make sure funcs is a list.
> - (and funcs
> - (not (listp funcs))
> - (setq funcs (list funcs)))
> - ;; Apply funcs in order, passing subject generated by previous
> - ;; func to the next one.
> - (dolist (func funcs)
> - (when (functionp func)
> - (setq subject (funcall func subject))))
> - subject))))
> + (subject (message-fetch-field "Subject")))
> + (setq subject
> + (if subject
> + (if message-forward-decoded-p
> + subject
> + (mail-decode-encoded-word-string subject))
> + ""))
> + (when message-wash-forwarded-subjects
> + (setq subject (message-wash-subject subject)))
> + ;; Make sure funcs is a list.
> + (and funcs
> + (not (listp funcs))
> + (setq funcs (list funcs)))
> + ;; Apply funcs in order, passing subject generated by previous
> + ;; func to the next one.
> + (dolist (func funcs)
> + (when (functionp func)
> + (setq subject (funcall func subject))))
> + subject))))
>
>  (defvar gnus-article-decoded-p)
>
> @@ -7386,13 +7386,13 @@ Optional NEWS will use news to forward 
> instead of mail.
>  Optional DIGEST will use digest to forward."
>    (interactive "P")
>    (let* ((cur (current-buffer))
> - (message-forward-decoded-p
> - (if (local-variable-p 'gnus-article-decoded-p 
>  	  (current-buffer))
> - gnus-article-decoded-p ;; In an article buffer.
> - message-forward-decoded-p))
> - (subject (message-make-forward-subject)))
> + (message-forward-decoded-p
> + (if (local-variable-p 'gnus-article-decoded-p 
>        (current-buffer))
> + gnus-article-decoded-p ;; In an article buffer.
> + message-forward-decoded-p))
> + (subject (message-make-forward-subject)))
>      (if news
> - (message-news nil subject)
> + (message-news nil subject)
>        (message-mail nil subject))
>      (message-forward-make-body cur digest)))
>
> @@ -7400,22 +7400,22 @@ Optional DIGEST will use digest to 
> forward."
>    (insert
>     "\n-------------------- Start of forwarded message 
>     --------------------\n")
>    (let ((b (point))
> - (contents (with-current-buffer forward-buffer 
>  	(buffer-string)))
> - e)
> + (contents (with-current-buffer forward-buffer 
>      (buffer-string)))
> + e)
>      (unless (multibyte-string-p contents)
>        (error "Attempt to insert unibyte string from the buffer 
>        \"%s\"\
>   to the multibyte buffer \"%s\""
> - (if (bufferp forward-buffer)
> - (buffer-name forward-buffer)
> - forward-buffer)
> - (buffer-name)))
> + (if (bufferp forward-buffer)
> + (buffer-name forward-buffer)
> + forward-buffer)
> + (buffer-name)))
>      (insert (mm-with-multibyte-buffer
> - (insert contents)
> - (mime-to-mml)
> - (goto-char (point-min))
> - (when (looking-at "From ")
> - (replace-match "X-From-Line: "))
> - (buffer-string)))
> + (insert contents)
> + (mime-to-mml)
> + (goto-char (point-min))
> + (when (looking-at "From ")
> + (replace-match "X-From-Line: "))
> + (buffer-string)))
>      (unless (bolp) (insert "\n"))
>      (setq e (point))
>      (insert
> @@ -7424,25 +7424,25 @@ Optional DIGEST will use digest to 
> forward."
>
>  (defun message-remove-ignored-headers (b e)
>    (when (or message-forward-ignored-headers
> - message-forward-included-headers)
> + message-forward-included-headers)
>      (save-restriction
>        (narrow-to-region b e)
>        (goto-char b)
>        (narrow-to-region (point)
> - (or (search-forward "\n\n" nil t) (point)))
> + (or (search-forward "\n\n" nil t) (point)))
>        (when message-forward-ignored-headers
> - (let ((ignored (if (stringp message-forward-ignored-headers)
> - (list message-forward-ignored-headers)
> - message-forward-ignored-headers)))
> - (dolist (elem ignored)
> - (message-remove-header elem t))))
> + (let ((ignored (if (stringp message-forward-ignored-headers)
> + (list message-forward-ignored-headers)
> + message-forward-ignored-headers)))
> + (dolist (elem ignored)
> + (message-remove-header elem t))))
>        (when message-forward-included-headers
> - (message-remove-header
> - (if (listp message-forward-included-headers)
> - (mapconcat #'identity (cons "^$" 
>  	     message-forward-included-headers)
> - "\\|")
> - message-forward-included-headers)
> - t nil t)))))
> + (message-remove-header
> + (if (listp message-forward-included-headers)
> + (mapconcat #'identity (cons "^$" 
>           message-forward-included-headers)
> + "\\|")
> + message-forward-included-headers)
> + t nil t)))))
>
>  (defun message-forward-make-body-mime (forward-buffer &optional 
>  beg end)
>    (let ((b (point)))
> @@ -7453,7 +7453,7 @@ Optional DIGEST will use digest to 
> forward."
>        (mml-quote-region (point-min) (point-max))
>        (goto-char (point-min))
>        (when (looking-at "From ")
> - (replace-match "X-From-Line: "))
> + (replace-match "X-From-Line: "))
>        (goto-char (point-max)))
>      (insert "<#/part>\n")
>      ;; Consider there is no illegible text.
> @@ -7465,28 +7465,28 @@ Optional DIGEST will use digest to 
> forward."
>    (insert "\n\n<#mml type=message/rfc822 
>    disposition=inline>\n")
>    (let ((b (point)) e)
>      (if (not message-forward-decoded-p)
> - (let ((contents (with-current-buffer forward-buffer 
>  	(buffer-string))))
> - (unless (multibyte-string-p contents)
> - (error "Attempt to insert unibyte string from the buffer 
>  	    \"%s\"\
> + (let ((contents (with-current-buffer forward-buffer 
>      (buffer-string))))
> + (unless (multibyte-string-p contents)
> + (error "Attempt to insert unibyte string from the buffer 
>          \"%s\"\
>   to the multibyte buffer \"%s\""
> - (if (bufferp forward-buffer)
> - (buffer-name forward-buffer)
> - forward-buffer)
> - (buffer-name)))
> - (insert (mm-with-multibyte-buffer
> - (insert contents)
> - (mime-to-mml)
> - (goto-char (point-min))
> - (when (looking-at "From ")
> - (replace-match "X-From-Line: "))
> - (buffer-string))))
> + (if (bufferp forward-buffer)
> + (buffer-name forward-buffer)
> + forward-buffer)
> + (buffer-name)))
> + (insert (mm-with-multibyte-buffer
> + (insert contents)
> + (mime-to-mml)
> + (goto-char (point-min))
> + (when (looking-at "From ")
> + (replace-match "X-From-Line: "))
> + (buffer-string))))
>        (save-restriction
> - (narrow-to-region (point) (point))
> - (mml-insert-buffer forward-buffer)
> - (goto-char (point-min))
> - (when (looking-at "From ")
> - (replace-match "X-From-Line: "))
> - (goto-char (point-max))))
> + (narrow-to-region (point) (point))
> + (mml-insert-buffer forward-buffer)
> + (goto-char (point-min))
> + (when (looking-at "From ")
> + (replace-match "X-From-Line: "))
> + (goto-char (point-max))))
>      (setq e (point))
>      (insert "<#/mml>\n")
>      (when (not message-forward-decoded-p)
> @@ -7509,7 +7509,7 @@ Optional DIGEST will use digest to 
> forward."
>        (narrow-to-region b e)
>        (goto-char b)
>        (narrow-to-region (point)
> - (or (search-forward "\n\n" nil t) (point)))
> + (or (search-forward "\n\n" nil t) (point)))
>        (delete-region (point-min) (point-max)))))
>
>  (defun message-forward-make-body-digest (forward-buffer)
> @@ -7527,51 +7527,51 @@ messages that don't conform to PGP/MIME 
> described in RFC2015. HANDLES
>  is for the internal use."
>    (unless handles
>      (let ((mm-decrypt-option 'never)
> - (mm-verify-option 'never))
> + (mm-verify-option 'never))
>        (if (setq handles (mm-dissect-buffer nil t))
> - (unless dont-emulate-mime
> - (mm-uu-dissect-text-parts handles))
> - (unless dont-emulate-mime
> - (setq handles (mm-uu-dissect))))))
> + (unless dont-emulate-mime
> + (mm-uu-dissect-text-parts handles))
> + (unless dont-emulate-mime
> + (setq handles (mm-uu-dissect))))))
>    ;; Check text/plain message in which there is a signed or 
>    ;; encrypted
>    ;; body that has been encoded by B or Q.
>    (unless (or handles dont-emulate-mime)
>      (let ((cur (current-buffer))
> - (mm-decrypt-option 'never)
> - (mm-verify-option 'never))
> + (mm-decrypt-option 'never)
> + (mm-verify-option 'never))
>        (with-temp-buffer
> - (insert-buffer-substring cur)
> - (when (setq handles (mm-dissect-buffer t t))
> - (if (and (bufferp (car handles))
> - (equal (mm-handle-media-type handles) "text/plain"))
> - (progn
> - (erase-buffer)
> - (insert-buffer-substring (car handles))
> - (mm-decode-content-transfer-encoding
> - (mm-handle-encoding handles))
> - (mm-destroy-parts handles)
> - (setq handles (mm-uu-dissect)))
> - (mm-destroy-parts handles)
> - (setq handles nil))))))
> + (insert-buffer-substring cur)
> + (when (setq handles (mm-dissect-buffer t t))
> + (if (and (bufferp (car handles))
> + (equal (mm-handle-media-type handles) "text/plain"))
> + (progn
> + (erase-buffer)
> + (insert-buffer-substring (car handles))
> + (mm-decode-content-transfer-encoding
> + (mm-handle-encoding handles))
> + (mm-destroy-parts handles)
> + (setq handles (mm-uu-dissect)))
> + (mm-destroy-parts handles)
> + (setq handles nil))))))
>    (when handles
>      (prog1
> - (catch 'found
> - (dolist (handle (if (stringp (car handles))
> - (if (member (car handles)
> - '("multipart/signed"
> - "multipart/encrypted"))
> - (throw 'found t)
> - (cdr handles))
> - (list handles)))
> - (if (stringp (car handle))
> - (when (message-signed-or-encrypted-p dont-emulate-mime handle)
> - (throw 'found t))
> - (when (and (bufferp (car handle))
> - (equal (mm-handle-media-type handle)
> - "message/rfc822"))
> - (with-current-buffer (mm-handle-buffer handle)
> - (when (message-signed-or-encrypted-p dont-emulate-mime)
> - (throw 'found t)))))))
> + (catch 'found
> + (dolist (handle (if (stringp (car handles))
> + (if (member (car handles)
> + '("multipart/signed"
> + "multipart/encrypted"))
> + (throw 'found t)
> + (cdr handles))
> + (list handles)))
> + (if (stringp (car handle))
> + (when (message-signed-or-encrypted-p dont-emulate-mime handle)
> + (throw 'found t))
> + (when (and (bufferp (car handle))
> + (equal (mm-handle-media-type handle)
> + "message/rfc822"))
> + (with-current-buffer (mm-handle-buffer handle)
> + (when (message-signed-or-encrypted-p dont-emulate-mime)
> + (throw 'found t)))))))
>        (mm-destroy-parts handles))))
>
>  ;;;###autoload
> @@ -7584,17 +7584,17 @@ is for the internal use."
>    (if digest
>        (message-forward-make-body-digest forward-buffer)
>      (if message-forward-as-mime
> - (if (and message-forward-show-mml
> - (not (and (eq message-forward-show-mml 'best)
> - ;; Use the raw form in the body if it contains
> - ;; signed or encrypted message so as not to be
> - ;; destroyed by re-encoding.
> - (with-current-buffer forward-buffer
> - (condition-case nil
> - (message-signed-or-encrypted-p)
> - (error t))))))
> - (message-forward-make-body-mml forward-buffer)
> - (message-forward-make-body-mime forward-buffer))
> + (if (and message-forward-show-mml
> + (not (and (eq message-forward-show-mml 'best)
> + ;; Use the raw form in the body if it contains
> + ;; signed or encrypted message so as not to be
> + ;; destroyed by re-encoding.
> + (with-current-buffer forward-buffer
> + (condition-case nil
> + (message-signed-or-encrypted-p)
> + (error t))))))
> + (message-forward-make-body-mml forward-buffer)
> + (message-forward-make-body-mime forward-buffer))
>        (message-forward-make-body-plain forward-buffer)))
>    (message-position-point))
>
> @@ -7615,7 +7615,7 @@ is for the internal use."
>    (interactive)
>    (setq rmail-enable-mime-composing t)
>    (setq rmail-insert-mime-forwarded-message-function
> - 'message-forward-rmail-make-body))
> + 'message-forward-rmail-make-body))
>
>  (defvar message-inhibit-body-encoding nil)
>
> @@ -7627,32 +7627,32 @@ is for the internal use."
>    (message "Resending message to %s..." address)
>    (save-excursion
>      (let ((cur (current-buffer))
> - gcc beg)
> + gcc beg)
>        ;; We first set up a normal mail buffer.
>        (unless (message-mail-user-agent)
> - (set-buffer (get-buffer-create " *message resend*"))
> - (let ((inhibit-read-only t))
> - (erase-buffer)))
> + (set-buffer (get-buffer-create " *message resend*"))
> + (let ((inhibit-read-only t))
> + (erase-buffer)))
>        (let ((message-this-is-mail t)
> - message-generate-hashcash
> - message-setup-hook)
> - (message-setup `((To . ,address))))
> + message-generate-hashcash
> + message-setup-hook)
> + (message-setup `((To . ,address))))
>        ;; Insert our usual headers.
>        (message-generate-headers '(From Date To Message-ID))
>        (message-narrow-to-headers)
>        (when (setq gcc (mail-fetch-field "gcc" nil t))
> - (message-remove-header "gcc"))
> + (message-remove-header "gcc"))
>        ;; Remove X-Draft-From header etc.
>        (message-remove-header message-ignored-mail-headers t)
>        ;; Rename them all to "Resent-*".
>        (goto-char (point-min))
>        (while (re-search-forward "^[A-Za-z]" nil t)
> - (forward-char -1)
> - (insert "Resent-"))
> + (forward-char -1)
> + (insert "Resent-"))
>        (widen)
>        (forward-line)
>        (let ((inhibit-read-only t))
> - (delete-region (point) (point-max)))
> + (delete-region (point) (point-max)))
>        (setq beg (point))
>        ;; Insert the message to be resent.
>        (insert-buffer-substring cur)
> @@ -7660,35 +7660,35 @@ is for the internal use."
>        (search-forward "\n\n")
>        (forward-char -1)
>        (save-restriction
> - (narrow-to-region beg (point))
> - (message-remove-header message-ignored-resent-headers t)
> - (goto-char (point-max)))
> + (narrow-to-region beg (point))
> + (message-remove-header message-ignored-resent-headers t)
> + (goto-char (point-max)))
>        (insert mail-header-separator)
>        ;; Rename all old ("Also-")Resent headers.
>        (while (re-search-backward "^\\(Also-\\)*Resent-" beg t)
> - (beginning-of-line)
> - (insert "Also-"))
> + (beginning-of-line)
> + (insert "Also-"))
>        ;; Quote any "From " lines at the beginning.
>        (goto-char beg)
>        (when (looking-at "From ")
> - (replace-match "X-From-Line: "))
> + (replace-match "X-From-Line: "))
>        ;; Send it.
>        (let ((message-inhibit-body-encoding
> - ;; Don't do any further encoding if it looks like the
> - ;; message has already been encoded.
> - (let ((case-fold-search t))
> - (re-search-forward "^mime-version:" nil t)))
> - (message-inhibit-ecomplete t)
> - ;; We don't want smtpmail.el to encode anything, either.
> - (sendmail-coding-system 'raw-text)
> - (select-safe-coding-system-function nil)
> - message-required-mail-headers
> - message-generate-hashcash
> - rfc2047-encode-encoded-words)
> - (message-send-mail))
> + ;; Don't do any further encoding if it looks like the
> + ;; message has already been encoded.
> + (let ((case-fold-search t))
> + (re-search-forward "^mime-version:" nil t)))
> + (message-inhibit-ecomplete t)
> + ;; We don't want smtpmail.el to encode anything, either.
> + (sendmail-coding-system 'raw-text)
> + (select-safe-coding-system-function nil)
> + message-required-mail-headers
> + message-generate-hashcash
> + rfc2047-encode-encoded-words)
> + (message-send-mail))
>        (when gcc
> - (message-goto-eoh)
> - (insert "Gcc: " gcc "\n"))
> + (message-goto-eoh)
> + (insert "Gcc: " gcc "\n"))
>        (run-hooks 'message-sent-hook)
>        (kill-buffer (current-buffer)))
>      (message "Resending message to %s...done" address)))
> @@ -7701,11 +7701,11 @@ contains some mail you have written 
> which has been bounced back to
>  you."
>    (interactive)
>    (let ((handles (mm-dissect-buffer t))
> - boundary)
> + boundary)
>      (message-pop-to-buffer (message-buffer-name "bounce"))
>      (if (stringp (car handles))
> - ;; This is a MIME bounce.
> - (mm-insert-part (car (last handles)))
> + ;; This is a MIME bounce.
> + (mm-insert-part (car (last handles)))
>        ;; This is a non-MIME bounce, so we try to remove things
>        ;; manually.
>        (mm-insert-part handles)
> @@ -7715,18 +7715,18 @@ you."
>        (setq boundary (point))
>        ;; We remove everything before the bounced mail.
>        (if (or (re-search-forward message-unsent-separator nil 
>        t)
> - (progn
> - (search-forward "\n\n" nil 'move)
> - (re-search-backward "^Return-Path:.*\n" boundary t)))
> - (progn
> - (forward-line 1)
> - (delete-region (point-min)
> - (if (re-search-forward "^[^ \n\t]+:" nil t)
> - (match-beginning 0)
> - (point))))
> - (goto-char boundary)
> - (when (re-search-backward "^.?From .*\n" nil t)
> - (delete-region (match-beginning 0) (match-end 0)))))
> + (progn
> + (search-forward "\n\n" nil 'move)
> + (re-search-backward "^Return-Path:.*\n" boundary t)))
> + (progn
> + (forward-line 1)
> + (delete-region (point-min)
> + (if (re-search-forward "^[^ \n\t]+:" nil t)
> + (match-beginning 0)
> + (point))))
> + (goto-char boundary)
> + (when (re-search-backward "^.?From .*\n" nil t)
> + (delete-region (match-beginning 0) (match-end 0)))))
>      (mime-to-mml)
>      (save-restriction
>        (message-narrow-to-head-1)
> @@ -7745,10 +7745,10 @@ you."
>    (interactive)
>    (unless (message-mail-user-agent)
>      (message-pop-to-buffer (message-buffer-name "mail" to)
> - 'switch-to-buffer-other-window))
> + 'switch-to-buffer-other-window))
>    (let ((message-this-is-mail t))
>      (message-setup `((To . ,(or to "")) (Subject . ,(or subject 
>      "")))
> - nil nil nil 'switch-to-buffer-other-window)))
> + nil nil nil 'switch-to-buffer-other-window)))
>
>  ;;;###autoload
>  (defun message-mail-other-frame (&optional to subject)
> @@ -7756,30 +7756,30 @@ you."
>    (interactive)
>    (unless (message-mail-user-agent)
>      (message-pop-to-buffer (message-buffer-name "mail" to)
> - 'switch-to-buffer-other-frame))
> + 'switch-to-buffer-other-frame))
>    (let ((message-this-is-mail t))
>      (message-setup `((To . ,(or to "")) (Subject . ,(or subject 
>      "")))
> - nil nil nil 'switch-to-buffer-other-frame)))
> + nil nil nil 'switch-to-buffer-other-frame)))
>
>  ;;;###autoload
>  (defun message-news-other-window (&optional newsgroups subject)
>    "Start editing a news article to be sent."
>    (interactive)
>    (message-pop-to-buffer (message-buffer-name "posting" nil 
>    newsgroups)
> - 'switch-to-buffer-other-window)
> + 'switch-to-buffer-other-window)
>    (let ((message-this-is-news t))
>      (message-setup `((Newsgroups . ,(or newsgroups ""))
> - (Subject . ,(or subject ""))))))
> + (Subject . ,(or subject ""))))))
>
>  ;;;###autoload
>  (defun message-news-other-frame (&optional newsgroups subject)
>    "Start editing a news article to be sent."
>    (interactive)
>    (message-pop-to-buffer (message-buffer-name "posting" nil 
>    newsgroups)
> - 'switch-to-buffer-other-frame)
> + 'switch-to-buffer-other-frame)
>    (let ((message-this-is-news t))
>      (message-setup `((Newsgroups . ,(or newsgroups ""))
> - (Subject . ,(or subject ""))))))
> + (Subject . ,(or subject ""))))))
>
>  ;;; underline.el
>
> @@ -7797,9 +7797,9 @@ which specify the range to operate on."
>        (move-marker end1 (max start end))
>        (goto-char (min start end))
>        (while (< (point) end1)
> - (or (looking-at "[_\^@- ]")
> - (insert (char-after) "\b"))
> - (forward-char 1)))))
> + (or (looking-at "[_\^@- ]")
> + (insert (char-after) "\b"))
> + (forward-char 1)))))
>
>  ;;;###autoload
>  (defun message-unbold-region (start end)
> @@ -7812,13 +7812,13 @@ which specify the range to operate on."
>        (move-marker end1 (max start end))
>        (goto-char (min start end))
>        (while (search-forward "\b" end1 t)
> - (if (eq (char-after) (char-after (- (point) 2)))
> - (delete-char -2))))))
> + (if (eq (char-after) (char-after (- (point) 2)))
> + (delete-char -2))))))
>
>  (defun message-exchange-point-and-mark ()
>    "Exchange point and mark, but don't activate region if it was 
>    inactive."
>    (goto-char (prog1 (mark t)
> - (set-marker (mark-marker) (point)))))
> + (set-marker (mark-marker) (point)))))
>
>  ;; Support for toolbar
>  (defvar tool-bar-mode)
> @@ -7835,8 +7835,8 @@ Setter function for custom variables."
>      (set-default symbol value)))
>
>  (defcustom message-tool-bar (if (eq gmm-tool-bar-style 'gnome)
> - 'message-tool-bar-gnome
> - 'message-tool-bar-retro)
> + 'message-tool-bar-gnome
> + 'message-tool-bar-retro)
>    "Specifies the message mode tool bar.
>
>  It can be either a list or a symbol referring to a list. See
> @@ -7847,9 +7847,9 @@ Pre-defined symbols include 
> `message-tool-bar-gnome' and
>  `message-tool-bar-retro'."
>    :type '(repeat gmm-tool-bar-list-item)
>    :type '(choice (const :tag "GNOME style" 
>    message-tool-bar-gnome)
> - (const :tag "Retro look" message-tool-bar-retro)
> - (repeat :tag "User defined list" gmm-tool-bar-item)
> - (symbol))
> + (const :tag "Retro look" message-tool-bar-retro)
> + (repeat :tag "User defined list" gmm-tool-bar-item)
> + (symbol))
>    :version "23.1" ;; No Gnus
>    :initialize 'custom-initialize-default
>    :set 'message-tool-bar-update
> @@ -7857,12 +7857,12 @@ Pre-defined symbols include 
> `message-tool-bar-gnome' and
>
>  (defcustom message-tool-bar-gnome
>    '((ispell-message "spell" nil
> - :vert-only t
> - :visible (not flyspell-mode))
> + :vert-only t
> + :visible (not flyspell-mode))
>      (flyspell-buffer "spell" t
> - :vert-only t
> - :visible flyspell-mode
> - :help "Flyspell whole buffer")
> + :vert-only t
> + :visible flyspell-mode
> + :help "Flyspell whole buffer")
>      (message-send-and-exit "mail/send" t :label "Send")
>      (message-dont-send "mail/save-draft")
>      (mml-attach-file "attach" mml-mode-map :vert-only t)
> @@ -7902,7 +7902,7 @@ See `gmm-tool-bar-from-list' for details 
> on the format of the list."
>
>  (defcustom message-tool-bar-zap-list
>    '(new-file open-file dired kill-buffer write-file
> - print-buffer customize help)
> + print-buffer customize help)
>    "List of icon items from the global tool bar.
>  These items are not displayed on the message mode tool bar.
>
> @@ -7915,22 +7915,22 @@ See `gmm-tool-bar-from-list' for the 
> format of the list."
>
>  (defvar image-load-path)
>  (declare-function image-load-path-for-library "image"
> - (library image &optional path no-error))
> + (library image &optional path no-error))
>
>  (defun message-make-tool-bar (&optional force)
>    "Make a message mode tool bar from `message-tool-bar-list'.
>  When FORCE, rebuild the tool bar."
>    (when (and (boundp 'tool-bar-mode)
> - tool-bar-mode
> - (or (not message-tool-bar-map) force))
> + tool-bar-mode
> + (or (not message-tool-bar-map) force))
>      (setq message-tool-bar-map
> - (let* ((load-path
> - (image-load-path-for-library
> - "message" "mail/save-draft.xpm" nil t))
> - (image-load-path (cons (car load-path) image-load-path)))
> - (gmm-tool-bar-from-list message-tool-bar
> - message-tool-bar-zap-list
> - 'message-mode-map))))
> + (let* ((load-path
> + (image-load-path-for-library
> + "message" "mail/save-draft.xpm" nil t))
> + (image-load-path (cons (car load-path) image-load-path)))
> + (gmm-tool-bar-from-list message-tool-bar
> + message-tool-bar-zap-list
> + 'message-mode-map))))
>    message-tool-bar-map)
>
>  ;;; Group name completion.
> @@ -7944,11 +7944,11 @@ When FORCE, rebuild the tool bar."
>  (defcustom message-completion-alist
>    ;; FIXME: Make it possible to use the standard completion UI.
>    (list (cons message-newgroups-header-regexp 
>    'message-expand-group)
> - '("^\\(Resent-\\)?\\(To\\|B?Cc\\):" . message-expand-name)
> - 
>  	'("^\\(Reply-To\\|From\\|Mail-Followup-To\\|Mail-Copies-To\\):"
> - . message-expand-name)
> - '("^\\(Disposition-Notification-To\\|Return-Receipt-To\\):"
> - . message-expand-name))
> + '("^\\(Resent-\\)?\\(To\\|B?Cc\\):" . message-expand-name)
> + 
>      '("^\\(Reply-To\\|From\\|Mail-Followup-To\\|Mail-Copies-To\\):"
> + . message-expand-name)
> + '("^\\(Disposition-Notification-To\\|Return-Receipt-To\\):"
> + . message-expand-name))
>    "Alist of (RE . FUN). Use FUN for completion on header lines 
>    matching RE."
>    :version "22.1"
>    :group 'message
> @@ -7968,7 +7968,7 @@ If nil, the function bound in 
> `text-mode-map' or `global-map' is executed."
>    :group 'message
>    :link '(custom-manual "(message)Various Commands")
>    :type '(choice (const nil)
> - function))
> + function))
>
>  (declare-function mail-abbrev-in-expansion-header-p 
>  "mailabbrev" ())
>
> @@ -7993,8 +7993,8 @@ regular text mode tabbing command."
>  (defun message-completion-function ()
>    (let ((alist message-completion-alist))
>      (while (and alist
> - (let ((mail-abbrev-mode-regexp (caar alist)))
> - (not (mail-abbrev-in-expansion-header-p))))
> + (let ((mail-abbrev-mode-regexp (caar alist)))
> + (not (mail-abbrev-in-expansion-header-p))))
>        (setq alist (cdr alist)))
>      (when (cdar alist)
>        (let ((fun (cdar alist)))
> @@ -8005,44 +8005,44 @@ regular text mode tabbing command."
>  (defun message-expand-group ()
>    "Expand the group name under point."
>    (let ((b (save-excursion
> - (save-restriction
> - (narrow-to-region
> - (save-excursion
> - (beginning-of-line)
> - (skip-chars-forward "^:")
> - (1+ (point)))
> - (point))
> - (skip-chars-backward "^, \t\n") (point))))
> - (completion-ignore-case t)
> - (e (progn (skip-chars-forward "^,\t\n ") (point)))
> - group collection)
> + (save-restriction
> + (narrow-to-region
> + (save-excursion
> + (beginning-of-line)
> + (skip-chars-forward "^:")
> + (1+ (point)))
> + (point))
> + (skip-chars-backward "^, \t\n") (point))))
> + (completion-ignore-case t)
> + (e (progn (skip-chars-forward "^,\t\n ") (point)))
> + group collection)
>      (when (and (boundp 'gnus-active-hashtb)
> - gnus-active-hashtb)
> + gnus-active-hashtb)
>        (mapatoms
>         (lambda (symbol)
> - (setq group (symbol-name symbol))
> - (push (if (string-match "[^\000-\177]" group)
> - (gnus-group-decoded-name group)
> - group)
> - collection))
> + (setq group (symbol-name symbol))
> + (push (if (string-match "[^\000-\177]" group)
> + (gnus-group-decoded-name group)
> + group)
> + collection))
>         gnus-active-hashtb))
>      (completion-in-region b e collection)))
>
>  (defun message-expand-name ()
>    (cond ((and (memq 'eudc message-expand-name-databases)
> - (boundp 'eudc-protocol)
> - eudc-protocol)
> - (eudc-expand-inline))
> - ((and (memq 'bbdb message-expand-name-databases)
> - (fboundp 'bbdb-complete-name))
> + (boundp 'eudc-protocol)
> + eudc-protocol)
> + (eudc-expand-inline))
> + ((and (memq 'bbdb message-expand-name-databases)
> + (fboundp 'bbdb-complete-name))
>           (let ((starttick (buffer-modified-tick)))
>             (or (bbdb-complete-name)
>                 ;; Apparently, bbdb-complete-name can return nil 
>                 ;; even when
>                 ;; completion took place. So let's double check 
>                 ;; the buffer was
>                 ;; not modified.
>                 (/= starttick (buffer-modified-tick)))))
> - (t
> - (expand-abbrev))))
> + (t
> + (expand-abbrev))))
>
>  ;;; Help stuff.
>
> @@ -8051,14 +8051,14 @@ regular text mode tabbing command."
>  If SHOW is non-nil, the arguments TEXT... are displayed in a 
>  temp buffer.
>  The following arguments may contain lists of values."
>    (if (and show
> - (setq text (message-flatten-list text)))
> + (setq text (message-flatten-list text)))
>        (save-window-excursion
>          (with-output-to-temp-buffer " *MESSAGE information 
>          message*"
>            (with-current-buffer " *MESSAGE information message*"
> - (fundamental-mode)
> - (mapc 'princ text)
> - (goto-char (point-min))))
> - (funcall ask question))
> + (fundamental-mode)
> + (mapc 'princ text)
> + (goto-char (point-min))))
> + (funcall ask question))
>      (funcall ask question)))
>
>  (defun message-flatten-list (list)
> @@ -8067,9 +8067,9 @@ The following arguments may contain lists 
> of values."
>  \(message-flatten-list \\='(1 (2 3 (4 5 (6))) 7))
>  => (1 2 3 4 5 6 7)"
>    (cond ((consp list)
> - (apply 'append (mapcar 'message-flatten-list list)))
> - (list
> - (list list))))
> + (apply 'append (mapcar 'message-flatten-list list)))
> + (list
> + (list list))))
>
>  (defun message-generate-new-buffer-clone-locals (name &optional 
>  varstr)
>    "Create and return a buffer with name based on NAME using 
>    `generate-new-buffer'.
> @@ -8084,21 +8084,21 @@ regexp VARSTR."
>  (defun message-clone-locals (buffer &optional varstr)
>    "Clone the local variables from BUFFER to the current 
>    buffer."
>    (let ((locals (with-current-buffer buffer 
>    (buffer-local-variables)))
> - (regexp 
>  	"^gnus\\|^nn\\|^message\\|^sendmail\\|^smtp\\|^user-mail-address"))
> + (regexp 
>      "^gnus\\|^nn\\|^message\\|^sendmail\\|^smtp\\|^user-mail-address"))
>      (mapcar
>       (lambda (local)
>         (when (and (consp local)
> - (car local)
> - (string-match regexp (symbol-name (car local)))
> - (or (null varstr)
> - (string-match varstr (symbol-name (car local)))))
> - (ignore-errors
> - ;; Cloning message-default-charset could cause an already
> - ;; encoded text to be encoded again, yielding raw bytes
> - ;; instead of characters in the message.
> - (unless (eq 'message-default-charset (car local))
> - (set (make-local-variable (car local))
> - (cdr local))))))
> + (car local)
> + (string-match regexp (symbol-name (car local)))
> + (or (null varstr)
> + (string-match varstr (symbol-name (car local)))))
> + (ignore-errors
> + ;; Cloning message-default-charset could cause an already
> + ;; encoded text to be encoded again, yielding raw bytes
> + ;; instead of characters in the message.
> + (unless (eq 'message-default-charset (car local))
> + (set (make-local-variable (car local))
> + (cdr local))))))
>       locals)))
>
>  ;;;
> @@ -8108,52 +8108,52 @@ regexp VARSTR."
>  (defun message-encode-message-body ()
>    (unless message-inhibit-body-encoding
>      (let ((mail-parse-charset (or mail-parse-charset
> - message-default-charset))
> - (case-fold-search t)
> - lines content-type-p)
> + message-default-charset))
> + (case-fold-search t)
> + lines content-type-p)
>        (message-goto-body)
>        (save-restriction
> - (narrow-to-region (point) (point-max))
> - (let ((new (mml-generate-mime)))
> - (when new
> - (delete-region (point-min) (point-max))
> - (insert new)
> - (goto-char (point-min))
> - (if (eq (aref new 0) ?\n)
> - (delete-char 1)
> - (search-forward "\n\n")
> - (setq lines (buffer-substring (point-min) (1- (point))))
> - (delete-region (point-min) (point))))))
> + (narrow-to-region (point) (point-max))
> + (let ((new (mml-generate-mime)))
> + (when new
> + (delete-region (point-min) (point-max))
> + (insert new)
> + (goto-char (point-min))
> + (if (eq (aref new 0) ?\n)
> + (delete-char 1)
> + (search-forward "\n\n")
> + (setq lines (buffer-substring (point-min) (1- (point))))
> + (delete-region (point-min) (point))))))
>        (save-restriction
> - (message-narrow-to-headers-or-head)
> - (message-remove-header "Mime-Version")
> - (goto-char (point-max))
> - (insert "MIME-Version: 1.0\n")
> - (when lines
> - (insert lines))
> - (setq content-type-p
> - (or mml-boundary
> - (re-search-backward "^Content-Type:" nil t))))
> + (message-narrow-to-headers-or-head)
> + (message-remove-header "Mime-Version")
> + (goto-char (point-max))
> + (insert "MIME-Version: 1.0\n")
> + (when lines
> + (insert lines))
> + (setq content-type-p
> + (or mml-boundary
> + (re-search-backward "^Content-Type:" nil t))))
>        (save-restriction
> - (message-narrow-to-headers-or-head)
> - (message-remove-first-header "Content-Type")
> - (message-remove-first-header "Content-Transfer-Encoding"))
> + (message-narrow-to-headers-or-head)
> + (message-remove-first-header "Content-Type")
> + (message-remove-first-header "Content-Transfer-Encoding"))
>        ;; We always make sure that the message has a 
>        ;; Content-Type
>        ;; header. This is because some broken MTAs and MUAs get
>        ;; awfully confused when confronted with a message with a
>        ;; MIME-Version header and without a Content-Type header. 
>        ;; For
>        ;; instance, Solaris' /usr/bin/mail.
>        (unless content-type-p
> - (goto-char (point-min))
> - ;; For unknown reason, MIME-Version doesn't exist.
> - (when (re-search-forward "^MIME-Version:" nil t)
> - (forward-line 1)
> - (insert "Content-Type: text/plain; charset=us-ascii\n"))))))
> + (goto-char (point-min))
> + ;; For unknown reason, MIME-Version doesn't exist.
> + (when (re-search-forward "^MIME-Version:" nil t)
> + (forward-line 1)
> + (insert "Content-Type: text/plain; charset=us-ascii\n"))))))
>
>  (defun message-read-from-minibuffer (prompt &optional 
>  initial-contents)
>    "Read from the minibuffer while providing abbrev expansion."
>    (let ((minibuffer-setup-hook 'mail-abbrevs-setup)
> - (minibuffer-local-map message-minibuffer-local-map))
> + (minibuffer-local-map message-minibuffer-local-map))
>      (read-from-minibuffer prompt initial-contents)))
>
>  (defun message-use-alternative-email-as-from ()
> @@ -8162,11 +8162,11 @@ address in `message-alternative-emails', 
> looking at To, Cc and
>  From headers in the original article."
>    (require 'mail-utils)
>    (let* ((fields '("To" "Cc" "From"))
> - (emails
> - (message-tokenize-header
> - (mail-strip-quoted-names
> - (mapconcat 'message-fetch-reply-field fields ","))))
> - (email
> + (emails
> + (message-tokenize-header
> + (mail-strip-quoted-names
> + (mapconcat 'message-fetch-reply-field fields ","))))
> + (email
>            (cond ((functionp message-alternative-emails)
>                   (car (cl-remove-if-not 
>                   message-alternative-emails emails)))
>                  (t (cl-loop for email in emails
> @@ -8176,7 +8176,7 @@ From headers in the original article."
>        (message-remove-header "From")
>        (goto-char (point-max))
>        (insert "From: " (let ((user-mail-address email)) 
>        (message-make-from))
> - "\n"))))
> + "\n"))))
>
>  (defun message-options-get (symbol)
>    (cdr (assq symbol message-options)))
> @@ -8184,69 +8184,69 @@ From headers in the original article."
>  (defun message-options-set (symbol value)
>    (let ((the-cons (assq symbol message-options)))
>      (if the-cons
> - (if value
> - (setcdr the-cons value)
> - (setq message-options (delq the-cons message-options)))
> + (if value
> + (setcdr the-cons value)
> + (setq message-options (delq the-cons message-options)))
>        (and value
> - (push (cons symbol value) message-options))))
> + (push (cons symbol value) message-options))))
>    value)
>
>  (defun message-options-set-recipient ()
>    (save-restriction
>      (message-narrow-to-headers-or-head)
>      (message-options-set 'message-sender
> - (mail-strip-quoted-names
> - (message-fetch-field "from")))
> + (mail-strip-quoted-names
> + (message-fetch-field "from")))
>      (message-options-set 'message-recipients
> - (mail-strip-quoted-names
> - (let ((to (message-fetch-field "to"))
> - (cc (message-fetch-field "cc"))
> - (bcc (message-fetch-field "bcc")))
> - (concat
> - (or to "")
> - (if (and to cc) ", ")
> - (or cc "")
> - (if (and (or to cc) bcc) ", ")
> - (or bcc "")))))))
> + (mail-strip-quoted-names
> + (let ((to (message-fetch-field "to"))
> + (cc (message-fetch-field "cc"))
> + (bcc (message-fetch-field "bcc")))
> + (concat
> + (or to "")
> + (if (and to cc) ", ")
> + (or cc "")
> + (if (and (or to cc) bcc) ", ")
> + (or bcc "")))))))
>
>  (defun message-hide-headers ()
>    "Hide headers based on the `message-hidden-headers' 
>    variable."
>    (let ((regexps (if (stringp message-hidden-headers)
> - (list message-hidden-headers)
> - message-hidden-headers))
> - (inhibit-point-motion-hooks t)
> - (inhibit-modification-hooks t)
> - (end-of-headers (point-min)))
> + (list message-hidden-headers)
> + message-hidden-headers))
> + (inhibit-point-motion-hooks t)
> + (inhibit-modification-hooks t)
> + (end-of-headers (point-min)))
>      (when regexps
>        (save-excursion
> - (save-restriction
> - (message-narrow-to-headers)
> - (goto-char (point-min))
> - (while (not (eobp))
> - (if (not (message-hide-header-p regexps))
> - (message-next-header)
> - (let ((begin (point))
> - header header-len)
> - (message-next-header)
> - (setq header (buffer-substring begin (point))
> - header-len (- (point) begin))
> - (delete-region begin (point))
> - (goto-char end-of-headers)
> - (insert header)
> - (setq end-of-headers
> - (+ end-of-headers header-len))))))))
> + (save-restriction
> + (message-narrow-to-headers)
> + (goto-char (point-min))
> + (while (not (eobp))
> + (if (not (message-hide-header-p regexps))
> + (message-next-header)
> + (let ((begin (point))
> + header header-len)
> + (message-next-header)
> + (setq header (buffer-substring begin (point))
> + header-len (- (point) begin))
> + (delete-region begin (point))
> + (goto-char end-of-headers)
> + (insert header)
> + (setq end-of-headers
> + (+ end-of-headers header-len))))))))
>      (narrow-to-region end-of-headers (point-max))))
>
>  (defun message-hide-header-p (regexps)
>    (let ((result nil)
> - (reverse nil))
> + (reverse nil))
>      (when (eq (car regexps) 'not)
>        (setq reverse t)
>        (pop regexps))
>      (dolist (regexp regexps)
>        (setq result (or result (looking-at regexp))))
>      (if reverse
> - (not result)
> + (not result)
>        result)))
>
>  (declare-function ecomplete-add-item "ecomplete" (type key 
>  text))
> @@ -8257,12 +8257,12 @@ From headers in the original article."
>    (dolist (header '("to" "cc" "from" "reply-to"))
>      (let ((value (message-field-value header)))
>        (dolist (string (mail-header-parse-addresses value 'raw))
> - (setq string
> - (replace-regexp-in-string
> - "\n" ""
> - (replace-regexp-in-string "^ +\\| +$" "" string)))
> - (ecomplete-add-item 'mail (car (mail-header-parse-address 
>  	string))
> - string))))
> + (setq string
> + (replace-regexp-in-string
> + "\n" ""
> + (replace-regexp-in-string "^ +\\| +$" "" string)))
> + (ecomplete-add-item 'mail (car (mail-header-parse-address 
>      string))
> + string))))
>    (ecomplete-save))
>
>  (autoload 'ecomplete-display-matches "ecomplete")
> @@ -8271,26 +8271,26 @@ From headers in the original article."
>    (and (memq (char-after (point-at-bol)) '(?C ?T ?\t ? ))
>         (message-point-in-header-p)
>         (save-excursion
> - (beginning-of-line)
> - (while (and (memq (char-after) '(?\t ? ))
> - (zerop (forward-line -1))))
> - (looking-at "To:\\|Cc:"))))
> + (beginning-of-line)
> + (while (and (memq (char-after) '(?\t ? ))
> + (zerop (forward-line -1))))
> + (looking-at "To:\\|Cc:"))))
>
>  (defun message-display-abbrev (&optional choose)
>    "Display the next possible abbrev for the text before point."
>    (interactive (list t))
>    (when (message--in-tocc-p)
>      (let* ((end (point))
> - (start (save-excursion
> - (and (re-search-backward "[\n\t ]" nil t)
> - (1+ (point)))))
> - (word (when start (buffer-substring start end)))
> - (match (when (and word
> - (not (zerop (length word))))
> - (ecomplete-display-matches 'mail word choose))))
> + (start (save-excursion
> + (and (re-search-backward "[\n\t ]" nil t)
> + (1+ (point)))))
> + (word (when start (buffer-substring start end)))
> + (match (when (and word
> + (not (zerop (length word))))
> + (ecomplete-display-matches 'mail word choose))))
>        (when (and choose match)
> - (delete-region start end)
> - (insert match)))))
> + (delete-region start end)
> + (insert match)))))
>
>  (defun message-ecomplete-capf ()
>    "Return completion data for email addresses in Ecomplete.
> @@ -8301,7 +8301,7 @@ Meant for use on 
> `completion-at-point-functions'."
>      (let ((end (save-excursion
>                   (skip-chars-forward "^, \t\n")
>                   (point)))
> - (start (save-excursion
> + (start (save-excursion
>                     (skip-chars-backward "^, \t\n")
>                     (point))))
>        `(,start ,end ,(ecomplete-completion-table 'mail)))))
> @@ -8367,35 +8367,35 @@ The messages are separated by 
> `message-form-letter-separator'.
>  Header and body are separated by `mail-header-separator'."
>    (interactive "P")
>    (let ((sent 0) (skipped 0)
> - start end text
> - buff
> - to done)
> + start end text
> + buff
> + to done)
>      (goto-char (point-min))
>      (while (not done)
>        (setq start (point)
> - end (if (search-forward message-form-letter-separator nil t)
> - (- (point) (length message-form-letter-separator) -1)
> - (setq done t)
> - (point-max)))
> + end (if (search-forward message-form-letter-separator nil t)
> + (- (point) (length message-form-letter-separator) -1)
> + (setq done t)
> + (point-max)))
>        (setq text
> - (buffer-substring-no-properties start end))
> + (buffer-substring-no-properties start end))
>        (setq buff (generate-new-buffer "*mail - form letter*"))
>        (with-current-buffer buff
> - (insert text)
> - (message-mode)
> - (setq to (message-fetch-field "To"))
> - (switch-to-buffer buff)
> - (when force
> - (sit-for message-send-form-letter-delay))
> - (if (or force
> - (y-or-n-p (format-message "Send message to `%s'? " to)))
> - (progn
> - (setq sent (1+ sent))
> - (message-send-and-exit))
> - (message "Message to `%s' skipped." to)
> - (setq skipped (1+ skipped)))
> - (when (buffer-live-p buff)
> - (kill-buffer buff))))
> + (insert text)
> + (message-mode)
> + (setq to (message-fetch-field "To"))
> + (switch-to-buffer buff)
> + (when force
> + (sit-for message-send-form-letter-delay))
> + (if (or force
> + (y-or-n-p (format-message "Send message to `%s'? " to)))
> + (progn
> + (setq sent (1+ sent))
> + (message-send-and-exit))
> + (message "Message to `%s' skipped." to)
> + (setq skipped (1+ skipped)))
> + (when (buffer-live-p buff)
> + (kill-buffer buff))))
>      (message "%s message(s) sent, %s skipped." sent skipped)))
>
>  (defun message-replace-header (header new-value &optional after 
>  force)
> @@ -8409,8 +8409,8 @@ even if NEW-VALUE is empty."
>        (message-remove-header header))
>      (when (or force (> (length new-value) 0))
>        (if after
> - (message-position-on-field header after)
> - (message-position-on-field header))
> + (message-position-on-field header after)
> + (message-position-on-field header))
>        (insert new-value))))
>
>  (make-obsolete-variable
> @@ -8418,16 +8418,16 @@ even if NEW-VALUE is empty."
>   "Recipients are simplified by default" "27.1")
>  (defcustom message-recipients-without-full-name
>    (list "[email-masked]"
> - "[email-masked]"
> - "[email-masked]"
> - "[email-masked]"
> - "[email-masked]")
> + "[email-masked]"
> + "[email-masked]"
> + "[email-masked]"
> + "[email-masked]")
>    "Mail addresses that have no full name.
>  Used in `message-simplify-recipients'."
>    ;; Maybe the addresses could be extracted from
>    ;; `gnus-parameter-to-list-alist'?
>    :type '(choice (const :tag "None" nil)
> - (repeat string))
> + (repeat string))
>    :version "23.1" ;; No Gnus
>    :group 'message-headers)
>
> @@ -8439,17 +8439,17 @@ Used in `message-simplify-recipients'."
>       hdr
>       (mapconcat
>        (lambda (addrcomp)
> - (if (and message-recipients-without-full-name
> - (string-match
> - (regexp-opt message-recipients-without-full-name)
> - (cadr addrcomp)))
> - (cadr addrcomp)
> - (if (car addrcomp)
> - (message-make-from (car addrcomp) (cadr addrcomp))
> - (cadr addrcomp))))
> + (if (and message-recipients-without-full-name
> + (string-match
> + (regexp-opt message-recipients-without-full-name)
> + (cadr addrcomp)))
> + (cadr addrcomp)
> + (if (car addrcomp)
> + (message-make-from (car addrcomp) (cadr addrcomp))
> + (cadr addrcomp))))
>        (when (message-fetch-field hdr)
> - (mail-extract-address-components
> - (message-fetch-field hdr) t))
> + (mail-extract-address-components
> + (message-fetch-field hdr) t))
>        ", "))))
>
>  ;;; multipart/related and HTML support.
> @@ -8472,29 +8472,29 @@ Used in `message-simplify-recipients'."
>      (save-excursion
>        (goto-char (point-min))
>        (while (not (eobp))
> - (when-let* ((props (get-text-property (point) 'display)))
> - (when (and (consp props)
> - (eq (car props) 'image))
> - (put-text-property (point) (1+ (point)) 'display nil)
> - (setq displayed t)))
> - (forward-char 1)))
> + (when-let* ((props (get-text-property (point) 'display)))
> + (when (and (consp props)
> + (eq (car props) 'image))
> + (put-text-property (point) (1+ (point)) 'display nil)
> + (setq displayed t)))
> + (forward-char 1)))
>      (unless displayed
>        (save-excursion
> - (goto-char (point-min))
> - (while (re-search-forward "<img.*src=\"\\([^\"]+\\).*>" nil t)
> - (let ((string (match-string 0))
> - (file (match-string 1))
> - (edges (window-inside-pixel-edges
> - (get-buffer-window (current-buffer)))))
> - (delete-region (match-beginning 0) (match-end 0))
> - (insert-image
> - (create-image
> - file 'imagemagick nil
> - :max-width (truncate
> - (* 0.7 (- (nth 2 edges) (nth 0 edges))))
> - :max-height (truncate
> - (* 0.5 (- (nth 3 edges) (nth 1 edges)))))
> - string)))))))
> + (goto-char (point-min))
> + (while (re-search-forward "<img.*src=\"\\([^\"]+\\).*>" nil t)
> + (let ((string (match-string 0))
> + (file (match-string 1))
> + (edges (window-inside-pixel-edges
> + (get-buffer-window (current-buffer)))))
> + (delete-region (match-beginning 0) (match-end 0))
> + (insert-image
> + (create-image
> + file 'imagemagick nil
> + :max-width (truncate
> + (* 0.7 (- (nth 2 edges) (nth 0 edges))))
> + :max-height (truncate
> + (* 0.5 (- (nth 3 edges) (nth 1 edges)))))
> + string)))))))
>
>  (provide 'message)
> 0