mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 10:30:25 -08:00
Gnus Group Mail Spliting on mailing-list headers
* texi/gnus.texi: Document the new `list' split abbreviation and `match-list' group parameter (bug#25346). * lisp/gnus-mlspl.el: Use the `list' abbreviation when the new `match-list' group parameter is set to `t'. The split regexp is modified to match either `@` or `.` as domain separator to comply with RFC2919 IDs too. * lisp/nnmail.el: Add new `list' split abbreviation matching common mailing-list headers.
This commit is contained in:
parent
caf8896216
commit
45e3753762
4 changed files with 44 additions and 7 deletions
|
|
@ -3102,6 +3102,21 @@ interest in relation to the sieve parameter.
|
|||
The Sieve language is described in RFC 3028. @xref{Top, Emacs Sieve,
|
||||
Top, sieve, Emacs Sieve}.
|
||||
|
||||
@item match-list
|
||||
@cindex match-list
|
||||
If this parameter is set to @code{t} and @code{nnmail-split-method} is
|
||||
set to @code{gnus-group-split}, Gnus will match @code{to-address},
|
||||
@code{to-list}, @code{extra-aliases} and @code{split-regexp} against
|
||||
the @code{list} split abbreviation. The split regexp is modified to
|
||||
match either a @code{@@} or a dot @code{.} in mail addresses to
|
||||
conform to RFC2919 @code{List-ID}.
|
||||
|
||||
See @code{nnmail-split-abbrev-alist} for the regular expression
|
||||
matching mailing-list headers.
|
||||
|
||||
See @pxref{Group Mail Splitting} to automatically split on group
|
||||
parameters.
|
||||
|
||||
@item (agent parameters)
|
||||
If the agent has been enabled, you can set any of its parameters to
|
||||
control the behavior of the agent in individual groups. See Agent
|
||||
|
|
@ -15475,6 +15490,9 @@ Matches the @samp{To}, @samp{Cc}, @samp{Apparently-To},
|
|||
@item any
|
||||
Is the union of the @code{from} and @code{to} entries.
|
||||
@end table
|
||||
@item list
|
||||
Matches the @samp{List-ID}, @samp{List-Post}, @samp{X-Mailing-List},
|
||||
@samp{X-BeenThere} and @samp{X-Loop} fields.
|
||||
|
||||
@vindex nnmail-split-fancy-syntax-table
|
||||
@code{nnmail-split-fancy-syntax-table} is the syntax table in effect
|
||||
|
|
|
|||
5
etc/NEWS
5
etc/NEWS
|
|
@ -190,6 +190,11 @@ from 'gnus-score-find-favourite-words'.
|
|||
*** Gmane has been removed as an nnir backend, since Gmane no longer
|
||||
has a search engine.
|
||||
|
||||
+++
|
||||
*** Splitting mail on common mailing list has been added. See the
|
||||
concept index in the Gnus manual for the `match-list' entry.
|
||||
|
||||
|
||||
** Htmlfontify
|
||||
*** The functions 'hfy-color', 'hfy-color-vals' and
|
||||
'hfy-fallback-color-values' and the variables 'hfy-fallback-color-map'
|
||||
|
|
|
|||
|
|
@ -182,7 +182,8 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
|
|||
(to-list (cdr (assoc 'to-list params)))
|
||||
(extra-aliases (cdr (assoc 'extra-aliases params)))
|
||||
(split-regexp (cdr (assoc 'split-regexp params)))
|
||||
(split-exclude (cdr (assoc 'split-exclude params))))
|
||||
(split-exclude (cdr (assoc 'split-exclude params)))
|
||||
(match-list (cdr (assoc 'match-list params))))
|
||||
(when (or to-address to-list extra-aliases split-regexp)
|
||||
;; regexp-quote to-address, to-list and extra-aliases
|
||||
;; and add them all to split-regexp
|
||||
|
|
@ -202,16 +203,28 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
|
|||
"\\|")
|
||||
"\\)"))
|
||||
;; Now create the new SPLIT
|
||||
(push (append
|
||||
(list 'any split-regexp)
|
||||
(let ((split-regexp-with-list-ids
|
||||
(replace-regexp-in-string "@" "[@.]" split-regexp t t))
|
||||
(exclude
|
||||
;; Generate RESTRICTs for SPLIT-EXCLUDEs.
|
||||
(if (listp split-exclude)
|
||||
(apply #'append
|
||||
(mapcar (lambda (arg) (list '- arg))
|
||||
split-exclude))
|
||||
(list '- split-exclude))
|
||||
(list group-clean))
|
||||
split)
|
||||
(list '- split-exclude))))
|
||||
|
||||
(if match-list
|
||||
;; Match RFC2919 IDs or mail addresses
|
||||
(push (append
|
||||
(list 'list split-regexp-with-list-ids)
|
||||
exclude
|
||||
(list group-clean))
|
||||
split)
|
||||
(push (append
|
||||
(list 'any split-regexp)
|
||||
exclude
|
||||
(list group-clean))
|
||||
split)))
|
||||
;; If it matches the empty string, it is a catch-all
|
||||
(when (string-match split-regexp "")
|
||||
(setq catch-all nil)))))))))
|
||||
|
|
|
|||
|
|
@ -488,7 +488,8 @@ Example:
|
|||
(to . "to\\|cc\\|apparently-to\\|resent-to\\|resent-cc")
|
||||
(from . "from\\|sender\\|resent-from")
|
||||
(nato . "to\\|cc\\|resent-to\\|resent-cc")
|
||||
(naany . "from\\|to\\|cc\\|sender\\|resent-from\\|resent-to\\|resent-cc"))
|
||||
(naany . "from\\|to\\|cc\\|sender\\|resent-from\\|resent-to\\|resent-cc")
|
||||
(list . "list-id\\|list-post\\|x-mailing-list\||x-beenthere\\|x-loop"))
|
||||
"Alist of abbreviations allowed in `nnmail-split-fancy'."
|
||||
:group 'nnmail-split
|
||||
:type '(repeat (cons :format "%v" symbol regexp)))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue