Re: mutt/2808: changed / added %-expansion in save-hook
The following reply was made to PR mutt/2808; it has been noted by GNATS.
From: Kyle Wheeler <kyle@xxxxxxxxxxxxxx>
To: bug-any@xxxxxxxxxxxxx
Cc:
Subject: Re: mutt/2808: changed / added %-expansion in save-hook
Date: Thu, 1 Mar 2007 07:09:54 -0700
--WplhKdTI2c8ulnbP
Content-Type: multipart/mixed; boundary="+pHx0qQiF2pBVqBT"
Content-Disposition: inline
--+pHx0qQiF2pBVqBT
Content-Type: text/plain; charset=us-ascii; format=flowed
Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
On Thursday, March 1 at 10:28 AM, quoth utcke+mutt@xxxxxxxxxxxxxxxxxxxxxxx=
de:
>However, the man-page makes no special mention of '%' as an active=20
>character in patterns, and the above is a valid address according to=20
>RFC822. So either this is a software bug, or a duplicate of 2135=20
>(hard to tell without a documentation of the intended behaviour).
>>How-To-Repeat:
>:fcc-save-hook karsten%phifo@xxxxxxxxxxxxxx=3Dkarsten.ottenberg
>>Fix:
>If this is the intended behaviour, than it should be documented and an esc=
ape-character should be specified (neither \% nor %% work).
Attached is a patch to CVS HEAD that adds better documentation.
~Kyle
--=20
Well, I've wrestled with reality for over thirty five years, doctor,=20
and I'm happy to state I finally won out over it.
-- Jimmy Stewart, in "Harvey"
--+pHx0qQiF2pBVqBT
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename="mutt.doc.patch"
Content-Transfer-Encoding: quoted-printable
diff -u -3 -p -r3.22 muttrc.man.head
--- doc/muttrc.man.head 20 Jul 2006 00:12:52 -0000 3.22
+++ doc/muttrc.man.head 1 Mar 2007 14:07:57 -0000
@@ -67,16 +67,36 @@ like sh and bash: Prepend the name of th
.SH COMMANDS
.PP
.nf
-\fBalias\fP \fIkey\fP \fIaddress\fP [\fB,\fP \fIaddress\fP [ ... ]]
+\fBalias\fP [\fB-group\fP \fIname\fP [...]] \fIkey\fP \fIaddress\fP [\fB,\=
fP \fIaddress\fP [ ... ]]
\fBunalias\fP [\fB * \fP | \fIkey\fP ]
.fi
.IP
-\fBalias\fP defines an alias \fIkey\fP for the given addresses.
+\fBalias\fP defines an alias \fIkey\fP for the given addresses. Each
+\fIaddress\fP will be resolved into either an email address (user@example.=
com)
+or a named email address (User Name <user@xxxxxxxxxxx>). The address may b=
e specified in either format, or in the format \(lquser@xxxxxxxxxxx (User
+Name)\(rq.
\fBunalias\fP removes the alias corresponding to the given \fIkey\fP or
-all aliases when \(lq\fB*\fP\(rq is used as an argument.
+all aliases when \(lq\fB*\fP\(rq is used as an argument. The optional
+\fB-group\fP argument to \fBalias\fP causes the aliased address(es) to be
+added to the named \fIgroup\fP.
.PP
.nf
-\fBalternates\fP \fIregexp\fP [ \fB,\fP \fIregexp\fP [ ... ]]
+\fBgroup\fP [\fB-group\fP \fIname\fP] [\fB-rx\fP \fIEXPR\fP [ \fI...\fP ]]=
[\fB-addr\fP \fIaddress\fP [ \fI...\fP ]]
+\fBungroup\fP [\fB-group\fP \fIname\fP ] [ \fB*\fP | [[\fB-rx\fP \fIEXPR\f=
P [ \fI...\fP ]] [\fB-addr\fP \fIaddress\fP [ \fI...\fP ]]]
+.fi
+.IP
+\fBgroup\fP is used to directly add either addresses or regular expression=
s to
+the specified group or groups. The different categories of arguments to the
+\fBgroup\fP command can be in any order. The flags \fB-rx\fP and \fB-addr\=
fP
+specify what the following strings (that cannot begin with a hyphen) shoul=
d be
+interpreted as: either a regular expression or an email address, respectiv=
ely.
+\fBungroup\fP is used to remove addresses or regular expressions from the
+specified group or groups. The syntax is similar to the \fBgroup\fP comman=
d,
+however the special character \fB*\fP can be used to empty a group of all =
of
+its contents.
+.PP
+.nf
+\fBalternates\fP [\fB-group\fP \fIname\fP] \fIregexp\fP [ \fB,\fP \fIregex=
p\fP [ ... ]]
\fBunalternates\fP [\fB * \fP | \fIregexp\fP [ \fB,\fP \fIregexp\fP [ ... =
]] ]
.fi
.IP
@@ -84,7 +104,8 @@ all aliases when \(lq\fB*\fP\(rq is used
where you receive mail; you can use regular expressions to specify
alternate addresses. This affects mutt's idea about messages
from you, and messages addressed to you. \fBunalternates\fP removes
-a regular expression from the list of known alternates.
+a regular expression from the list of known alternates. The \fB-group\fP f=
lag
+causes all of the subsequent regular expressions to be added to the named =
group.
.PP
.nf
\fBalternative_order\fP \fItype\fP[\fB/\fP\fIsubtype\fP] [ ... ]
@@ -226,9 +247,9 @@ The \fBunignore\fP command permits you t
the above mentioned list of ignored headers.
.PP
.nf
-\fBlists\fP \fIregexp\fP [ \fIregexp\fP ... ]
+\fBlists\fP [\fB-group\fP \fIname\fP] \fIregexp\fP [ \fIregexp\fP ... ]
\fBunlists\fP \fIregexp\fP [ \fIregexp\fP ... ]
-\fBsubscribe\fP \fIregexp\fP [ \fIregexp\fP ... ]
+\fBsubscribe\fP [\fB-group\fP \fIname\fP] \fIregexp\fP [ \fIregexp\fP ... ]
\fBunsubscribe\fP \fIregexp\fP [ \fIregexp\fP ... ]
.fi
.IP
@@ -241,7 +262,8 @@ known mailing lists. The \fBunlists\fP=20
list from the lists of known and subscribed mailing lists. The
\fBsubscribe\fP command adds a mailing list to the lists of known
and subscribed mailing lists. The \fBunsubscribe\fP command removes
-it from the list of subscribed mailing lists.
+it from the list of subscribed mailing lists. The \fb-group\fP flag
+adds all of the subsequent regular expressions to the named group.
.TP
\fBmbox-hook\fP [\fB!\fP]\fIpattern\fP \fImailbox\fP
When mutt changes to a mail folder which matches \fIpattern\fP,
@@ -378,7 +400,9 @@ In various places with mutt, including s
A simple pattern consists of an operator of the form
\(lq\fB~\fP\fIcharacter\fP\(rq, possibly followed by a parameter
against which mutt is supposed to match the object specified by
-this operator. (For a list of operators, see below.)
+this operator. For some \fIcharacter\fPs, the \fB~\fP may be
+replaced by another character to alter the behavior of the match.
+These are described in the list of operators, below.
.PP
With some of these operators, the object to be matched consists of
several e-mail addresses. In these cases, the object is matched if
@@ -397,52 +421,154 @@ Additionally, you can negate a pattern b
.SS Simple Patterns
.PP
Mutt understands the following simple patterns:
-.PP
-.TS
-l l.
-~A all messages
-~b \fIEXPR\fP messages which contain \fIEXPR\fP in the message body
-~B \fIEXPR\fP messages which contain \fIEXPR\fP in the whole message
-~c \fIEXPR\fP messages carbon-copied to \fIEXPR\fP
-~C \fIEXPR\fP message is either to: or cc: \fIEXPR\fP
-~d \fIMIN\fP-\fIMAX\fP messages with \(lqdate-sent\(rq in a Date range
-~D deleted messages
-~e \fIEXPR\fP message which contains \fIEXPR\fP in the \(lqSender\(rq field
-~E expired messages
-~f \fIEXPR\fP messages originating from \fIEXPR\fP
-~F flagged messages
-~g PGP signed messages
-~G PGP encrypted messages
-~h \fIEXPR\fP messages which contain \fIEXPR\fP in the message header
-~H \fIEXPR\fP messages with spam tags matching \fIEXPR\fP
-~i \fIEXPR\fP message which match \fIEXPR\fP in the \(lqMessage-ID\(rq fie=
ld
-~k message contains PGP key material
-~l message is addressed to a known mailing list
-~L \fIEXPR\fP message is either originated or received by \fIEXPR\fP
-~m \fIMIN\fP-\fIMAX\fP message in the range \fIMIN\fP to \fIMAX\fP
-~n \fIMIN\fP-\fIMAX\fP messages with a score in the range \fIMIN\fP to
\fI=
MAX\fP
-~N new messages
-~O old messages
-~p message is addressed to you (consults $alternates)
-~P message is from you (consults $alternates)
-~Q messages which have been replied to
-~r \fIMIN\fP-\fIMAX\fP messages with \(lqdate-received\(rq in a Date
range
-~R read messages
-~s \fIEXPR\fP messages having \fIEXPR\fP in the \(lqSubject\(rq field.
-~S superseded messages
-~t \fIEXPR\fP messages addressed to \fIEXPR\fP
-~T tagged messages
-~u message is addressed to a subscribed mailing list
-~U unread messages
-~v message is part of a collapsed thread.
-~V cryptographically verified messages
-~x \fIEXPR\fP messages which contain \fIEXPR\fP in the \(lqReferences\(rq =
field
-~X \fIMIN\fP-\fIMAX\fP messages with MIN - MAX attachments
-~y \fIEXPR\fP messages which contain \fIEXPR\fP in the \(lqX-Label\(rq fie=
ld
-~z \fIMIN\fP-\fIMAX\fP messages with a size in the range \fIMIN\fP to
\fIM=
AX\fP
-~=3D duplicated messages (see $duplicate_threads)
-~$ unreferenced message (requries threaded view)
-.TE
+.P
+.PD 0
+.TP 12
+~A
+all messages
+.TP
+~b \fIEXPR\fP
+messages which contain \fIEXPR\fP in the message body.
+.TP
+=3Db \fISTRING\fP
+messages which contain \fISTRING\fP in the message body. If IMAP is enable=
d, searches for \fISTRING\fP on the server, rather than downloading each me=
ssage and searching it locally.
+.TP
+~B \fIEXPR\fP
+messages which contain \fIEXPR\fP in the whole message.
+.TP
+~c \fIEXPR\fP
+messages carbon-copied to \fIEXPR\fP
+.TP
+%c \fIgroup\fP
+messages carbon-copied to any member of \fIgroup\fP
+.TP
+~C \fIEXPR\fP
+messages either to: or cc: \fIEXPR\fP
+.TP
+%C \fIgroup\fP
+messages either to: or cc: to any member of \fIgroup\fP
+.TP
+~d \fIMIN\fP-\fIMAX\fP
+messages with \(lqdate-sent\(rq in a Date range
+.TP
+~D
+deleted messages
+.TP
+~e \fIEXPR\fP
+messages which contain \fIEXPR\fP in the \(lqSender\(rq field
+.TP
+%e \fIgroup\fP
+messages which contain a member of \fIgroup\fP in the \(lqSender\(rq field
+.TP
+~E
+expired messages
+.TP
+~f \fIEXPR\fP
+messages originating from \fIEXPR\fP
+.TP
+%f \fIgroup\fP
+messages originating form any member of \fIgroup\fP
+.TP
+~F
+flagged messages
+.TP
+~g
+PGP signed messages
+.TP
+~G
+PGP encrypted messages
+.TP
+~h \fIEXPR\fP
+messages which contain \fIEXPR\fP in the message header
+.TP
+~H \fIEXPR\fP
+messages with spam tags matching \fIEXPR\fP
+.TP
+~i \fIEXPR\fP
+messages which match \fIEXPR\fP in the \(lqMessage-ID\(rq field
+.TP
+~k
+messages containing PGP key material
+.TP
+~l
+messages addressed to a known mailing list (defined by either \fBsubscribe=
\fP or \fBlist\fP)
+.TP
+~L \fIEXPR\fP
+messages either originated or received by \fIEXPR\fP
+.TP
+%L \fIgroup\fP
+messages either originated or received by any member of \fIgroup\fP
+.TP
+~m \fIMIN\fP-\fIMAX\fP
+message in the range \fIMIN\fP to \fIMAX\fP
+.TP
+~n \fIMIN\fP-\fIMAX\fP
+messages with a score in the range \fIMIN\fP to \fIMAX\fP
+.TP
+~N
+new messages
+.TP
+~O
+old messages
+.TP
+~p
+messages addressed to you (as defined by \fBalternates\fP)
+.TP
+~P
+messages from you (as defined by \fBalternates\fP)
+.TP
+~Q
+messages which have been replied to
+.TP
+~r \fIMIN\fP-\fIMAX\fP
+messages with \(lqdate-received\(rq in a Date range
+.TP
+~R
+read messages
+.TP
+~s \fIEXPR\fP
+messages having \fIEXPR\fP in the \(lqSubject\(rq field.
+.TP
+~S
+superseded messages
+.TP
+~t \fIEXPR\fP
+messages addressed to \fIEXPR\fP
+.TP
+~T
+tagged messages
+.TP
+~u
+messages addressed to a subscribed mailing list (defined by \fBsubscribe\f=
P commands)
+.TP
+~U
+unread messages
+.TP
+~v
+message is part of a collapsed thread.
+.TP
+~V
+cryptographically verified messages
+.TP
+~x \fIEXPR\fP
+messages which contain \fIEXPR\fP in the \(lqReferences\(rq field
+.TP
+~X \fIMIN\fP-\fIMAX\fP
+messages with MIN - MAX attachments
+.TP
+~y \fIEXPR\fP
+messages which contain \fIEXPR\fP in the \(lqX-Label\(rq field
+.TP
+~z \fIMIN\fP-\fIMAX\fP
+messages with a size in the range \fIMIN\fP to \fIMAX\fP
+.TP
+~=3D
+duplicated messages (see $duplicate_threads)
+.TP
+~$
+unreferenced message (requries threaded view)
+.PD 1
+.DT
.PP
In the above, \fIEXPR\fP is a regular expression.
.PP
--+pHx0qQiF2pBVqBT--
--WplhKdTI2c8ulnbP
Content-Type: application/pgp-signature
Content-Disposition: inline
-----BEGIN PGP SIGNATURE-----
Comment: Thank you for using encryption!
iD8DBQFF5t6yBkIOoMqOI14RAukTAKC1x5V7jKZBoK/8Z/vi9QGvZqJnKgCcDtsa
EBvtUU4Xs9/hoPOi1YJx/6U=
=6/iA
-----END PGP SIGNATURE-----
--WplhKdTI2c8ulnbP--