From: Tim Stoakes Date: Sat, 15 Sep 2012 07:31:54 +0000 (+0200) Subject: Add 'label' pattern modifier '~Y' X-Git-Tag: neomutt-20160404~13^2~43 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0d9deab389979bb8c4725809ad55c6816e1313cb;p=neomutt Add 'label' pattern modifier '~Y' Add the new '~Y' pattern modifier. Use it in e.g. 'limit' and 'color' commands to match a regexp against notmuch message labels. --- diff --git a/README.notmuch b/README.notmuch index b585fc550..aa609e355 100644 --- a/README.notmuch +++ b/README.notmuch @@ -100,6 +100,16 @@ notmuch support for mutt - delete message from mutt (usualy after function), but don't touch message on disk + * Pattern modifiers: + + Many of Mutt's commands allow you to specify a pattern to match (limit, + tag-pattern, delete-pattern, color, etc.). The following notmuch specific + mutt pattern modifiers are available: + + - '~Y EXPR': Messages which contain EXPR in the list of labels. + Example: + # Color red all messages labeled as 'spam'. + color index red default "~Y '\W?spam\W?'" * muttrc: diff --git a/mutt.h b/mutt.h index cd74f0d89..8b48ff616 100644 --- a/mutt.h +++ b/mutt.h @@ -238,6 +238,9 @@ enum M_CRYPT_ENCRYPT, M_PGP_KEY, M_XLABEL, +#ifdef USE_NOTMUCH + M_NOTMUCH_LABEL, +#endif M_MIMEATTACH, /* Options for Mailcap lookup */ diff --git a/pattern.c b/pattern.c index d954cdc3b..434537dc5 100644 --- a/pattern.c +++ b/pattern.c @@ -42,6 +42,10 @@ #include "imap/imap.h" #endif +#ifdef USE_NOTMUCH +#include "mutt_notmuch.h" +#endif + static int eat_regexp (pattern_t *pat, BUFFER *, BUFFER *); static int eat_date (pattern_t *pat, BUFFER *, BUFFER *); static int eat_range (pattern_t *pat, BUFFER *, BUFFER *); @@ -95,6 +99,9 @@ Flags[] = { 'x', M_REFERENCE, 0, eat_regexp }, { 'X', M_MIMEATTACH, 0, eat_range }, { 'y', M_XLABEL, 0, eat_regexp }, +#ifdef USE_NOTMUCH + { 'Y', M_NOTMUCH_LABEL, 0, eat_regexp }, +#endif { 'z', M_SIZE, 0, eat_range }, { '=', M_DUPLICATED, 0, NULL }, { '$', M_UNREFERENCED, 0, NULL }, @@ -1210,6 +1217,13 @@ mutt_pattern_exec (struct pattern_t *pat, pattern_exec_flag flags, CONTEXT *ctx, return (pat->not ^ ((h->security & APPLICATION_PGP) && (h->security & PGPKEY))); case M_XLABEL: return (pat->not ^ (h->env->x_label && patmatch (pat, h->env->x_label) == 0)); +#ifdef USE_NOTMUCH + case M_NOTMUCH_LABEL: + { + char *tags = nm_header_get_tags(h); + return (pat->not ^ (tags && patmatch (pat, tags) == 0)); + } +#endif case M_HORMEL: return (pat->not ^ (h->env->spam && h->env->spam->data && patmatch (pat, h->env->spam->data) == 0)); case M_DUPLICATED: