* Group splitting on list headers
@ 2013-12-14 17:03 Daniel Dehennin
2013-12-26 15:47 ` Lars Ingebrigtsen
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Dehennin @ 2013-12-14 17:03 UTC (permalink / raw)
To: ding
[-- Attachment #1: Type: text/plain, Size: 2284 bytes --]
Hello,
I'm heavily using Group splitting and I have an issue with mailing-list
and cross-posting.
I'm looking at splitting on mailing-list headers and wonder if this is
the correct way of doing it.
I first create a new “list” abbrev:
#+begin_src diff
diff --git a/lisp/nnmail.el b/lisp/nnmail.el
index 5be449e..73023df 100644
--- a/lisp/nnmail.el
+++ b/lisp/nnmail.el
@@ -517,6 +517,7 @@ Example:
(defcustom nnmail-split-abbrev-alist
'((any . "from\\|to\\|cc\\|sender\\|apparently-to\\|resent-from\\|resent-to\\|resent-cc")
(mail . "mailer-daemon\\|postmaster\\|uucp")
+ (list . "List-Post\\|X-BeenThere\\|X-Loop\||X-.*List")
(to . "to\\|cc\\|apparently-to\\|resent-to\\|resent-cc")
(from . "from\\|sender\\|resent-from")
(nato . "to\\|cc\\|resent-to\\|resent-cc")
#+end_src
And then I use the “subscribed” group parameter to discriminate the use
of “list” in place of “any”
#+begin_src diff
diff --git a/lisp/gnus-mlspl.el b/lisp/gnus-mlspl.el
index 3947c67..303aec5 100644
--- a/lisp/gnus-mlspl.el
+++ b/lisp/gnus-mlspl.el
@@ -177,7 +177,10 @@ 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)))
+ (target (if (cdr (assoc 'subscribed params))
+ 'list
+ 'any)))
(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
@@ -198,7 +201,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
"\\)"))
;; Now create the new SPLIT
(push (append
- (list 'any split-regexp)
+ (list target split-regexp)
;; Generate RESTRICTs for SPLIT-EXCLUDEs.
(if (listp split-exclude)
(apply #'append
#+end_src
I wonder if using the “subscribed” is a good thing or maybe should I
define a new group parameter?
Regards.
--
Daniel Dehennin
Récupérer ma clef GPG:
gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Group splitting on list headers
2013-12-14 17:03 Group splitting on list headers Daniel Dehennin
@ 2013-12-26 15:47 ` Lars Ingebrigtsen
2013-12-26 16:58 ` Daniel Dehennin
0 siblings, 1 reply; 7+ messages in thread
From: Lars Ingebrigtsen @ 2013-12-26 15:47 UTC (permalink / raw)
To: ding
Daniel Dehennin <daniel.dehennin@baby-gnu.org> writes:
> I wonder if using the “subscribed” is a good thing or maybe should I
> define a new group parameter?
Hm... perhaps it would be best to define a new parameter, since this is
a new thing?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog http://lars.ingebrigtsen.no/
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Group splitting on list headers
2013-12-26 15:47 ` Lars Ingebrigtsen
@ 2013-12-26 16:58 ` Daniel Dehennin
2013-12-26 16:59 ` Lars Ingebrigtsen
0 siblings, 1 reply; 7+ messages in thread
From: Daniel Dehennin @ 2013-12-26 16:58 UTC (permalink / raw)
To: ding
[-- Attachment #1: Type: text/plain, Size: 380 bytes --]
Lars Ingebrigtsen <larsi@gnus.org> writes:
Hello,
> Hm... perhaps it would be best to define a new parameter, since this is
> a new thing?
Ok, do you have any convention?
- match-list
- match-list-headers
- match-on-list-headers
- use-list-headers
Regards.
--
Daniel Dehennin
Récupérer ma clef GPG:
gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: Group splitting on list headers
2013-12-26 16:58 ` Daniel Dehennin
@ 2013-12-26 16:59 ` Lars Ingebrigtsen
2013-12-27 15:57 ` [PATCH] " Daniel Dehennin
0 siblings, 1 reply; 7+ messages in thread
From: Lars Ingebrigtsen @ 2013-12-26 16:59 UTC (permalink / raw)
To: ding
Daniel Dehennin <daniel.dehennin@baby-gnu.org> writes:
>> Hm... perhaps it would be best to define a new parameter, since this is
>> a new thing?
>
> Ok, do you have any convention?
>
> - match-list
> - match-list-headers
> - match-on-list-headers
> - use-list-headers
Uhm... perhaps `match-list'?
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog http://lars.ingebrigtsen.no/
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH] Re: Group splitting on list headers
2013-12-26 16:59 ` Lars Ingebrigtsen
@ 2013-12-27 15:57 ` Daniel Dehennin
2013-12-28 1:53 ` Daniel Dehennin
2013-12-29 0:25 ` Daniel Dehennin
0 siblings, 2 replies; 7+ messages in thread
From: Daniel Dehennin @ 2013-12-27 15:57 UTC (permalink / raw)
To: ding
[-- Attachment #1: Type: text/plain, Size: 4299 bytes --]
Lars Ingebrigtsen <larsi@gnus.org> writes:
> Uhm... perhaps `match-list'?
Shortest is best ;-)
You can review my proposal patch on my gitweb[1] or with the following
pull request.
Tell me if something should be changed.
Regards.
The following changes since commit 934f25f8d8801afe315722fd0b0b4ea14bcb1534:
Make split tracing work in nnimap groups, too (2013-12-26 17:39:39 +0100)
are available in the git repository at:
git://git.baby-gnu.net/gnus.git tags/feature/group-mail-splitting-on-list-headers
for you to fetch changes up to 2ff14c69a7ad8c4256236331fbe94ff43dd9976a:
Add Group Mail Spliting on mailing-list headers (2013-12-27 16:54:15 +0100)
----------------------------------------------------------------
We define a new `list' abbreviation and `match-list' group parameter
and make Group Mail Splitting generate a SPLIT using it.
----------------------------------------------------------------
Daniel Dehennin (1):
Add Group Mail Spliting on mailing-list headers
lisp/gnus-mlspl.el | 7 +++++--
lisp/nnmail.el | 1 +
texi/gnus.texi | 15 +++++++++++++++
3 files changed, 21 insertions(+), 2 deletions(-)
diff --git a/lisp/gnus-mlspl.el b/lisp/gnus-mlspl.el
index 3947c67..1997f43 100644
--- a/lisp/gnus-mlspl.el
+++ b/lisp/gnus-mlspl.el
@@ -177,7 +177,10 @@ 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-abbrev (if (cdr (assoc 'match-list params))
+ 'list
+ 'any)))
(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
@@ -198,7 +201,7 @@ Calling (gnus-group-split-fancy nil nil \"mail.others\") returns:
"\\)"))
;; Now create the new SPLIT
(push (append
- (list 'any split-regexp)
+ (list match-abbrev split-regexp)
;; Generate RESTRICTs for SPLIT-EXCLUDEs.
(if (listp split-exclude)
(apply #'append
diff --git a/lisp/nnmail.el b/lisp/nnmail.el
index 5be449e..03d610c 100644
--- a/lisp/nnmail.el
+++ b/lisp/nnmail.el
@@ -517,6 +517,7 @@ Example:
(defcustom nnmail-split-abbrev-alist
'((any . "from\\|to\\|cc\\|sender\\|apparently-to\\|resent-from\\|resent-to\\|resent-cc")
(mail . "mailer-daemon\\|postmaster\\|uucp")
+ (list . "list-post\\|x-beenthere\\|x-loop")
(to . "to\\|cc\\|apparently-to\\|resent-to\\|resent-cc")
(from . "from\\|sender\\|resent-from")
(nato . "to\\|cc\\|resent-to\\|resent-cc")
diff --git a/texi/gnus.texi b/texi/gnus.texi
index 498c8a4..03af068 100644
--- a/texi/gnus.texi
+++ b/texi/gnus.texi
@@ -3103,6 +3103,18 @@ 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 lookup mail addresses
+against the @code{list} split abbreviation.
+
+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
@@ -15403,6 +15415,9 @@ Matches the @samp{To}, @samp{Cc}, @samp{Apparently-To},
@samp{Resent-To} and @samp{Resent-Cc} fields.
@item any
Is the union of the @code{from} and @code{to} entries.
+@item list
+Matches the @samp{List-Post}, @samp{X-BeenThere} and @samp{X-Loop}
+fields.
@end table
@vindex nnmail-split-fancy-syntax-table
Footnotes:
[1] http://git.baby-gnu.net/gitweb/gitweb.cgi?p=gnus.git;a=tag;h=refs/tags/feature/group-mail-splitting-on-list-headers
--
Daniel Dehennin
Récupérer ma clef GPG:
gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Re: Group splitting on list headers
2013-12-27 15:57 ` [PATCH] " Daniel Dehennin
@ 2013-12-28 1:53 ` Daniel Dehennin
2013-12-29 0:25 ` Daniel Dehennin
1 sibling, 0 replies; 7+ messages in thread
From: Daniel Dehennin @ 2013-12-28 1:53 UTC (permalink / raw)
To: ding
[-- Attachment #1: Type: text/plain, Size: 667 bytes --]
Hello,
Looking at group mail splitting I found several room of improvement:
- make sure to use an email only once, when “to-address” and “to-list”
are equal the same mail is present two times in “nnmail-split-fancy”
- use “regexp-opt” for to-address, to-list and extra-aliases
- as ding mailing list does not define “List-Post” headers, we shoud take
the “to-address” and “to-list” mails, replace the “@” with “.” and add
“List-ID” to “nnmail-split-abbrev-alist”
Any comment welcome.
Regards.
--
Daniel Dehennin
Récupérer ma clef GPG:
gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH] Re: Group splitting on list headers
2013-12-27 15:57 ` [PATCH] " Daniel Dehennin
2013-12-28 1:53 ` Daniel Dehennin
@ 2013-12-29 0:25 ` Daniel Dehennin
1 sibling, 0 replies; 7+ messages in thread
From: Daniel Dehennin @ 2013-12-29 0:25 UTC (permalink / raw)
To: ding
[-- Attachment #1: Type: text/plain, Size: 1357 bytes --]
Daniel Dehennin <daniel.dehennin@baby-gnu.org> writes:
> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>> Uhm... perhaps `match-list'?
>
> Shortest is best ;-)
>
> You can review my proposal patch on my gitweb[1] or with the following
> pull request.
Matching “extra-aliases” against list headers is not very useful in my
use-case as I set it “admin-address” to group management mails in the same
group as the mailing-list.
It looks to be more useful by generating a split like the following:
#+begin_src emacs-lisp
(| (list (regexp-opt (list to-address to-list)) group)
(any (regexp-opt (if (listp extra-aliases)
extra-aliases
(list extra-aliases))) group))
#+end_src
I think we could use the “match-list” with several values:
- nil: match “to-address”, “to-list” and “extra-aliases” against 'any
abbreviation
- t: match “to-address” and “to-list” against 'list abbreviation and
“extra-aliases” against 'any
- 'with-extra-aliases: match “to-address”, “to-list” and “extra-aliases”
against 'list abbreviation
To reduce complexity in “gnus-group-split-fancy” a new helper to build
the SPLIT should be added.
Any comment?
Regards.
--
Daniel Dehennin
Récupérer ma clef GPG:
gpg --keyserver pgp.mit.edu --recv-keys 0x7A6FE2DF
[-- Attachment #2: Type: application/pgp-signature, Size: 229 bytes --]
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2013-12-29 0:25 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-12-14 17:03 Group splitting on list headers Daniel Dehennin
2013-12-26 15:47 ` Lars Ingebrigtsen
2013-12-26 16:58 ` Daniel Dehennin
2013-12-26 16:59 ` Lars Ingebrigtsen
2013-12-27 15:57 ` [PATCH] " Daniel Dehennin
2013-12-28 1:53 ` Daniel Dehennin
2013-12-29 0:25 ` Daniel Dehennin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).