]> granicus.if.org Git - neomutt/commitdiff
Add 'label' pattern modifier '~Y'
authorTim Stoakes <tim@stoakes.net>
Sat, 15 Sep 2012 07:31:54 +0000 (09:31 +0200)
committerRichard Russon <rich@flatcap.org>
Mon, 4 Apr 2016 15:30:06 +0000 (16:30 +0100)
Add the new '~Y' pattern modifier. Use it in e.g. 'limit' and 'color' commands
to match a regexp against notmuch message labels.

README.notmuch
mutt.h
pattern.c

index b585fc550b2723ca347a0d994171ad0b1cfe33c9..aa609e3557358679f8e39ff2dc11b4c790118dc2 100644 (file)
@@ -100,6 +100,16 @@ notmuch support for mutt
       - delete message from mutt (usualy after <sync-mailbox> 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 cd74f0d895b52ef94d15212f4b9f583831c90ab8..8b48ff616a5a6e74442749578477aebcbf3ce238 100644 (file)
--- 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 */
index d954cdc3bbd7a23b41360ed7f74ae55d0bf73e87..434537dc56f474038c740c1c226f577ca810c050 100644 (file)
--- a/pattern.c
+++ b/pattern.c
 #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: