From: Glenn Morris Date: Wed, 23 Nov 2011 08:29:08 +0000 (-0800) Subject: Doc fixes related to rmail-automatic-folder-directives. X-Git-Tag: emacs-pretest-24.0.92~73 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=9aac4de2aa4fc07530345b666209933553fd6c23;p=emacs.git Doc fixes related to rmail-automatic-folder-directives. * mail/rmail.el (rmail-message-filter, rmail-auto-file): Doc fixes. (rmail-auto-file): Ignore case in the "special" field names, as mail-fetch-field does for all others. --- diff --git a/lisp/ChangeLog b/lisp/ChangeLog index bcb3dc56c80..9cf50d4c00b 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -4,6 +4,10 @@ 2011-11-23 Glenn Morris + * mail/rmail.el (rmail-message-filter, rmail-auto-file): Doc fixes. + (rmail-auto-file): Ignore case in the "special" field names, + as mail-fetch-field does for all others. + * mail/rmail.el (rmail-forward): * mail/rmailkwd.el (rmail-set-label): * mail/rmailout.el (rmail-output, rmail-output-as-seen) diff --git a/lisp/mail/rmail.el b/lisp/mail/rmail.el index b920c065de5..e24b5eeadcf 100644 --- a/lisp/mail/rmail.el +++ b/lisp/mail/rmail.el @@ -495,29 +495,36 @@ before obeying `rmail-ignored-headers'." "23.1") (defcustom rmail-automatic-folder-directives nil - "List of directives specifying where to put a message. + "List of directives specifying how to automatically file messages. +Whenever Rmail shows a message in the folder that `rmail-file-name' +specifies, it calls `rmail-auto-file' to maybe file the message in +another folder according to this list. Messages that are already +marked as `filed', or are in different folders, are left alone. + Each element of the list is of the form: (FOLDERNAME FIELD REGEXP [ FIELD REGEXP ] ... ) -Where FOLDERNAME is the name of a folder to put the message. -If any of the field regexp's are nil, then it is ignored. +FOLDERNAME is the name of a folder in which to put the message. +If FOLDERNAME is nil then Rmail deletes the message, and moves on to +the next. If FOLDERNAME is \"/dev/null\", Rmail deletes the message, +but does not move to the next. -If FOLDERNAME is \"/dev/null\", it is deleted. -If FOLDERNAME is nil then it is deleted, and skipped. +FIELD is the name of a header field in the message, such as +\"subject\" or \"from\". A FIELD of \"to\" includes all text +from both the \"to\" and \"cc\" headers. -FIELD is the plain text name of a field in the message, such as -\"subject\" or \"from\". A FIELD of \"to\" will automatically include -all text from the \"cc\" field as well. +REGEXP is a regular expression to match (case-sensitively) against +the preceding specified FIELD. -REGEXP is an expression to match in the preceding specified FIELD. -FIELD/REGEXP pairs continue in the list. +There may be any number of FIELD/REGEXP pairs. +All pairs must match for a directive to apply to a message. +For a given message, Rmail applies only the first matching directive. -examples: +Examples: (\"/dev/null\" \"from\" \"@spam.com\") ; delete all mail from spam.com (\"RMS\" \"from\" \"rms@\") ; save all mail from RMS. - -Note that this is only applied in the folder specifed by `rmail-file-name'." +" :group 'rmail :version "21.1" :type '(repeat (sexp :tag "Directive"))) @@ -2941,8 +2948,11 @@ Uses the face specified by `rmail-highlight-face'." (cons overlay rmail-overlay-list)))))))))) (defun rmail-auto-file () - "Automatically move a message into a sub-folder based on criteria. -Called when a new message is displayed." + "Automatically move a message into another sfolder based on criteria. +This moves messages according to `rmail-automatic-folder-directives'. +It only does something in the folder that `rmail-file-name' specifies. +The function `rmail-show-message' calls this whenever it shows a message. +This leaves a message alone if it already has the `filed' attribute." (if (or (zerop rmail-total-messages) (rmail-message-attr-p rmail-current-message "...F") (not (string= (buffer-file-name) @@ -2962,10 +2972,14 @@ Called when a new message is displayed." directive-loop (cdr (car d))) (while (and (car directive-loop) (let ((f (cond - ((string= (car directive-loop) "from") from) - ((string= (car directive-loop) "to") to) - ((string= (car directive-loop) "subject") subj) + ((string= (downcase (car directive-loop)) "from") + from) + ((string= (downcase (car directive-loop)) "to") + to) + ((string= (downcase (car directive-loop)) + "subject") subj) (t (mail-fetch-field (car directive-loop)))))) + ;; FIXME - shouldn't this ignore case? (and f (string-match (car (cdr directive-loop)) f)))) (setq directive-loop (cdr (cdr directive-loop)))) ;; If there are no directives left, then it was a complete match.