Commit 38a71655 authored by Chong Yidong's avatar Chong Yidong
Browse files

Make rmail-default-dont-reply-to-names nil (Bug#7888); rename rmail-dont-reply-*.

* lisp/mail/mail-utils.el (mail-dont-reply-to-names): New variable,
from rmail-dont-reply-to-names.  Callers changed.
(mail-dont-reply-to): Rename from mail-dont-reply-to.
(rmail-dont-reply-to): Make it an obsolete alias.

* lisp/mail/rmail.el (rmail-default-dont-reply-to-names): Default to
nil, and make obsolete.
(rmail-dont-reply-to-names): Alias to mail-dont-reply-to-names.

* lisp/mail/rmailsum.el (rmail-summary-sort-by-correspondent): Doc fix.

* lisp/mail/rmailsort.el (rmail-sort-by-correspondent)
(rmail-select-correspondent): Doc fix.  Use mail-dont-reply-to.

* lisp/mail/rmail.el (rmail-reply): Use mail-dont-reply-to.
parent 470d996d
2011-02-12 Chong Yidong <cyd@stupidchicken.com>
* mail/mail-utils.el (mail-dont-reply-to-names): New variable,
from rmail-dont-reply-to-names. Callers changed.
(mail-dont-reply-to): Rename from mail-dont-reply-to.
(rmail-dont-reply-to): Make it an obsolete alias.
* mail/rmail.el (rmail-default-dont-reply-to-names): Default to
nil, and make obsolete (Bug#7888).
(rmail-dont-reply-to-names): Alias to mail-dont-reply-to-names.
* mail/rmailsum.el (rmail-summary-sort-by-correspondent): Doc fix.
* mail/rmailsort.el (rmail-sort-by-correspondent)
(rmail-select-correspondent): Doc fix. Use mail-dont-reply-to.
* mail/rmail.el (rmail-reply): Use mail-dont-reply-to.
2011-02-12 Thierry Volpiatto <thierry.volpiatto@gmail.com> 2011-02-12 Thierry Volpiatto <thierry.volpiatto@gmail.com>
   
* files.el (copy-directory): New argument COPY-CONTENTS for * files.el (copy-directory): New argument COPY-CONTENTS for
......
...@@ -35,6 +35,17 @@ often correct parser." ...@@ -35,6 +35,17 @@ often correct parser."
:type 'boolean :type 'boolean
:group 'mail) :group 'mail)
;;;###autoload
(defcustom mail-dont-reply-to-names nil
"Regexp specifying addresses to prune from a reply message.
If this is nil, it is set the first time you compose a reply, to
a value which excludes your own email address.
Matching addresses are excluded from the CC field in replies, and
also the To field, unless this would leave an empty To field."
:type '(choice regexp (const :tag "Your Name" nil))
:group 'mail)
;; Returns t if file FILE is an Rmail file. ;; Returns t if file FILE is an Rmail file.
;;;###autoload ;;;###autoload
(defun mail-file-babyl-p (file) (defun mail-file-babyl-p (file)
...@@ -213,36 +224,31 @@ Return a modified address list." ...@@ -213,36 +224,31 @@ Return a modified address list."
nil 'literal address 2))) nil 'literal address 2)))
address)))) address))))
;; The following piece of ugliness is legacy code. The name was an (defun mail-dont-reply-to (destinations)
;; unfortunate choice --- a flagrant violation of the Emacs Lisp
;; coding conventions. `mail-dont-reply-to' would have been
;; infinitely better. Also, `rmail-dont-reply-to-names' might have
;; been better named `mail-dont-reply-to-names' and sourced from this
;; file instead of in rmail.el. Yuck. -pmr
(defun rmail-dont-reply-to (destinations)
"Prune addresses from DESTINATIONS, a list of recipient addresses. "Prune addresses from DESTINATIONS, a list of recipient addresses.
All addresses matching `rmail-dont-reply-to-names' are removed from Remove all addresses matching `mail-dont-reply-to-names' from the
the comma-separated list. The pruned list is returned." comma-separated list, and return the pruned list."
;; FIXME this (setting a user option the first time a command is used) ;; FIXME this (setting a user option the first time a command is used)
;; is somewhat strange. Normally one would never set the option, ;; is somewhat strange. Normally one would never set the option,
;; but instead fall back to the default so long as it was nil. ;; but instead fall back to the default so long as it was nil.
;; Or just set the default directly in the defcustom. ;; Or just set the default directly in the defcustom.
(if (null rmail-dont-reply-to-names) (if (null mail-dont-reply-to-names)
(setq rmail-dont-reply-to-names (setq mail-dont-reply-to-names
(concat (if rmail-default-dont-reply-to-names (concat
(concat rmail-default-dont-reply-to-names "\\|") ;; `rmail-default-dont-reply-to-names' is obsolete.
"") (if rmail-default-dont-reply-to-names
(if (and user-mail-address (concat rmail-default-dont-reply-to-names "\\|")
(not (equal user-mail-address user-login-name))) "")
;; Anchor the login name and email address so (if (and user-mail-address
;; that we don't match substrings: if the (not (equal user-mail-address user-login-name)))
;; login name is "foo", we shouldn't match ;; Anchor the login name and email address so that we
;; "barfoo@baz.com". ;; don't match substrings: if the login name is
(concat "\\`" ;; "foo", we shouldn't match "barfoo@baz.com".
(regexp-quote user-mail-address) (concat "\\`"
"\\'\\|") (regexp-quote user-mail-address)
"") "\\'\\|")
(concat "\\`" (regexp-quote user-login-name) "@")))) "")
(concat "\\`" (regexp-quote user-login-name) "@"))))
;; Split up DESTINATIONS and match each element separately. ;; Split up DESTINATIONS and match each element separately.
(let ((start-pos 0) (cur-pos 0) (let ((start-pos 0) (cur-pos 0)
(case-fold-search t)) (case-fold-search t))
...@@ -262,7 +268,7 @@ the comma-separated list. The pruned list is returned." ...@@ -262,7 +268,7 @@ the comma-separated list. The pruned list is returned."
(setq cur-pos start-pos))) (setq cur-pos start-pos)))
(let* ((address (substring destinations start-pos cur-pos)) (let* ((address (substring destinations start-pos cur-pos))
(naked-address (mail-strip-quoted-names address))) (naked-address (mail-strip-quoted-names address)))
(if (string-match rmail-dont-reply-to-names naked-address) (if (string-match mail-dont-reply-to-names naked-address)
(setq destinations (concat (substring destinations 0 start-pos) (setq destinations (concat (substring destinations 0 start-pos)
(and cur-pos (substring destinations (and cur-pos (substring destinations
(1+ cur-pos)))) (1+ cur-pos))))
...@@ -278,6 +284,9 @@ the comma-separated list. The pruned list is returned." ...@@ -278,6 +284,9 @@ the comma-separated list. The pruned list is returned."
(substring destinations (match-end 0)) (substring destinations (match-end 0))
destinations)) destinations))
;; Legacy name
(define-obsolete-function-alias 'rmail-dont-reply-to 'mail-dont-reply-to "24.1")
;;;###autoload ;;;###autoload
(defun mail-fetch-field (field-name &optional last all list) (defun mail-fetch-field (field-name &optional last all list)
......
...@@ -191,7 +191,7 @@ please report it with \\[report-emacs-bug].") ...@@ -191,7 +191,7 @@ please report it with \\[report-emacs-bug].")
:group 'rmail-retrieve :group 'rmail-retrieve
:type '(repeat (directory))) :type '(repeat (directory)))
(declare-function rmail-dont-reply-to "mail-utils" (destinations)) (declare-function mail-dont-reply-to "mail-utils" (destinations))
(declare-function rmail-update-summary "rmailsum" (&rest ignore)) (declare-function rmail-update-summary "rmailsum" (&rest ignore))
(defun rmail-probe (prog) (defun rmail-probe (prog)
...@@ -283,26 +283,16 @@ Setting this variable has an effect only before reading a mail." ...@@ -283,26 +283,16 @@ Setting this variable has an effect only before reading a mail."
:version "21.1") :version "21.1")
;;;###autoload ;;;###autoload
(defcustom rmail-dont-reply-to-names nil (defvaralias 'rmail-dont-reply-to-names 'mail-dont-reply-to-names)
"A regexp specifying addresses to prune from a reply message.
If this is nil, it is set the first time you compose a reply, to
a value which excludes your own email address, plus whatever is
specified by `rmail-default-dont-reply-to-names'.
Matching addresses are excluded from the CC field in replies, and
also the To field, unless this would leave an empty To field."
:type '(choice regexp (const :tag "Your Name" nil))
:group 'rmail-reply)
;;;###autoload ;;;###autoload
(defvar rmail-default-dont-reply-to-names (purecopy "\\`info-") (defvar rmail-default-dont-reply-to-names nil
"Regexp specifying part of the default value of `rmail-dont-reply-to-names'. "Regexp specifying part of the default value of `mail-dont-reply-to-names'.
This is used when the user does not set `rmail-dont-reply-to-names' This is used when the user does not set `mail-dont-reply-to-names'
explicitly. (The other part of the default value is the user's explicitly.")
email address and name.) It is useful to set this variable in ;;;###autoload
the site customization file. The default value is conventionally (make-obsolete-variable 'rmail-default-dont-reply-to-names
used for large mailing lists to broadcast announcements.") 'mail-dont-reply-to-names "24.1")
;; Is it really useful to set this site-wide?
;;;###autoload ;;;###autoload
(defcustom rmail-ignored-headers (defcustom rmail-ignored-headers
...@@ -3578,15 +3568,14 @@ use \\[mail-yank-original] to yank the original message into it." ...@@ -3578,15 +3568,14 @@ use \\[mail-yank-original] to yank the original message into it."
;; Remove unwanted names from reply-to, since Mail-Followup-To ;; Remove unwanted names from reply-to, since Mail-Followup-To
;; header causes all the names in it to wind up in reply-to, not ;; header causes all the names in it to wind up in reply-to, not
;; in cc. But if what's left is an empty list, use the original. ;; in cc. But if what's left is an empty list, use the original.
(let* ((reply-to-list (rmail-dont-reply-to reply-to))) (let* ((reply-to-list (mail-dont-reply-to reply-to)))
(if (string= reply-to-list "") reply-to reply-to-list)) (if (string= reply-to-list "") reply-to reply-to-list))
subject subject
(rmail-make-in-reply-to-field from date message-id) (rmail-make-in-reply-to-field from date message-id)
(if just-sender (if just-sender
nil nil
;; mail-strip-quoted-names is NOT necessary for rmail-dont-reply-to ;; `mail-dont-reply-to' doesn't need `mail-strip-quoted-names'.
;; to do its job. (let* ((cc-list (mail-dont-reply-to
(let* ((cc-list (rmail-dont-reply-to
(mail-strip-quoted-names (mail-strip-quoted-names
(if (null cc) to (concat to ", " cc)))))) (if (null cc) to (concat to ", " cc))))))
(if (string= cc-list "") nil cc-list))) (if (string= cc-list "") nil cc-list)))
...@@ -4359,7 +4348,7 @@ This applies only to the current session. ...@@ -4359,7 +4348,7 @@ This applies only to the current session.
;;;### (autoloads (rmail-sort-by-labels rmail-sort-by-lines rmail-sort-by-correspondent ;;;### (autoloads (rmail-sort-by-labels rmail-sort-by-lines rmail-sort-by-correspondent
;;;;;; rmail-sort-by-recipient rmail-sort-by-author rmail-sort-by-subject ;;;;;; rmail-sort-by-recipient rmail-sort-by-author rmail-sort-by-subject
;;;;;; rmail-sort-by-date) "rmailsort" "rmailsort.el" "f297fd33c8f7fa74baf16d2da99acb35") ;;;;;; rmail-sort-by-date) "rmailsort" "rmailsort.el" "ad1c98fe868c0e5804cf945d6c980d0b")
;;; Generated autoloads from rmailsort.el ;;; Generated autoloads from rmailsort.el
(autoload 'rmail-sort-by-date "rmailsort" "\ (autoload 'rmail-sort-by-date "rmailsort" "\
...@@ -4393,7 +4382,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order. ...@@ -4393,7 +4382,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order.
Sort messages of current Rmail buffer by other correspondent. Sort messages of current Rmail buffer by other correspondent.
This uses either the \"From\", \"Sender\", \"To\", or This uses either the \"From\", \"Sender\", \"To\", or
\"Apparently-To\" header, downcased. Uses the first header not \"Apparently-To\" header, downcased. Uses the first header not
excluded by `rmail-dont-reply-to-names'. If prefix argument excluded by `mail-dont-reply-to-names'. If prefix argument
REVERSE is non-nil, sorts in reverse order. REVERSE is non-nil, sorts in reverse order.
\(fn REVERSE)" t nil) \(fn REVERSE)" t nil)
...@@ -4418,7 +4407,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order. ...@@ -4418,7 +4407,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order.
;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic ;;;### (autoloads (rmail-summary-by-senders rmail-summary-by-topic
;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels ;;;;;; rmail-summary-by-regexp rmail-summary-by-recipients rmail-summary-by-labels
;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "adad96c9eb13cae4bae0769f731d8784") ;;;;;; rmail-summary) "rmailsum" "rmailsum.el" "3817e21639db697abe5832d3223ecfc2")
;;; Generated autoloads from rmailsum.el ;;; Generated autoloads from rmailsum.el
(autoload 'rmail-summary "rmailsum" "\ (autoload 'rmail-summary "rmailsum" "\
......
...@@ -87,7 +87,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order." ...@@ -87,7 +87,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order."
"Sort messages of current Rmail buffer by other correspondent. "Sort messages of current Rmail buffer by other correspondent.
This uses either the \"From\", \"Sender\", \"To\", or This uses either the \"From\", \"Sender\", \"To\", or
\"Apparently-To\" header, downcased. Uses the first header not \"Apparently-To\" header, downcased. Uses the first header not
excluded by `rmail-dont-reply-to-names'. If prefix argument excluded by `mail-dont-reply-to-names'. If prefix argument
REVERSE is non-nil, sorts in reverse order." REVERSE is non-nil, sorts in reverse order."
(interactive "P") (interactive "P")
(rmail-sort-messages reverse (rmail-sort-messages reverse
...@@ -98,13 +98,12 @@ REVERSE is non-nil, sorts in reverse order." ...@@ -98,13 +98,12 @@ REVERSE is non-nil, sorts in reverse order."
'("From" "Sender" "To" "Apparently-To")))))) '("From" "Sender" "To" "Apparently-To"))))))
(defun rmail-select-correspondent (msg fields) (defun rmail-select-correspondent (msg fields)
"Find the first header not excluded by `rmail-dont-reply-to-names'. "Find the first header not excluded by `mail-dont-reply-to-names'.
MSG is a message number. FIELDS is a list of header names." MSG is a message number. FIELDS is a list of header names."
(let ((ans "")) (let ((ans ""))
(while (and fields (string= ans "")) (while (and fields (string= ans ""))
(setq ans (setq ans
;; NB despite the name, this lives in mail-utils.el. (mail-dont-reply-to
(rmail-dont-reply-to
(mail-strip-quoted-names (mail-strip-quoted-names
(or (rmail-get-header (car fields) msg) "")))) (or (rmail-get-header (car fields) msg) ""))))
(setq fields (cdr fields))) (setq fields (cdr fields)))
......
...@@ -1796,7 +1796,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order." ...@@ -1796,7 +1796,7 @@ If prefix argument REVERSE is non-nil, sorts in reverse order."
"Sort messages of current Rmail summary by other correspondent. "Sort messages of current Rmail summary by other correspondent.
This uses either the \"From\", \"Sender\", \"To\", or This uses either the \"From\", \"Sender\", \"To\", or
\"Apparently-To\" header, downcased. Uses the first header not \"Apparently-To\" header, downcased. Uses the first header not
excluded by `rmail-dont-reply-to-names'. If prefix argument excluded by `mail-dont-reply-to-names'. If prefix argument
REVERSE is non-nil, sorts in reverse order." REVERSE is non-nil, sorts in reverse order."
(interactive "P") (interactive "P")
(rmail-sort-from-summary (function rmail-sort-by-correspondent) reverse)) (rmail-sort-from-summary (function rmail-sort-by-correspondent) reverse))
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment