]> granicus.if.org Git - mutt/commitdiff
Add sidebar_format flag '%n' to display 'N' on new mail.
authorKevin McCarthy <kevin@8t8.us>
Wed, 8 Jun 2016 20:16:45 +0000 (13:16 -0700)
committerKevin McCarthy <kevin@8t8.us>
Wed, 8 Jun 2016 20:16:45 +0000 (13:16 -0700)
init.h
sidebar.c

diff --git a/init.h b/init.h
index 66df8d20489ff11d810c4557c8e6546be221d46e..cf1c4cd8d04956147757e42f17be2427ba158b64 100644 (file)
--- a/init.h
+++ b/init.h
@@ -2710,6 +2710,7 @@ struct option_t MuttVars[] = {
   ** .dt %B  .dd Name of the mailbox
   ** .dt %S  .dd * Size of mailbox (total number of messages)
   ** .dt %N  .dd * Number of New messages in the mailbox
+  ** .dt %n  .dd N if mailbox has new mail, blank otherwise
   ** .dt %F  .dd * Number of Flagged messages in the mailbox
   ** .dt %!  .dd ``!'' : one flagged message;
   **             ``!!'' : two flagged messages;
index f0752c65416915666dd10c8535b13c187c916e7d..5f26bd05f9dc44ca6a861f5532ebe9a0af757f6c 100644 (file)
--- a/sidebar.c
+++ b/sidebar.c
@@ -125,9 +125,10 @@ static BUFFY *find_prev_new (int wrap)
  * @flags:       Format flags, e.g. MUTT_FORMAT_OPTIONAL
  *
  * cb_format_str is a callback function for mutt_FormatString.  It understands
- * five operators. '%B' : Mailbox name, '%F' : Number of flagged messages,
+ * six operators. '%B' : Mailbox name, '%F' : Number of flagged messages,
  * '%N' : Number of new messages, '%S' : Size (total number of messages),
  * '%!' : Icon denoting number of flagged messages.
+ * '%n' : N if folder has new mail, blank otherwise.
  *
  * Returns: src (unchanged)
  */
@@ -198,6 +199,16 @@ static const char *cb_format_str(char *dest, size_t destlen, size_t col, int col
         optional = 0;
       break;
 
+    case 'n':
+      if (!optional)
+      {
+        snprintf (fmt, sizeof (fmt), "%%%sc", prefix);
+        snprintf (dest, destlen, fmt, b->new ? 'N' : ' ');
+      }
+      else if (b->new == 0)
+        optional = 0;
+      break;
+
     case 'S':
       if (!optional)
       {
@@ -630,7 +641,7 @@ static void draw_sidebar (int num_rows, int num_cols, int div_width)
     else if ((ColorDefs[MT_COLOR_SB_SPOOLFILE] != 0) &&
                (mutt_strcmp (b->path, Spoolfile) == 0))
       SETCOLOR(MT_COLOR_SB_SPOOLFILE);
-    else if (b->msg_unread > 0)
+    else if ((b->msg_unread > 0) || (b->new))
       SETCOLOR(MT_COLOR_NEW);
     else if (b->msg_flagged > 0)
       SETCOLOR(MT_COLOR_FLAGGED);