** sequences:
** .dl
** .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 %F .dd Number of Flagged messages in the mailbox
- ** .dt %! .dd `!' : one flagged message; `!!' : two flagged messages; `n!' :
- ** n flagged messages (for n > 2).
+ ** .dt %S .dd * Size of mailbox (total number of messages)
+ ** .dt %N .dd * Number of New messages in the mailbox
+ ** .dt %F .dd * Number of Flagged messages in the mailbox
+ ** .dt %! .dd ``!'' : one flagged message;
+ ** ``!!'' : two flagged messages;
+ ** ``n!'' : n flagged messages (for n > 2).
+ ** Otherwise prints nothing.
+ ** .dt %d .dd * @ Number of deleted messages
+ ** .dt %L .dd * @ Number of messages after limiting
+ ** .dt %t .dd * @ Number of tagged messages
+ ** .dt %>X .dd right justify the rest of the string and pad with ``X''
+ ** .dt %|X .dd pad to the end of the line with ``X''
+ ** .dt %*X .dd soft-fill with character ``X'' as pad
** .de
+ ** .pp
+ ** * = Can be optionally printed if nonzero
+ ** @ = Only applicable to the current folder
*/
{ "sidebar_indentstr", DT_STR, R_BOTH, UL &SidebarIndentStr, UL " " },
/*
*/
struct sidebar_entry {
char box[SHORT_STRING];
- unsigned int size;
- unsigned int new;
- unsigned int flagged;
+ BUFFY *buffy;
};
dest[0] = 0; /* Just in case there's nothing to do */
+ BUFFY *b = sbe->buffy;
+ if (!b)
+ return src;
+
+#if 1
+ int c = Context && (mutt_strcmp (Context->path, b->path) == 0);
+#endif
+
optional = flags & M_FORMAT_OPTIONAL;
switch (op) {
mutt_format_s (dest, destlen, prefix, sbe->box);
break;
+ case 'd':
+ if (!optional) {
+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
+ snprintf (dest, destlen, fmt, c ? Context->deleted : 0);
+ } else if ((c && Context->deleted == 0) || !c) {
+ optional = 0;
+ }
+ break;
+
case 'F':
if (!optional) {
snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
- snprintf (dest, destlen, fmt, sbe->flagged);
- } else if (sbe->flagged == 0) {
+ snprintf (dest, destlen, fmt, b->msg_flagged);
+ } else if (b->msg_flagged == 0) {
+ optional = 0;
+ }
+ break;
+
+ case 'L':
+ if (!optional) {
+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
+ snprintf (dest, destlen, fmt, c ? Context->vcount : b->msg_count);
+ } else if ((c && Context->vcount == b->msg_count) || !c) {
optional = 0;
}
break;
case 'N':
if (!optional) {
snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
- snprintf (dest, destlen, fmt, sbe->new);
- } else if (sbe->new == 0) {
+ snprintf (dest, destlen, fmt, b->msg_unread);
+ } else if (b->msg_unread == 0) {
optional = 0;
}
break;
case 'S':
if (!optional) {
snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
- snprintf (dest, destlen, fmt, sbe->size);
- } else if (sbe->size == 0) {
+ snprintf (dest, destlen, fmt, b->msg_count);
+ } else if (b->msg_count == 0) {
+ optional = 0;
+ }
+ break;
+
+ case 't':
+ if (!optional) {
+ snprintf (fmt, sizeof (fmt), "%%%sd", prefix);
+ snprintf (dest, destlen, fmt, c ? Context->tagged : 0);
+ } else if ((c && Context->tagged == 0) || !c) {
optional = 0;
}
break;
case '!':
- if (sbe->flagged == 0) {
+ if (b->msg_flagged == 0) {
mutt_format_s (dest, destlen, prefix, "");
- } else if (sbe->flagged == 1) {
+ } else if (b->msg_flagged == 1) {
mutt_format_s (dest, destlen, prefix, "!");
- } else if (sbe->flagged == 2) {
+ } else if (b->msg_flagged == 2) {
mutt_format_s (dest, destlen, prefix, "!!");
} else {
- snprintf (buf, sizeof (buf), "%d!", sbe->flagged);
+ snprintf (buf, sizeof (buf), "%d!", b->msg_flagged);
mutt_format_s (dest, destlen, prefix, buf);
}
break;
*/
static void
make_sidebar_entry (char *buf, unsigned int buflen, int width, char *box,
- unsigned int size, unsigned int new, unsigned int flagged)
+ BUFFY *b)
{
struct sidebar_entry sbe;
- if (!buf || !box)
+ if (!buf || !box || !b)
return;
- sbe.new = new;
- sbe.flagged = flagged;
- sbe.size = size;
- strncpy (sbe.box, box, sizeof (sbe.box)-1);
+ sbe.buffy = b;
+ strncpy (sbe.box, box, sizeof (sbe.box) - 1);
int box_len = strlen (box);
sbe.box[box_len] = '\0';
}
char str[SHORT_STRING];
int w = MIN(COLS, (SidebarWidth - div_width));
- make_sidebar_entry (str, sizeof (str), w,
- sidebar_folder_name, b->msg_count,
- b->msg_unread, b->msg_flagged);
+ make_sidebar_entry (str, sizeof (str), w, sidebar_folder_name, b);
printw ("%s", str);
if (sidebar_folder_depth > 0)
free (sidebar_folder_name);