Debian Bug report logs - #277637
Please include the sidebar patch

version graph

Package: mutt; Maintainer for mutt is Antonio Radici <antonio@dyne.org>; Source for mutt is src:mutt.

Reported by: Jean-Michel Kelbert <kelbert@debian.org>

Date: Thu, 21 Oct 2004 12:18:03 UTC

Severity: wishlist

Tags: wontfix

Merged with 354320

Found in versions 1.5.6-20040907+1, mutt/1.5.11+cvs20060126-1

Fixed in version mutt/1.5.17-2

Done: Christoph Berg <myon@debian.org>

Bug is archived. No further changes may be made.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to debian-bugs-dist@lists.debian.org, Marco d'Itri <md@linux.it>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to Jean-Michel Kelbert <kelbert@debian.org>:
New Bug report received and forwarded. Copy sent to Marco d'Itri <md@linux.it>. Full text and rfc822 format available.

Message #5 received at submit@bugs.debian.org (full text, mbox):

From: Jean-Michel Kelbert <kelbert@debian.org>
To: Debian Bug Tracking System <submit@bugs.debian.org>
Subject: Please include the sidebar patch
Date: Thu, 21 Oct 2004 14:02:33 +0200
Package: mutt
Version: 1.5.6-20040907+1
Severity: wishlist

Hi,

Could you please the patch you'll be able to find here :
http://vorlon.cwru.edu/~jrh29/mutt/index.html
This patch gives mutt a nice sidebar listing of mailboxes, like in the
GUI's.

Here is a screenshot of the result :
http://vorlon.cwru.edu/~jrh29/mutt/mutt_shot_patch8.png

-- System Information:
Debian Release: 3.1
  APT prefers unstable
  APT policy: (500, 'unstable'), (1, 'experimental')
Architecture: i386 (i686)
Kernel: Linux 2.6.7-1-k7
Locale: LANG=fr_FR.UTF-8@euro, LC_CTYPE=fr_FR.UTF-8@euro (ignored: LC_ALL set to fr_FR.UTF-8@euro)

Versions of packages mutt depends on:
ii  libc6                       2.3.2.ds1-18 GNU C Library: Shared libraries an
ii  libdb4.2                    4.2.52-17    Berkeley v4.2 Database Libraries [
ii  libgnutls11                 1.0.16-9     GNU TLS library - runtime library
ii  libidn11                    0.5.2-3      GNU libidn library, implementation
ii  libncursesw5                5.4-4        Shared libraries for terminal hand
ii  libsasl2                    2.1.19-1.5   Authentication abstraction library
ii  postfix [mail-transport-age 2.1.4-5      A high-performance mail transport 

-- no debconf information



Information forwarded to debian-bugs-dist@lists.debian.org, Marco d'Itri <md@linux.it>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to md@Linux.IT (Marco d'Itri):
Extra info received and forwarded to list. Copy sent to Marco d'Itri <md@linux.it>. Full text and rfc822 format available.

Message #10 received at 277637@bugs.debian.org (full text, mbox):

From: md@Linux.IT (Marco d'Itri)
To: Jean-Michel Kelbert <kelbert@debian.org>, 277637@bugs.debian.org
Cc: control@bugs.debian.org
Subject: Re: Bug#277637: Please include the sidebar patch
Date: Thu, 21 Oct 2004 14:31:32 +0200
tag 277637 wontfix
thanks

On Oct 21, Jean-Michel Kelbert <kelbert@debian.org> wrote:

> Could you please the patch you'll be able to find here :
No, because it's way too big and invasive and the debian package is
already overpatched.

-- 
ciao, |
Marco | [8679 abEMSfo1uh6dU]



Tags added: wontfix Request was from md@Linux.IT (Marco d'Itri) to control@bugs.debian.org. Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org, Marco d'Itri <md@linux.it>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to Ryszard Lach <rla@debian.org>:
Extra info received and forwarded to list. Copy sent to Marco d'Itri <md@linux.it>. Full text and rfc822 format available.

Message #17 received at 277637@bugs.debian.org (full text, mbox):

From: Ryszard Lach <rla@debian.org>
To: 277637@bugs.debian.org
Subject: Re: Bug#277637: Please include the sidebar patch
Date: Tue, 8 Mar 2005 08:47:22 +0100
Oh, it's a pity. Efficient browsing of folders is the only feature that
I miss in Mutt, this patch greatly improves managing of e-mail accounts
with huge amounts of mails (organized in many folders) making mutt more
and more suitable for such accounts. It seems also that upstream of this
patch is quite active, besides this sidebar can be switched off for
those, who don't like it, so... maybe you consider once more adding this
patch?

R.




Forcibly Merged 277637 354320. Request was from Christoph Berg <myon@debian.org> to control@bugs.debian.org. Full text and rfc822 format available.

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to dann frazier <dannf@debian.org>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #24 received at 277637@bugs.debian.org (full text, mbox):

From: dann frazier <dannf@debian.org>
To: cb@df7cb.de
Cc: 277637@bugs.debian.org, mutt-dev@mutt.org
Subject: sidebar patch for mutt in experimental
Date: Tue, 5 Jun 2007 10:24:07 -0600
[Message part 1 (text/plain, inline)]
hey Christoph,
 I noticed here that you were looking for an updated version of the
sidebar patch:
  http://marc.info/?l=mutt-dev&m=117475859101336&w=2

Since mutt-ng is dead, I decided to switch back to mutt and have
ported the 1.5.15 sidebar patch from Terry P. Chan to the version of
mutt in experimental.

Though its been working for me for the past, oh, 12 hours - I make no
claim that its perfect :)

diff -urpN mutt-1.5.15+20070515.orig/Makefile.am mutt-1.5.15+20070515/Makefile.am
--- mutt-1.5.15+20070515.orig/Makefile.am	2007-06-04 23:45:16.000000000 -0600
+++ mutt-1.5.15+20070515/Makefile.am	2007-06-04 23:54:09.000000000 -0600
@@ -29,7 +29,8 @@ mutt_SOURCES = $(BUILT_SOURCES) \
 	score.c send.c sendlib.c signal.c sort.c \
 	status.c system.c thread.c charset.c history.c lib.c \
 	muttlib.c editmsg.c mbyte.c \
-	url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h
+	url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h \
+        sidebar.c
 
 mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \
 	$(INTLLIBS) $(LIBICONV)  $(GPGME_LIBS)
diff -urpN mutt-1.5.15+20070515.orig/Makefile.in mutt-1.5.15+20070515/Makefile.in
--- mutt-1.5.15+20070515.orig/Makefile.in	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/Makefile.in	2007-06-04 23:54:09.000000000 -0600
@@ -91,7 +91,8 @@ am_mutt_OBJECTS = $(am__objects_1) addrb
 	thread.$(OBJEXT) charset.$(OBJEXT) history.$(OBJEXT) \
 	lib.$(OBJEXT) muttlib.$(OBJEXT) editmsg.$(OBJEXT) \
 	mbyte.$(OBJEXT) url.$(OBJEXT) ascii.$(OBJEXT) \
-	mutt_idna.$(OBJEXT) crypt-mod.$(OBJEXT)
+	mutt_idna.$(OBJEXT) crypt-mod.$(OBJEXT) \
+        sidebar.$(OBJEXT)
 mutt_OBJECTS = $(am_mutt_OBJECTS)
 am__DEPENDENCIES_1 =
 am_mutt_dotlock_OBJECTS = mutt_dotlock.$(OBJEXT)
@@ -312,7 +313,8 @@ mutt_SOURCES = $(BUILT_SOURCES) \
 	score.c send.c sendlib.c signal.c sort.c \
 	status.c system.c thread.c charset.c history.c lib.c \
 	muttlib.c editmsg.c mbyte.c \
-	url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h
+	url.c ascii.c mutt_idna.c crypt-mod.c crypt-mod.h \
+        sidebar.c
 
 mutt_LDADD = @MUTT_LIB_OBJECTS@ @LIBOBJS@ $(LIBIMAP) $(MUTTLIBS) \
 	$(INTLLIBS) $(LIBICONV)  $(GPGME_LIBS)
@@ -346,7 +348,7 @@ EXTRA_DIST = COPYRIGHT GPL OPS OPS.PGP O
 	makedoc.c makedoc-defs.h stamp-doc-rc README.SSL smime.h \
 	muttbug pgppacket.h depcomp ascii.h BEWARE PATCHES patchlist.sh \
 	ChangeLog ChangeLog.old mkchangelog.sh cvslog2changelog.pl mutt_idna.h \
-	snprintf.c regex.c crypt-gpgme.h hcachever.sh
+	snprintf.c regex.c crypt-gpgme.h sidebar.h hcachever.sh
 
 EXTRA_SCRIPTS = smime_keys
 mutt_dotlock_SOURCES = mutt_dotlock.c
diff -urpN mutt-1.5.15+20070515.orig/Muttrc mutt-1.5.15+20070515/Muttrc
--- mutt-1.5.15+20070515.orig/Muttrc	2007-05-17 06:47:29.000000000 -0600
+++ mutt-1.5.15+20070515/Muttrc	2007-06-04 23:54:09.000000000 -0600
@@ -2037,6 +2037,26 @@ attachments   -I message/external-body
 # function.
 # 
 # 
+# set sidebar_visible=no
+#
+# Name: sidebar_visible
+# Type: boolean
+# Default: no
+# 
+# 
+# This specifies whether or not to show sidebar (left-side list of folders).
+# 
+# 
+# set sidebar_width=0
+#
+# Name: sidebar_width
+# Type: number
+# Default: 0
+# 
+# 
+# The width of the sidebar.
+# 
+# 
 # set crypt_autosign=no
 #
 # Name: crypt_autosign
diff -urpN mutt-1.5.15+20070515.orig/OPS mutt-1.5.15+20070515/OPS
--- mutt-1.5.15+20070515.orig/OPS	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/OPS	2007-06-04 23:54:09.000000000 -0600
@@ -179,3 +179,8 @@ OP_WHAT_KEY "display the keycode for a k
 OP_MAIN_SHOW_LIMIT "show currently active limit pattern"
 OP_MAIN_COLLAPSE_THREAD "collapse/uncollapse current thread"
 OP_MAIN_COLLAPSE_ALL "collapse/uncollapse all threads"
+OP_SIDEBAR_SCROLL_UP "scroll the mailbox pane up 1 page"
+OP_SIDEBAR_SCROLL_DOWN "scroll the mailbox pane down 1 page"
+OP_SIDEBAR_NEXT "go down to next mailbox"
+OP_SIDEBAR_PREV "go to previous mailbox"
+OP_SIDEBAR_OPEN "open hilighted mailbox"
diff -urpN mutt-1.5.15+20070515.orig/buffy.c mutt-1.5.15+20070515/buffy.c
--- mutt-1.5.15+20070515.orig/buffy.c	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/buffy.c	2007-06-05 00:00:32.000000000 -0600
@@ -261,7 +261,7 @@ int mutt_buffy_check (int force)
   char path[_POSIX_PATH_MAX];
   struct stat contex_sb;
   time_t t;
-
+  CONTEXT *ctx;
 #ifdef USE_IMAP
   /* update postponed count as well, on force */
   if (force)
@@ -296,6 +296,8 @@ int mutt_buffy_check (int force)
   
   for (tmp = Incoming; tmp; tmp = tmp->next)
   {
+    if ( tmp->new == 1 )
+      tmp->has_new = 1;
 #ifdef USE_IMAP
     if (tmp->magic != M_IMAP)
 #endif
@@ -353,41 +355,85 @@ int mutt_buffy_check (int force)
       case M_MBOX:
       case M_MMDF:
 
-	if (STAT_CHECK)
+        {
+        if (STAT_CHECK || tmp->msgcount == 0)
 	{
-	  BuffyCount++;
-	  tmp->new = 1;
+	  BUFFY b = *tmp;
+ 	  int msgcount = 0;
+ 	  int msg_unread = 0;
+ 	  /* parse the mailbox, to see how much mail there is */
+ 	  ctx = mx_open_mailbox( tmp->path, M_READONLY | M_QUIET | M_NOSORT | M_PEEK, NULL);
+ 	  if(ctx)
+ 	  {
+            msgcount = ctx->msgcount;
+ 	    msg_unread = ctx->unread;
+ 	    mx_close_mailbox(ctx, 0);
+ 	  }
+ 	  *tmp = b;
+ 	  tmp->msgcount = msgcount;
+ 	  tmp->msg_unread = msg_unread;
+ 	  if(STAT_CHECK) {
+ 	    tmp->has_new = tmp->new = 1;
+	    BuffyCount++;
+          }  
 	}
 	else if (option(OPTCHECKMBOXSIZE))
 	{
 	  /* some other program has deleted mail from the folder */
 	  tmp->size = (long) sb.st_size;
 	}
-	if (tmp->newly_created &&
-	    (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime))
-	  tmp->newly_created = 0;
-
-	break;
+        if (tmp->newly_created &&
+            (sb.st_ctime != sb.st_mtime || sb.st_ctime != sb.st_atime))
+          tmp->newly_created = 0;
+        }
+        break;
 
       case M_MAILDIR:
 
+        /* count new message */
 	snprintf (path, sizeof (path), "%s/new", tmp->path);
 	if ((dirp = opendir (path)) == NULL)
 	{
 	  tmp->magic = 0;
 	  break;
 	}
+ 	tmp->msgcount = 0;
+ 	tmp->msg_unread = 0;
 	while ((de = readdir (dirp)) != NULL)
 	{
 	  char *p;
 	  if (*de->d_name != '.' && 
 	      (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T')))
 	  {
+ 	    tmp->has_new = tmp->new = 1;
+            tmp->msgcount++;
+            tmp->msg_unread++;
+ 	  }
+ 	}
+        if(tmp->msg_unread)
+          BuffyCount++;
+ 
+ 	closedir (dirp);
+ 
+        /*
+         * count read messages (for folderlist (sidebar) we also need to count
+         * messages in cur so that we the total number of messages
+         */
+ 	snprintf (path, sizeof (path), "%s/cur", tmp->path);
+ 	if ((dirp = opendir (path)) == NULL)
+  	{
+  	  tmp->magic = 0;
+  	  break;
+  	}
+  	while ((de = readdir (dirp)) != NULL)
+  	{
+  	  char *p;
+  	  if (*de->d_name != '.' && 
+ 	      (!(p = strstr (de->d_name, ":2,")) || !strchr (p + 3, 'T')))
+  	  {
+             tmp->msgcount++;
 	    if (!tmp->new)
 	    {
-	      /* one new and undeleted message is enough */
-	      BuffyCount++;
-	      tmp->new = 1;
 
 	      if (! option (OPTMAILDIRMTIME)) /* prevent stat calls */
 		break;
@@ -403,8 +449,25 @@ int mutt_buffy_check (int force)
 	break;
 
       case M_MH:
-	if ((tmp->new = mh_buffy (tmp->path)) > 0)
-	  BuffyCount++;
+      {
+      DIR *dp;
+      struct dirent *de;
+      if ((tmp->new = mh_buffy (tmp->path)) > 0)
+        BuffyCount++;
+    
+      if ((dp = opendir (path)) == NULL)
+        break;
+      tmp->msgcount = 0;
+      while ((de = readdir (dp)))
+      {
+        if (mh_valid_message (de->d_name))
+        {
+	  tmp->msgcount++;
+ 	  tmp->has_new = tmp->new = 1;
+        }
+      }
+      closedir (dp);
+      }
 	break;
       }
     }
diff -urpN mutt-1.5.15+20070515.orig/buffy.h mutt-1.5.15+20070515/buffy.h
--- mutt-1.5.15+20070515.orig/buffy.h	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/buffy.h	2007-06-05 00:01:09.000000000 -0600
@@ -25,8 +25,12 @@ typedef struct buffy_t
   char *path;
   long size;
   struct buffy_t *next;
+  struct buffy_t *prev;
   time_t mtime;			/* for maildirs...time of newest entry */
   short new;			/* mailbox has new mail */
+  short has_new;		/* set it new if new and not read */
+  int msgcount;			/* total number of messages */
+  int msg_unread;		/* number of unread messages */
   short notified;		/* user has been notified */
   short magic;			/* mailbox type */
   short newly_created;		/* mbox or mmdf just popped into existence */
diff -urpN mutt-1.5.15+20070515.orig/color.c mutt-1.5.15+20070515/color.c
--- mutt-1.5.15+20070515.orig/color.c	2007-03-24 11:45:30.000000000 -0600
+++ mutt-1.5.15+20070515/color.c	2007-06-04 23:54:09.000000000 -0600
@@ -93,6 +93,7 @@ static struct mapping_t Fields[] =
   { "bold",		MT_COLOR_BOLD },
   { "underline",	MT_COLOR_UNDERLINE },
   { "index",		MT_COLOR_INDEX },
+  { "sidebar_new",	MT_COLOR_NEW },
   { NULL,		0 }
 };
 
diff -urpN mutt-1.5.15+20070515.orig/compose.c mutt-1.5.15+20070515/compose.c
--- mutt-1.5.15+20070515.orig/compose.c	2007-05-16 15:08:46.000000000 -0600
+++ mutt-1.5.15+20070515/compose.c	2007-06-04 23:54:09.000000000 -0600
@@ -72,7 +72,7 @@ enum
 
 #define HDR_XOFFSET 10
 #define TITLE_FMT "%10s" /* Used for Prompts, which are ASCII */
-#define W (COLS - HDR_XOFFSET)
+#define W (COLS - HDR_XOFFSET - SidebarWidth)
 
 static char *Prompts[] =
 {
@@ -115,16 +115,16 @@ static void redraw_crypt_lines (HEADER *
   if ((WithCrypto & APPLICATION_PGP) && (WithCrypto & APPLICATION_SMIME))
   {     
     if (!msg->security)
-      mvaddstr (HDR_CRYPT, 0,     "Security: ");
+      mvaddstr (HDR_CRYPT, SidebarWidth,     "Security: ");
     else if (msg->security & APPLICATION_SMIME)
-      mvaddstr (HDR_CRYPT, 0,     "  S/MIME: ");
+      mvaddstr (HDR_CRYPT, SidebarWidth,     "  S/MIME: ");
     else if (msg->security & APPLICATION_PGP)
-      mvaddstr (HDR_CRYPT, 0,     "     PGP: ");
+      mvaddstr (HDR_CRYPT, SidebarWidth,     "     PGP: ");
   }
   else if ((WithCrypto & APPLICATION_SMIME))
-    mvaddstr (HDR_CRYPT, 0,     "  S/MIME: ");
+    mvaddstr (HDR_CRYPT, SidebarWidth,     "  S/MIME: ");
   else if ((WithCrypto & APPLICATION_PGP))
-    mvaddstr (HDR_CRYPT, 0,     "     PGP: ");
+    mvaddstr (HDR_CRYPT, SidebarWidth,     "     PGP: ");
   else
     return;
 
@@ -148,7 +148,7 @@ static void redraw_crypt_lines (HEADER *
     }
   clrtoeol ();
 
-  move (HDR_CRYPTINFO, 0);
+  move (HDR_CRYPTINFO, SidebarWidth);
   clrtoeol ();
   if ((WithCrypto & APPLICATION_PGP)
       && msg->security & APPLICATION_PGP  && msg->security & SIGN)
@@ -164,7 +164,7 @@ static void redraw_crypt_lines (HEADER *
       && (msg->security & ENCRYPT)
       && SmimeCryptAlg
       && *SmimeCryptAlg) {
-      mvprintw (HDR_CRYPTINFO, 40, "%s%s", _("Encrypt with: "),
+      mvprintw (HDR_CRYPTINFO, SidebarWidth + 40, "%s%s", _("Encrypt with: "),
 		NONULL(SmimeCryptAlg));
       off = 20;
   }
@@ -178,7 +178,7 @@ static void redraw_mix_line (LIST *chain
   int c;
   char *t;
 
-  mvaddstr (HDR_MIX, 0,     "     Mix: ");
+  mvaddstr (HDR_MIX, SidebarWidth,     "     Mix: ");
 
   if (!chain)
   {
@@ -193,7 +193,7 @@ static void redraw_mix_line (LIST *chain
     if (t && t[0] == '0' && t[1] == '\0')
       t = "<random>";
     
-    if (c + mutt_strlen (t) + 2 >= COLS)
+    if (c + mutt_strlen (t) + 2 >= COLS - SidebarWidth)
       break;
 
     addstr (NONULL(t));
@@ -245,7 +245,7 @@ static void draw_envelope_addr (int line
 
   buf[0] = 0;
   rfc822_write_address (buf, sizeof (buf), addr, 1);
-  mvprintw (line, 0, TITLE_FMT, Prompts[line - 1]);
+  mvprintw (line, SidebarWidth, TITLE_FMT, Prompts[line - 1]);
   mutt_paddstr (W, buf);
 }
 
@@ -255,10 +255,10 @@ static void draw_envelope (HEADER *msg, 
   draw_envelope_addr (HDR_TO, msg->env->to);
   draw_envelope_addr (HDR_CC, msg->env->cc);
   draw_envelope_addr (HDR_BCC, msg->env->bcc);
-  mvprintw (HDR_SUBJECT, 0, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
+  mvprintw (HDR_SUBJECT, SidebarWidth, TITLE_FMT, Prompts[HDR_SUBJECT - 1]);
   mutt_paddstr (W, NONULL (msg->env->subject));
   draw_envelope_addr (HDR_REPLYTO, msg->env->reply_to);
-  mvprintw (HDR_FCC, 0, TITLE_FMT, Prompts[HDR_FCC - 1]);
+  mvprintw (HDR_FCC, SidebarWidth, TITLE_FMT, Prompts[HDR_FCC - 1]);
   mutt_paddstr (W, fcc);
 
   if (WithCrypto)
@@ -269,7 +269,7 @@ static void draw_envelope (HEADER *msg, 
 #endif
 
   SETCOLOR (MT_COLOR_STATUS);
-  mvaddstr (HDR_ATTACH - 1, 0, _("-- Attachments"));
+  mvaddstr (HDR_ATTACH - 1, SidebarWidth, _("-- Attachments"));
   BKGDSET (MT_COLOR_STATUS);
   clrtoeol ();
 
@@ -307,7 +307,7 @@ static int edit_address_list (int line, 
   /* redraw the expanded list so the user can see the result */
   buf[0] = 0;
   rfc822_write_address (buf, sizeof (buf), *addr, 1);
-  move (line, HDR_XOFFSET);
+  move (line, HDR_XOFFSET+SidebarWidth);
   mutt_paddstr (W, buf);
   
   return 0;
@@ -553,7 +553,7 @@ int mutt_compose_menu (HEADER *msg,   /*
 	if (mutt_get_field ("Subject: ", buf, sizeof (buf), 0) == 0)
 	{
 	  mutt_str_replace (&msg->env->subject, buf);
-	  move (HDR_SUBJECT, HDR_XOFFSET);
+	  move (HDR_SUBJECT, HDR_XOFFSET + SidebarWidth);
 	  clrtoeol ();
 	  if (msg->env->subject)
 	    mutt_paddstr (W, msg->env->subject);
@@ -570,7 +570,7 @@ int mutt_compose_menu (HEADER *msg,   /*
 	{
 	  strfcpy (fcc, buf, _POSIX_PATH_MAX);
 	  mutt_pretty_mailbox (fcc);
-	  move (HDR_FCC, HDR_XOFFSET);
+	  move (HDR_FCC, HDR_XOFFSET + SidebarWidth);
 	  mutt_paddstr (W, fcc);
 	  fccSet = 1;
 	}
diff -urpN mutt-1.5.15+20070515.orig/contrib/gpg.rc mutt-1.5.15+20070515/contrib/gpg.rc
--- mutt-1.5.15+20070515.orig/contrib/gpg.rc	2007-06-04 23:45:18.000000000 -0600
+++ mutt-1.5.15+20070515/contrib/gpg.rc	2007-06-05 00:10:44.000000000 -0600
@@ -49,11 +49,11 @@ set pgp_clearsign_command="gpg --no-verb
 
 # create a pgp/mime encrypted attachment
 # set pgp_encrypt_only_command="pgpewrap gpg-2comp -v --batch --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
-set pgp_encrypt_only_command="/usr/lib/mutt/pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
+set pgp_encrypt_only_command="pgpewrap gpg --batch --quiet --no-verbose --output - --encrypt --textmode --armor --always-trust -- -r %r -- %f"
 
 # create a pgp/mime encrypted and signed attachment
 # set pgp_encrypt_sign_command="pgpewrap gpg-2comp %?p?--passphrase-fd 0? -v --batch --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
-set pgp_encrypt_sign_command="/usr/lib/mutt/pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
+set pgp_encrypt_sign_command="pgpewrap gpg %?p?--passphrase-fd 0? --batch --quiet --no-verbose --textmode --output - --encrypt --sign %?a?-u %a? --armor --always-trust -- -r %r -- %f"
 
 # import a key into the public key ring
 set pgp_import_command="gpg --no-verbose --import %f"
@@ -72,8 +72,6 @@ set pgp_list_secring_command="gpg --no-v
 
 # fetch keys
 # set pgp_getkeys_command="pkspxycwrap %r"
-# This will work when #172960 will be fixed upstream
-# set pgp_getkeys_command="gpg --recv-keys %r"
 
 # pattern for good signature - may need to be adapted to locale!
 
diff -urpN mutt-1.5.15+20070515.orig/curs_main.c mutt-1.5.15+20070515/curs_main.c
--- mutt-1.5.15+20070515.orig/curs_main.c	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/curs_main.c	2007-06-05 00:08:00.000000000 -0600
@@ -29,6 +29,7 @@
 #include "sort.h"
 #include "buffy.h"
 #include "mx.h"
+#include "sidebar.h"
 
 #ifdef USE_POP
 #include "pop.h"
@@ -544,8 +545,13 @@ int mutt_index_menu (void)
        menu->redraw |= REDRAW_STATUS;
      if (do_buffy_notify)
      {
-       if (mutt_buffy_notify () && option (OPTBEEPNEW))
- 	beep ();
+       if (mutt_buffy_notify ())
+       {
+         menu->redraw |= REDRAW_FULL;
+         if (option (OPTBEEPNEW))
+           beep ();
+       }
+
      }
      else
        do_buffy_notify = 1;
@@ -557,6 +563,7 @@ int mutt_index_menu (void)
     if (menu->redraw & REDRAW_FULL)
     {
       menu_redraw_full (menu);
+      draw_sidebar(menu->menu);
       mutt_show_error ();
     }
 
@@ -579,10 +586,13 @@ int mutt_index_menu (void)
 
       if (menu->redraw & REDRAW_STATUS) 
       {
+   	DrawFullLine = 1;
 	menu_status_line (buf, sizeof (buf), menu, NONULL (Status));
+   	DrawFullLine = 0;
 	CLEARLINE (option (OPTSTATUSONTOP) ? 0 : LINES-2);
 	SETCOLOR (MT_COLOR_STATUS);
         BKGDSET (MT_COLOR_STATUS);
+        set_buffystats(Context);
 	mutt_paddstr (COLS, buf);
 	SETCOLOR (MT_COLOR_NORMAL);
         BKGDSET (MT_COLOR_NORMAL);
@@ -603,7 +613,7 @@ int mutt_index_menu (void)
 	menu->oldcurrent = -1;
 
       if (option (OPTARROWCURSOR))
-	move (menu->current - menu->top + menu->offset, 2);
+ 	move (menu->current - menu->top + menu->offset, SidebarWidth + 2);
       else if (option (OPTBRAILLEFRIENDLY))
 	move (menu->current - menu->top + menu->offset, 0);
       else
@@ -1071,6 +1081,7 @@ int mutt_index_menu (void)
 	  menu->redraw = REDRAW_FULL;
 	break;
 
+      case OP_SIDEBAR_OPEN:
       case OP_MAIN_CHANGE_FOLDER:
       case OP_MAIN_NEXT_UNREAD_MAILBOX:
       
@@ -1102,7 +1113,11 @@ int mutt_index_menu (void)
 	{
 	  mutt_buffy (buf, sizeof (buf));
 
-	  if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1)
+ 	if ( op == OP_SIDEBAR_OPEN ) {
+          if(!CurBuffy)
+            break;
+ 	  strncpy( buf, CurBuffy->path, sizeof(buf) );
+        } else if (mutt_enter_fname (cp, buf, sizeof (buf), &menu->redraw, 1) == -1)
 	  {
 	    if (menu->menu == MENU_PAGER)
 	    {
@@ -1120,6 +1135,7 @@ int mutt_index_menu (void)
 	}
 
 	mutt_expand_path (buf, sizeof (buf));
+        set_curbuffy(buf);
 	if (mx_get_magic (buf) <= 0)
 	{
 	  mutt_error (_("%s is not a mailbox."), buf);
@@ -2212,6 +2228,12 @@ int mutt_index_menu (void)
 	mutt_what_key();
 	break;
 
+      case OP_SIDEBAR_SCROLL_UP:
+      case OP_SIDEBAR_SCROLL_DOWN:
+      case OP_SIDEBAR_NEXT:
+      case OP_SIDEBAR_PREV:
+        scroll_sidebar(op, menu->menu);
+	break;
       default:
 	if (menu->menu == MENU_MAIN)
 	  km_error_key (MENU_MAIN);
diff -urpN mutt-1.5.15+20070515.orig/flags.c mutt-1.5.15+20070515/flags.c
--- mutt-1.5.15+20070515.orig/flags.c	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/flags.c	2007-06-04 23:54:09.000000000 -0600
@@ -22,8 +22,10 @@
 
 #include "mutt.h"
 #include "mutt_curses.h"
+#include "mutt_menu.h"
 #include "sort.h"
 #include "mx.h"
+#include "sidebar.h"
 
 #ifdef USE_IMAP
 #include "imap_private.h"
@@ -294,6 +296,7 @@ void _mutt_set_flag (CONTEXT *ctx, HEADE
    */
   if (h->searched && (changed != h->changed || deleted != ctx->deleted || tagged != ctx->tagged || flagged != ctx->flagged))
     h->searched = 0;
+	draw_sidebar(0);
 }
 
 void mutt_tag_set_flag (int flag, int bf)
diff -urpN mutt-1.5.15+20070515.orig/functions.h mutt-1.5.15+20070515/functions.h
--- mutt-1.5.15+20070515.orig/functions.h	2007-06-04 23:45:18.000000000 -0600
+++ mutt-1.5.15+20070515/functions.h	2007-06-04 23:54:09.000000000 -0600
@@ -169,6 +169,11 @@ struct binding_t OpMain[] = { /* map: in
   { "decrypt-save",		OP_DECRYPT_SAVE,		NULL },
 
 
+  { "sidebar-scroll-up",	OP_SIDEBAR_SCROLL_UP, NULL },
+  { "sidebar-scroll-down",	OP_SIDEBAR_SCROLL_DOWN, NULL },
+  { "sidebar-next",	OP_SIDEBAR_NEXT, NULL },
+  { "sidebar-prev",	OP_SIDEBAR_PREV, NULL },
+  { "sidebar-open", OP_SIDEBAR_OPEN, NULL },
   { NULL,			0,				NULL }
 };
 
@@ -267,6 +272,11 @@ struct binding_t OpPager[] = { /* map: p
   { "decrypt-save",    	OP_DECRYPT_SAVE,		NULL },
 
 
+  { "sidebar-scroll-up",	OP_SIDEBAR_SCROLL_UP, NULL },
+  { "sidebar-scroll-down",	OP_SIDEBAR_SCROLL_DOWN, NULL },
+  { "sidebar-next",	OP_SIDEBAR_NEXT, NULL },
+  { "sidebar-prev",	OP_SIDEBAR_PREV, NULL },
+  { "sidebar-open", OP_SIDEBAR_OPEN, NULL },
   { NULL,		0,				NULL }
 };
 
diff -urpN mutt-1.5.15+20070515.orig/globals.h mutt-1.5.15+20070515/globals.h
--- mutt-1.5.15+20070515.orig/globals.h	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/globals.h	2007-06-04 23:54:09.000000000 -0600
@@ -115,6 +115,7 @@ WHERE char *Realname;
 WHERE char *SendCharset;
 WHERE char *Sendmail;
 WHERE char *Shell;
+WHERE char *SidebarDelim;
 WHERE char *Signature;
 WHERE char *SimpleSearch;
 #if USE_SMTP
@@ -210,6 +211,9 @@ WHERE short ScoreThresholdDelete;
 WHERE short ScoreThresholdRead;
 WHERE short ScoreThresholdFlag;
 
+WHERE struct buffy_t *CurBuffy INITVAL(0);
+WHERE short DrawFullLine INITVAL(0);
+WHERE short SidebarWidth;
 #ifdef USE_IMAP
 WHERE short ImapKeepalive;
 #endif
diff -urpN mutt-1.5.15+20070515.orig/imap/command.c mutt-1.5.15+20070515/imap/command.c
--- mutt-1.5.15+20070515.orig/imap/command.c	2007-04-12 10:15:14.000000000 -0600
+++ mutt-1.5.15+20070515/imap/command.c	2007-06-04 23:54:09.000000000 -0600
@@ -911,6 +911,13 @@ static void cmd_parse_status (IMAP_DATA*
 	     opened */
 	  status->uidnext = oldun;
 
+        /* Added to make the sidebar show the correct numbers */
+        if (status->messages)
+        {
+          inc->msgcount = status->messages;
+          inc->msg_unread = status->unseen;
+        }
+
         FREE (&value);
         return;
       }
diff -urpN mutt-1.5.15+20070515.orig/imap/imap.c mutt-1.5.15+20070515/imap/imap.c
--- mutt-1.5.15+20070515.orig/imap/imap.c	2007-04-12 10:15:14.000000000 -0600
+++ mutt-1.5.15+20070515/imap/imap.c	2007-06-04 23:54:09.000000000 -0600
@@ -1483,7 +1483,7 @@ int imap_buffy_check (int force)
     
     imap_munge_mbox_name (munged, sizeof (munged), name);
     snprintf (command, sizeof (command),
-	      "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT)", munged);
+	      "STATUS %s (UIDNEXT UIDVALIDITY UNSEEN RECENT MESSAGES)", munged);
 
     if (imap_cmd_queue (idata, command) < 0)
     {
diff -urpN mutt-1.5.15+20070515.orig/init.h mutt-1.5.15+20070515/init.h
--- mutt-1.5.15+20070515.orig/init.h	2007-06-04 23:45:18.000000000 -0600
+++ mutt-1.5.15+20070515/init.h	2007-06-04 23:54:09.000000000 -0600
@@ -1504,6 +1504,22 @@ struct option_t MuttVars[] = {
   ** If ``no'', never attempt to verify cryptographic signatures.
   ** (Crypto only)
   */
+  {"sidebar_delim", DT_STR, R_BOTH, UL &SidebarDelim, "|"},
+  /*
+  ** .pp
+  ** This specifies the delimiter between the sidebar (if visible) and 
+  ** other screens.
+  */
+  { "sidebar_visible", DT_BOOL, R_BOTH, OPTSIDEBAR, 0 },
+  /*
+  ** .pp
+  ** This specifies whether or not to show sidebar (left-side list of folders).
+  */
+  { "sidebar_width", DT_NUM, R_BOTH, UL &SidebarWidth, 0 },
+  /*
+  ** .pp
+  ** The width of the sidebar.
+  */
   { "smime_is_default", DT_BOOL,  R_NONE, OPTSMIMEISDEFAULT, 0},
   /*
   ** .pp
diff -urpN mutt-1.5.15+20070515.orig/mailbox.h mutt-1.5.15+20070515/mailbox.h
--- mutt-1.5.15+20070515.orig/mailbox.h	2007-03-24 11:45:27.000000000 -0600
+++ mutt-1.5.15+20070515/mailbox.h	2007-06-04 23:54:09.000000000 -0600
@@ -27,6 +27,7 @@
 #define M_NEWFOLDER	(1<<4) /* create a new folder - same as M_APPEND, but uses
 				* safe_fopen() for mbox-style folders.
 				*/
+#define M_PEEK		(1<<5) /* revert atime back after taking a look (if applicable) */
 
 /* mx_open_new_message() */
 #define M_ADD_FROM	1	/* add a From_ line */
diff -urpN mutt-1.5.15+20070515.orig/mbox.c mutt-1.5.15+20070515/mbox.c
--- mutt-1.5.15+20070515.orig/mbox.c	2007-06-04 23:45:16.000000000 -0600
+++ mutt-1.5.15+20070515/mbox.c	2007-06-04 23:54:09.000000000 -0600
@@ -104,6 +104,7 @@ int mmdf_parse_mailbox (CONTEXT *ctx)
     mutt_perror (ctx->path);
     return (-1);
   }
+  ctx->atime = sb.st_atime;
   ctx->mtime = sb.st_mtime;
   ctx->size = sb.st_size;
 
@@ -255,6 +256,7 @@ int mbox_parse_mailbox (CONTEXT *ctx)
 
   ctx->size = sb.st_size;
   ctx->mtime = sb.st_mtime;
+  ctx->atime = sb.st_atime;
 
 #ifdef NFS_ATTRIBUTE_HACK
   if (sb.st_mtime > sb.st_atime)
diff -urpN mutt-1.5.15+20070515.orig/menu.c mutt-1.5.15+20070515/menu.c
--- mutt-1.5.15+20070515.orig/menu.c	2007-03-24 11:45:30.000000000 -0600
+++ mutt-1.5.15+20070515/menu.c	2007-06-04 23:54:09.000000000 -0600
@@ -24,6 +24,7 @@
 #include "mutt_curses.h"
 #include "mutt_menu.h"
 #include "mbyte.h"
+#include "sidebar.h"
 
 #ifdef USE_IMAP
 #include "imap.h"
@@ -158,7 +159,7 @@ void menu_pad_string (char *s, size_t n)
 {
   char *scratch = safe_strdup (s);
   int shift = option (OPTARROWCURSOR) ? 3 : 0;
-  int cols = COLS - shift;
+  int cols = COLS - shift - SidebarWidth;
 
   mutt_format_string (s, n, cols, cols, 0, ' ', scratch, mutt_strlen (scratch), 1);
   s[n - 1] = 0;
@@ -209,6 +210,7 @@ void menu_redraw_index (MUTTMENU *menu)
   char buf[STRING];
   int i;
 
+  draw_sidebar(1);
   for (i = menu->top; i < menu->top + menu->pagelen; i++)
   {
     if (i < menu->max)
@@ -219,7 +221,7 @@ void menu_redraw_index (MUTTMENU *menu)
       if (option (OPTARROWCURSOR))
       {
         attrset (menu->color (i));
-	CLEARLINE (i - menu->top + menu->offset);
+ 	CLEARLINE_WIN (i - menu->top + menu->offset);
 
 	if (i == menu->current)
 	{
@@ -248,14 +250,14 @@ void menu_redraw_index (MUTTMENU *menu)
 	  BKGDSET (MT_COLOR_INDICATOR);
 	}
 
-	CLEARLINE (i - menu->top + menu->offset);
+ 	CLEARLINE_WIN (i - menu->top + menu->offset);
 	print_enriched_string (menu->color(i), (unsigned char *) buf, i != menu->current);
         SETCOLOR (MT_COLOR_NORMAL);
         BKGDSET (MT_COLOR_NORMAL);
       }
     }
     else
-      CLEARLINE (i - menu->top + menu->offset);
+      CLEARLINE_WIN (i - menu->top + menu->offset);
   }
   menu->redraw = 0;
 }
@@ -270,7 +272,7 @@ void menu_redraw_motion (MUTTMENU *menu)
     return;
   }
   
-  move (menu->oldcurrent + menu->offset - menu->top, 0);
+  move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth);
   SETCOLOR (MT_COLOR_NORMAL);
   BKGDSET (MT_COLOR_NORMAL);
 
@@ -285,13 +287,13 @@ void menu_redraw_motion (MUTTMENU *menu)
       clrtoeol ();
       menu_make_entry (buf, sizeof (buf), menu, menu->oldcurrent);
       menu_pad_string (buf, sizeof (buf));
-      move (menu->oldcurrent + menu->offset - menu->top, 3);
+      move (menu->oldcurrent + menu->offset - menu->top, SidebarWidth + 3);
       print_enriched_string (menu->color(menu->oldcurrent), (unsigned char *) buf, 1);
       SETCOLOR (MT_COLOR_NORMAL);
     }
 
     /* now draw it in the new location */
-    move (menu->current + menu->offset - menu->top, 0);
+    move (menu->current + menu->offset - menu->top, SidebarWidth);
     attrset (menu->color (menu->current));
     ADDCOLOR (MT_COLOR_INDICATOR);
     addstr ("->");
@@ -312,7 +314,7 @@ void menu_redraw_motion (MUTTMENU *menu)
     attrset (menu->color (menu->current));
     ADDCOLOR (MT_COLOR_INDICATOR);
     BKGDSET (MT_COLOR_INDICATOR);
-    CLEARLINE (menu->current - menu->top + menu->offset);
+    CLEARLINE_WIN (menu->current - menu->top + menu->offset);
     print_enriched_string (menu->color(menu->current), (unsigned char *) buf, 0);
     SETCOLOR (MT_COLOR_NORMAL);
     BKGDSET (MT_COLOR_NORMAL);
@@ -324,7 +326,7 @@ void menu_redraw_current (MUTTMENU *menu
 {
   char buf[STRING];
   
-  move (menu->current + menu->offset - menu->top, 0);
+  move (menu->current + menu->offset - menu->top, SidebarWidth);
   menu_make_entry (buf, sizeof (buf), menu, menu->current);
   menu_pad_string (buf, sizeof (buf));
 
@@ -867,7 +869,7 @@ int mutt_menuLoop (MUTTMENU *menu)
     
     
     if (option (OPTARROWCURSOR))
-      move (menu->current - menu->top + menu->offset, 2);
+      move (menu->current - menu->top + menu->offset, SidebarWidth + 2);
     else if (option (OPTBRAILLEFRIENDLY))
       move (menu->current - menu->top + menu->offset, 0);
     else
diff -urpN mutt-1.5.15+20070515.orig/mutt.h mutt-1.5.15+20070515/mutt.h
--- mutt-1.5.15+20070515.orig/mutt.h	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/mutt.h	2007-06-04 23:54:09.000000000 -0600
@@ -437,6 +437,7 @@ enum
   OPTSAVEEMPTY,
   OPTSAVENAME,
   OPTSCORE,
+  OPTSIDEBAR,
   OPTSIGDASHES,
   OPTSIGONTOP,
   OPTSORTRE,
@@ -874,6 +875,7 @@ typedef struct _context
 {
   char *path;
   FILE *fp;
+  time_t atime;
   time_t mtime;
   off_t size;
   off_t vsize;
@@ -914,6 +916,7 @@ typedef struct _context
   unsigned int quiet : 1;	/* inhibit status messages? */
   unsigned int collapsed : 1;   /* are all threads collapsed? */
   unsigned int closing : 1;	/* mailbox is being closed */
+  unsigned int peekonly : 1;	/* just taking a glance, revert atime */
 
   /* driver hooks */
   void *data;			/* driver specific data */
diff -urpN mutt-1.5.15+20070515.orig/mutt_curses.h mutt-1.5.15+20070515/mutt_curses.h
--- mutt-1.5.15+20070515.orig/mutt_curses.h	2007-03-24 11:45:30.000000000 -0600
+++ mutt-1.5.15+20070515/mutt_curses.h	2007-06-04 23:54:09.000000000 -0600
@@ -64,6 +64,7 @@
 #undef lines
 #endif /* lines */
 
+#define CLEARLINE_WIN(x) move(x,SidebarWidth), clrtoeol()
 #define CLEARLINE(x) move(x,0), clrtoeol()
 #define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x)
 #define BEEP() do { if (option (OPTBEEP)) beep(); } while (0)
@@ -126,6 +127,7 @@ enum
   MT_COLOR_BOLD,
   MT_COLOR_UNDERLINE,
   MT_COLOR_INDEX,
+  MT_COLOR_NEW,
   MT_COLOR_MAX
 };
 
diff -urpN mutt-1.5.15+20070515.orig/muttlib.c mutt-1.5.15+20070515/muttlib.c
--- mutt-1.5.15+20070515.orig/muttlib.c	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/muttlib.c	2007-06-04 23:54:09.000000000 -0600
@@ -1201,7 +1201,10 @@ void mutt_FormatString (char *dest,		/* 
 	ch = *src++; /* pad char */
 	/* calculate space left on line.  if we've already written more data
 	   than will fit on the line, ignore the rest of the line */
-	count = (COLS < destlen ? COLS : destlen);
+  	if ( DrawFullLine )
+  	  count = (COLS < destlen ? COLS : destlen);
+  	else
+  	  count = ((COLS-SidebarWidth) < destlen ? COLS - SidebarWidth : destlen);
 	if (count > col)
 	{
 	  count -= col; /* how many columns left on this line */
diff -urpN mutt-1.5.15+20070515.orig/mx.c mutt-1.5.15+20070515/mx.c
--- mutt-1.5.15+20070515.orig/mx.c	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/mx.c	2007-06-04 23:54:09.000000000 -0600
@@ -631,6 +631,7 @@ static int mx_open_mailbox_append (CONTE
  *		M_APPEND	open mailbox for appending
  *		M_READONLY	open mailbox in read-only mode
  *		M_QUIET		only print error messages
+ *		M_PEEK		revert atime where applicable
  *	ctx	if non-null, context struct to use
  */
 CONTEXT *mx_open_mailbox (const char *path, int flags, CONTEXT *pctx)
@@ -653,6 +654,8 @@ CONTEXT *mx_open_mailbox (const char *pa
     ctx->quiet = 1;
   if (flags & M_READONLY)
     ctx->readonly = 1;
+  if (flags & M_PEEK)
+    ctx->peekonly = 1;
 
   if (flags & (M_APPEND|M_NEWFOLDER))
   {
@@ -757,9 +760,21 @@ CONTEXT *mx_open_mailbox (const char *pa
 void mx_fastclose_mailbox (CONTEXT *ctx)
 {
   int i;
+#ifndef BUFFY_SIZE
+  struct utimbuf ut;
+#endif
 
   if(!ctx) 
     return;
+#ifndef BUFFY_SIZE
+  /* fix up the times so buffy won't get confused */
+  if (ctx->peekonly && ctx->path && ctx->mtime > ctx->atime)
+  {
+    ut.actime = ctx->atime;
+    ut.modtime = ctx->mtime;
+    utime (ctx->path, &ut); 
+  }
+#endif
 
   if (ctx->mx_close)
     ctx->mx_close (ctx);
diff -urpN mutt-1.5.15+20070515.orig/pager.c mutt-1.5.15+20070515/pager.c
--- mutt-1.5.15+20070515.orig/pager.c	2007-06-04 23:45:17.000000000 -0600
+++ mutt-1.5.15+20070515/pager.c	2007-06-05 00:06:38.000000000 -0600
@@ -30,6 +30,7 @@
 #include "pager.h"
 #include "attach.h"
 #include "mbyte.h"
+#include "sidebar.h"
 void set_xterm_title_bar(char *title);
 void set_xterm_icon_name(char *name);
 
@@ -1070,6 +1071,8 @@ static int format_line (struct line_t **
 
   int wrap_cols = mutt_term_width (Wrap);
   
+  wrap_cols -= SidebarWidth;
+
   /* FIXME: this should come from lineInfo */
   memset(&mbstate, 0, sizeof(mbstate));
 
@@ -1702,7 +1705,7 @@ mutt_pager (const char *banner, const ch
     if ((redraw & REDRAW_BODY) || topline != oldtopline)
     {
       do {
-	move (bodyoffset, 0);
+	move (bodyoffset, SidebarWidth);
 	curline = oldtopline = topline;
 	lines = 0;
 	force_redraw = 0;
@@ -1715,6 +1718,7 @@ mutt_pager (const char *banner, const ch
 			    &QuoteList, &q_level, &force_redraw, &SearchRE) > 0)
 	    lines++;
 	  curline++;
+ 	  move(lines + bodyoffset, SidebarWidth);
 	}
 	last_offset = lineInfo[curline].offset;
       } while (force_redraw);
@@ -1728,6 +1732,7 @@ mutt_pager (const char *banner, const ch
 	  addch ('~');
 	addch ('\n');
 	lines++;
+	move(lines + bodyoffset, SidebarWidth);
       }
       /* We are going to update the pager status bar, so it isn't
        * necessary to reset to normal color now. */
@@ -1751,22 +1756,22 @@ mutt_pager (const char *banner, const ch
       /* print out the pager status bar */
       SETCOLOR (MT_COLOR_STATUS);
       BKGDSET (MT_COLOR_STATUS);
-      CLEARLINE (statusoffset);
+      CLEARLINE_WIN(statusoffset);
       if (IsHeader (extra))
       {
-	size_t l1 = COLS * MB_LEN_MAX;
+	size_t l1 = COLS * MB_LEN_MAX - (SidebarWidth * MB_LEN_MAX);
 	size_t l2 = sizeof (buffer);
 	hfi.hdr = extra->hdr;
 	mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT);
       }
       else if (IsMsgAttach (extra))
       {
-	size_t l1 = COLS * MB_LEN_MAX;
+	size_t l1 = COLS * MB_LEN_MAX - (SidebarWidth * MB_LEN_MAX);
 	size_t l2 = sizeof (buffer);
 	hfi.hdr = extra->bdy->hdr;
 	mutt_make_string_info (buffer, l1 < l2 ? l1 : l2, NONULL (PagerFmt), &hfi, M_FORMAT_MAKEPRINT);
       }
-      mutt_paddstr (COLS, IsHeader (extra) || IsMsgAttach (extra) ?  buffer : banner);
+      mutt_paddstr (COLS-SidebarWidth, IsHeader (extra) || IsMsgAttach (extra) ? buffer : banner);
       BKGDSET (MT_COLOR_NORMAL);
       SETCOLOR (MT_COLOR_NORMAL);
       if (option(OPTXTERMSETTITLES))
@@ -1783,18 +1788,24 @@ mutt_pager (const char *banner, const ch
       /* redraw the pager_index indicator, because the
        * flags for this message might have changed. */
       menu_redraw_current (index);
+      draw_sidebar(MENU_PAGER);
 
       /* print out the index status bar */
       menu_status_line (buffer, sizeof (buffer), index, NONULL(Status));
  
-      move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)), 0);
+      move (indexoffset + (option (OPTSTATUSONTOP) ? 0 : (indexlen - 1)),
+          SidebarWidth);
       SETCOLOR (MT_COLOR_STATUS);
       BKGDSET (MT_COLOR_STATUS);
-      mutt_paddstr (COLS, buffer);
+      mutt_paddstr (COLS-SidebarWidth, buffer);
       SETCOLOR (MT_COLOR_NORMAL);
       BKGDSET (MT_COLOR_NORMAL);
     }
 
+    /* if we're not using the index, update every time */
+    if ( index == 0 )
+      draw_sidebar(MENU_PAGER);
+
     redraw = 0;
 
     if (option(OPTBRAILLEFRIENDLY)) {
@@ -2673,6 +2684,12 @@ search_next:
         redraw = REDRAW_FULL;
         break;
 
+      case OP_SIDEBAR_SCROLL_UP:
+      case OP_SIDEBAR_SCROLL_DOWN:
+      case OP_SIDEBAR_NEXT:
+      case OP_SIDEBAR_PREV:
+	scroll_sidebar(ch, MENU_PAGER);
+ 	break;
       default:
 	ch = -1;
 	break;
diff -urpN mutt-1.5.15+20070515.orig/sidebar.c mutt-1.5.15+20070515/sidebar.c
--- mutt-1.5.15+20070515.orig/sidebar.c	1969-12-31 17:00:00.000000000 -0700
+++ mutt-1.5.15+20070515/sidebar.c	2007-06-04 23:54:09.000000000 -0600
@@ -0,0 +1,294 @@
+/*
+ * Copyright (C) ????-2004 Justin Hibbits <jrh29@po.cwru.edu>
+ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>
+ * 
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ */ 
+
+
+#if HAVE_CONFIG_H
+# include "config.h"
+#endif
+
+#include "mutt.h"
+#include "mutt_menu.h"
+#include "mutt_curses.h"
+#include "sidebar.h"
+#include "buffy.h"
+#include <libgen.h>
+#include "keymap.h"
+#include <stdbool.h>
+
+/*BUFFY *CurBuffy = 0;*/
+static BUFFY *TopBuffy = 0;
+static BUFFY *BottomBuffy = 0;
+static int known_lines = 0;
+
+static int quick_log10(int n)
+{
+        char string[32];
+        sprintf(string, "%d", n);
+        return strlen(string);
+}
+
+void calc_boundaries (int menu)
+{
+	BUFFY *tmp = Incoming;
+
+	if ( known_lines != LINES ) {
+		TopBuffy = BottomBuffy = 0;
+		known_lines = LINES;
+	}
+	for ( ; tmp->next != 0; tmp = tmp->next )
+		tmp->next->prev = tmp;
+
+	if ( TopBuffy == 0 && BottomBuffy == 0 )
+		TopBuffy = Incoming;
+	if ( BottomBuffy == 0 ) {
+		int count = LINES - 2 - (menu != MENU_PAGER || option(OPTSTATUSONTOP));
+		BottomBuffy = TopBuffy;
+		while ( --count && BottomBuffy->next )
+			BottomBuffy = BottomBuffy->next;
+	}
+	else if ( TopBuffy == CurBuffy->next ) {
+		int count = LINES - 2 - (menu != MENU_PAGER);
+		BottomBuffy = CurBuffy;
+		tmp = BottomBuffy;
+		while ( --count && tmp->prev)
+			tmp = tmp->prev;
+		TopBuffy = tmp;
+	}
+	else if ( BottomBuffy == CurBuffy->prev ) {
+		int count = LINES - 2 - (menu != MENU_PAGER);
+		TopBuffy = CurBuffy;
+		tmp = TopBuffy;
+		while ( --count && tmp->next )
+			tmp = tmp->next;
+		BottomBuffy = tmp;
+	}
+}
+
+char *make_sidebar_entry(char *box, int size, int new)
+{
+	static char *entry = 0;
+	char *c;
+	int i = 0;
+	int delim_len = strlen(SidebarDelim);
+
+	c = realloc(entry, SidebarWidth - delim_len + 2);
+	if ( c ) entry = c;
+	entry[SidebarWidth - delim_len + 1] = 0;
+	for (; i < SidebarWidth - delim_len + 1; entry[i++] = ' ' );
+	i = strlen(box);
+	strncpy( entry, box, i < (SidebarWidth - delim_len + 1) ? i : (SidebarWidth - delim_len + 1) );
+
+        if (size == -1)
+                sprintf(entry + SidebarWidth - delim_len - 3, "?");
+        else if ( new ) 
+		sprintf(
+			entry + SidebarWidth - delim_len - 3 - quick_log10(size) - quick_log10(new),
+			"% d(%d)", size, new);
+	else
+		sprintf( entry + SidebarWidth - delim_len - 1 - quick_log10(size), "% d", size);
+	return entry;
+}
+
+void set_curbuffy(char buf[LONG_STRING])
+{
+  BUFFY* tmp = CurBuffy = Incoming;
+
+  if (!Incoming)
+    return;
+
+  while(1) {
+    if(!strcmp(tmp->path, buf)) {
+      CurBuffy = tmp;
+      break;
+    }
+
+    if(tmp->next)
+      tmp = tmp->next;
+    else
+      break;
+  }
+}
+
+int draw_sidebar(int menu) {
+
+	int lines = option(OPTHELP) ? 1 : 0;
+	BUFFY *tmp;
+#ifndef USE_SLANG_CURSES
+        attr_t attrs;
+#endif
+        short delim_len = strlen(SidebarDelim);
+        short color_pair;
+
+        static bool initialized = false;
+        static int prev_show_value;
+        static short saveSidebarWidth;
+
+        /* initialize first time */
+        if(!initialized) {
+                prev_show_value = option(OPTSIDEBAR);
+                saveSidebarWidth = SidebarWidth;
+                if(!option(OPTSIDEBAR)) SidebarWidth = 0;
+                initialized = true;
+        }
+
+        /* save or restore the value SidebarWidth */
+        if(prev_show_value != option(OPTSIDEBAR)) {
+                if(prev_show_value && !option(OPTSIDEBAR)) {
+                        saveSidebarWidth = SidebarWidth;
+                        SidebarWidth = 0;
+                } else if(!prev_show_value && option(OPTSIDEBAR)) {
+                        SidebarWidth = saveSidebarWidth;
+                }
+                prev_show_value = option(OPTSIDEBAR);
+        }
+
+
+//	if ( SidebarWidth == 0 ) return 0;
+       if (SidebarWidth > 0 && option (OPTSIDEBAR)
+           && delim_len >= SidebarWidth) {
+         unset_option (OPTSIDEBAR);
+         /* saveSidebarWidth = SidebarWidth; */
+         if (saveSidebarWidth > delim_len) {
+           SidebarWidth = saveSidebarWidth;
+           mutt_error (_("Value for sidebar_delim is too long. Disabling sidebar."));
+           sleep (2);
+         } else {
+           SidebarWidth = 0;
+           mutt_error (_("Value for sidebar_delim is too long. Disabling sidebar. Please set your sidebar_width to a sane value."));
+           sleep (4); /* the advise to set a sane value should be seen long enough */
+         }
+         saveSidebarWidth = 0;
+         return (0);
+       }
+
+    if ( SidebarWidth == 0 || !option(OPTSIDEBAR)) {
+      if (SidebarWidth > 0) {
+        saveSidebarWidth = SidebarWidth;
+        SidebarWidth = 0;
+      }
+      unset_option(OPTSIDEBAR);
+      return 0;
+    }
+
+        /* get attributes for divider */
+	SETCOLOR(MT_COLOR_STATUS);
+#ifndef USE_SLANG_CURSES
+        attr_get(&attrs, &color_pair, 0);
+#else
+        color_pair = attr_get();
+#endif
+	SETCOLOR(MT_COLOR_NORMAL);
+
+	/* draw the divider */
+
+	for ( ; lines < LINES-1-(menu != MENU_PAGER || option(OPTSTATUSONTOP)); lines++ ) {
+		move(lines, SidebarWidth - delim_len);
+		addstr(NONULL(SidebarDelim));
+#ifndef USE_SLANG_CURSES
+                mvchgat(lines, SidebarWidth - delim_len, delim_len, 0, color_pair, NULL);
+#endif
+	}
+
+	if ( Incoming == 0 ) return 0;
+	lines = option(OPTHELP) ? 1 : 0; /* go back to the top */
+
+	if ( known_lines != LINES || TopBuffy == 0 || BottomBuffy == 0 ) 
+		calc_boundaries(menu);
+	if ( CurBuffy == 0 ) CurBuffy = Incoming;
+
+	tmp = TopBuffy;
+
+	SETCOLOR(MT_COLOR_NORMAL);
+
+	for ( ; tmp && lines < LINES-1 - (menu != MENU_PAGER || option(OPTSTATUSONTOP)); tmp = tmp->next ) {
+		if ( tmp == CurBuffy )
+			SETCOLOR(MT_COLOR_INDICATOR);
+		else if ( tmp->msg_unread > 0 )
+			SETCOLOR(MT_COLOR_NEW);
+		else
+			SETCOLOR(MT_COLOR_NORMAL);
+
+		move( lines, 0 );
+		if ( Context && !strcmp( tmp->path, Context->path ) ) {
+			tmp->msg_unread = Context->unread;
+			tmp->msgcount = Context->msgcount;
+		}
+                printw( "%.*s", SidebarWidth - delim_len + 1,
+                        make_sidebar_entry(basename(tmp->path), tmp->msgcount,
+                        tmp->msg_unread));
+		lines++;
+	}
+	SETCOLOR(MT_COLOR_NORMAL);
+	for ( ; lines < LINES-1 - (menu != MENU_PAGER || option(OPTSTATUSONTOP)); lines++ ) {
+		int i = 0;
+		move( lines, 0 );
+		for ( ; i < SidebarWidth - delim_len - 1; i++ )
+			addch(' ');
+	}
+	return 0;
+}
+
+
+void set_buffystats(CONTEXT* Context)
+{
+        BUFFY *tmp = Incoming;
+        while(tmp) {
+                if(Context && !strcmp(tmp->path, Context->path)) {
+			tmp->msg_unread = Context->unread;
+			tmp->msgcount = Context->msgcount;
+                        break;
+                }
+                tmp = tmp->next;
+        }
+}
+
+void scroll_sidebar(int op, int menu)
+{
+        if(!SidebarWidth) return;
+        if(!CurBuffy) return;
+
+	switch (op) {
+		case OP_SIDEBAR_NEXT:
+			if ( CurBuffy->next == NULL ) return;
+			CurBuffy = CurBuffy->next;
+			break;
+		case OP_SIDEBAR_PREV:
+			if ( CurBuffy->prev == NULL ) return;
+			CurBuffy = CurBuffy->prev;
+			break;
+		case OP_SIDEBAR_SCROLL_UP:
+			CurBuffy = TopBuffy;
+			if ( CurBuffy != Incoming ) {
+				calc_boundaries(menu);
+				CurBuffy = CurBuffy->prev;
+			}
+			break;
+		case OP_SIDEBAR_SCROLL_DOWN:
+			CurBuffy = BottomBuffy;
+			if ( CurBuffy->next ) {
+				calc_boundaries(menu);
+				CurBuffy = CurBuffy->next;
+			}
+			break;
+		default:
+			return;
+	}
+	calc_boundaries(menu);
+	draw_sidebar(menu);
+}
diff -urpN mutt-1.5.15+20070515.orig/sidebar.h mutt-1.5.15+20070515/sidebar.h
--- mutt-1.5.15+20070515.orig/sidebar.h	1969-12-31 17:00:00.000000000 -0700
+++ mutt-1.5.15+20070515/sidebar.h	2007-06-04 23:54:09.000000000 -0600
@@ -0,0 +1,36 @@
+/*
+ * Copyright (C) ????-2004 Justin Hibbits <jrh29@po.cwru.edu>
+ * Copyright (C) 2004 Thomer M. Gil <mutt@thomer.com>
+ * 
+ *     This program is free software; you can redistribute it and/or modify
+ *     it under the terms of the GNU General Public License as published by
+ *     the Free Software Foundation; either version 2 of the License, or
+ *     (at your option) any later version.
+ * 
+ *     This program is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ * 
+ *     You should have received a copy of the GNU General Public License
+ *     along with this program; if not, write to the Free Software
+ *     Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111, USA.
+ */ 
+
+#ifndef SIDEBAR_H
+#define SIDEBAR_H
+
+struct MBOX_LIST {
+	char *path;
+	int msgcount;
+	int new;
+} MBLIST;
+
+/* parameter is whether or not to go to the status line */
+/* used for omitting the last | that covers up the status bar in the index */
+int draw_sidebar(int);
+void scroll_sidebar(int, int);
+void set_curbuffy(char*);
+void set_buffystats(CONTEXT*);
+
+#endif /* SIDEBAR_H */


-- 
dann frazier | HP Open Source and Linux Organization
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to dann frazier <dannf@debian.org>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #29 received at 277637@bugs.debian.org (full text, mbox):

From: dann frazier <dannf@debian.org>
To: 277637@bugs.debian.org
Subject: updated sidebar patch
Date: Tue, 3 Jul 2007 13:49:52 -0600
[Message part 1 (text/plain, inline)]
Ported to sid's 1.5.16

-- 
dann frazier

[mutt-sidebar.patch (text/x-diff, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to Michael Prokop <mika@grml.org>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #34 received at 277637@bugs.debian.org (full text, mbox):

From: Michael Prokop <mika@grml.org>
To: 277637@bugs.debian.org
Subject: current state of sidebar-patch?
Date: Thu, 19 Jul 2007 23:13:30 +0200
[Message part 1 (text/plain, inline)]
What's the current state of inclusion of the sidebar patch¹ into the
debian package of mutt (or maybe even upstream)?

There are several people out there asking for it.  Would be really
great if that patch could become part of mutt, or at least part of
Debian's mutt package.

¹ http://www.lunar-linux.org/index.php?option=com_content&task=view&id=44

thx && regards,
-mika-
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Message #37 received at 277637@bugs.debian.org (full text, mbox):

From: Christoph Berg <myon@debian.org>
To: 277637@bugs.debian.org
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Fri, 20 Jul 2007 00:22:39 +0200
[Message part 1 (text/plain, inline)]
Re: Michael Prokop 2007-07-19 <2007-07-19T23-03-35@devnull.michael-prokop.at>
> What's the current state of inclusion of the sidebar patch¹ into the
> debian package of mutt (or maybe even upstream)?
> 
> There are several people out there asking for it.  Would be really
> great if that patch could become part of mutt, or at least part of
> Debian's mutt package.

I doubt it will go upstream in the near future, and I think Dato and I
agree that it would be inappropriate to plug it into the Debian
package now.

What we will probably do is to build a second binary (package) that
includes the sidebar patch. (I pondered building a "mutt-ng" binary
for that purpose, but mutt-ng is more than just mutt + sidebar.)

Christoph
-- 
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to Adeodato Simó <dato@net.com.org.es>:
Extra info received and forwarded to list. Full text and rfc822 format available.

Message #42 received at 277637@bugs.debian.org (full text, mbox):

From: Adeodato Simó <dato@net.com.org.es>
To: Christoph Berg <myon@debian.org>, 277637@bugs.debian.org
Cc: Michael Prokop <mika@grml.org>, dann frazier <dannf@debian.org>
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Sat, 21 Jul 2007 00:57:04 +0200
* Christoph Berg [Fri, 20 Jul 2007 00:22:39 +0200]:

> * Michael Prokop [Thu, 19 Jul 2007 23:13:30 +0200]:

> > What's the current state of inclusion of the sidebar patch¹ into the
> > debian package of mutt (or maybe even upstream)?

> > There are several people out there asking for it.  Would be really
> > great if that patch could become part of mutt, or at least part of
> > Debian's mutt package.

> I doubt it will go upstream in the near future, and I think Dato and I
> agree that it would be inappropriate to plug it into the Debian
> package now.

> What we will probably do is to build a second binary (package) that
> includes the sidebar patch. (I pondered building a "mutt-ng" binary
> for that purpose, but mutt-ng is more than just mutt + sidebar.)

I'd like mutt-patched or similar. I'm still not sure whether building it
from the same source package is a wise idea, though. What could work is
building if from the same source, but in experimental only. Somebody
(somebody being me, Christoph, or much preferably some intersted party)
would have to take care of merging unstable back to experimental after
each upload.

Yeah, I think I like that, at least as a start to see how it works out.
I can write the infraestructure to build the two packages from the same
source, so that the resulting job is a matter of grabbing the package
from unstable, comment out a flag in debian/rules or similar, and adjust
the conflicts if any, and/or upload the experimental patches with a new
version. When there are none, upload, or ping us for an upload if
they're not a DD.

Any takers?

-- 
Adeodato Simó                                     dato at net.com.org.es
Debian Developer                                  adeodato at debian.org
 
A dream is an answer to a question that we don't know how to ask.




Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to dann frazier <dannf@dannf.org>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #47 received at 277637@bugs.debian.org (full text, mbox):

From: dann frazier <dannf@dannf.org>
To: Adeodato Sim?? <dato@net.com.org.es>
Cc: Christoph Berg <myon@debian.org>, 277637@bugs.debian.org, Michael Prokop <mika@grml.org>
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Tue, 24 Jul 2007 14:51:51 -0600
On Sat, Jul 21, 2007 at 12:57:04AM +0200, Adeodato Sim?? wrote:
> I'd like mutt-patched or similar. I'm still not sure whether building it
> from the same source package is a wise idea, though. What could work is
> building if from the same source, but in experimental only. Somebody
> (somebody being me, Christoph, or much preferably some intersted party)
> would have to take care of merging unstable back to experimental after
> each upload.

I already do this for the sidebar patch anyway, so I don't mind doing
an upload to experimental with it. I assume there are other features
people would like to get in besides sidebar, so I suggest we setup a
set of policies for working together. Here's a couple to give an idea
of what I'm thinking...

Patch Owners
------------
 At least one owner exists for each patch. This maintainer is
 responsible for porting (or working with their upstreams to port)
 patches to new releases.

Regressions Permitted
---------------------
 Uploads to experimental should occur at most 1 week after a new
 version enters unstable. If a patch requires port work and the
 patch maintainer does not complete this work within the week, that
 patch will be dropped. This patch can of course be reapplied in a
 future upload once the porting work is complete.
 Exceptions are of course permitted - if a patch maintainer needs a
 few extra days, they may request a delay of the upload, if there's a
 critical fix (e.g., security vulnerability), an upload may occur
 immediately omitting features that have to be ported.

Also, it'd be good to have a place to coordinate these uploads. If
there's no pre-existing forums, I'd suggest either a lists.debian.net
list or to simply open a wishlist bug with every unstable release
requesting a new mutt-patched upload and work through the issues
there.

> Yeah, I think I like that, at least as a start to see how it works out.
> I can write the infraestructure to build the two packages from the same
> source, so that the resulting job is a matter of grabbing the package
> from unstable, comment out a flag in debian/rules or similar, and adjust
> the conflicts if any, and/or upload the experimental patches with a new
> version. When there are none, upload, or ping us for an upload if
> they're not a DD.
> 
> Any takers?

That sounds good, thanks Adeodato.

-- 
dann frazier




Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Message #50 received at 277637@bugs.debian.org (full text, mbox):

From: Christoph Berg <myon@debian.org>
To: dann frazier <dannf@dannf.org>
Cc: Adeodato Simó <dato@net.com.org.es>, 277637@bugs.debian.org, Michael Prokop <mika@grml.org>
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Tue, 24 Jul 2007 23:50:12 +0200
[Message part 1 (text/plain, inline)]
Re: dann frazier 2007-07-24 <20070724205151.GC23172@colo.lackof.org>
> I already do this for the sidebar patch anyway, so I don't mind doing
> an upload to experimental with it. I assume there are other features
> people would like to get in besides sidebar, so I suggest we setup a
> set of policies for working together. Here's a couple to give an idea
> of what I'm thinking...

I not really aware of any other patch (besides sidebar) that people
want and that is at the same time rejected upstream (or not already in
the Debian package). I'd go with a mutt-sidebar package built from the
same source. Of course building twice is somewhat scary, but it should
definitely come from the same source, or else would result in lots of
duplicated work. Along the same line, we should go for unstable, as
experimental isn't really widely used, and the point of the new
package is to be used, rather than tested.

Christoph
-- 
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to dann frazier <dannf@debian.org>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #55 received at 277637@bugs.debian.org (full text, mbox):

From: dann frazier <dannf@debian.org>
To: Christoph Berg <myon@debian.org>, Adeodato Sim? <dato@net.com.org.es>, 277637@bugs.debian.org, Michael Prokop <mika@grml.org>
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Tue, 24 Jul 2007 16:26:11 -0600
On Tue, Jul 24, 2007 at 11:50:12PM +0200, Christoph Berg wrote:
> Re: dann frazier 2007-07-24 <20070724205151.GC23172@colo.lackof.org>
> > I already do this for the sidebar patch anyway, so I don't mind doing
> > an upload to experimental with it. I assume there are other features
> > people would like to get in besides sidebar, so I suggest we setup a
> > set of policies for working together. Here's a couple to give an idea
> > of what I'm thinking...
> 
> I not really aware of any other patch (besides sidebar) that people
> want and that is at the same time rejected upstream (or not already in
> the Debian package). I'd go with a mutt-sidebar package built from the
> same source. Of course building twice is somewhat scary, but it should
> definitely come from the same source, or else would result in lots of
> duplicated work. Along the same line, we should go for unstable, as
> experimental isn't really widely used, and the point of the new
> package is to be used, rather than tested.

That's of course fine with me as well, though it does mean a higher
level of support and for a longer period of time. Another option is to
make it a separate source package in sid so that RC bugs in sidebar do
not affect the overall releasability of mutt - I know of no such issues
currently, but there's always a possibility.

-- 
dann frazier




Information forwarded to debian-bugs-dist@lists.debian.org:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to Adeodato Simó <dato@net.com.org.es>:
Extra info received and forwarded to list. Full text and rfc822 format available.

Message #60 received at 277637@bugs.debian.org (full text, mbox):

From: Adeodato Simó <dato@net.com.org.es>
To: Christoph Berg <myon@debian.org>, dann frazier <dannf@dannf.org>, 277637@bugs.debian.org, Michael Prokop <mika@grml.org>
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Wed, 25 Jul 2007 01:06:07 +0200
* Christoph Berg [Tue, 24 Jul 2007 23:50:12 +0200]:

> Along the same line, we should go for unstable,

No, I really want experimental first, and re-evaluate after some months
there.

> as experimental isn't really widely used, and the point of the new
> package is to be used, rather than tested.

Since the patches will be in a separate binary package, interested
parties will have to explicitly select it (i.e., it won't appear in
their systems with a regular update); given that, it won't make much
difference from which distribution to install the package from.

Cheers,

-- 
Adeodato Simó                                     dato at net.com.org.es
Debian Developer                                  adeodato at debian.org
 
When the only tool you have is a hammer, every problem starts to look
like a nail.




Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Message #63 received at 277637@bugs.debian.org (full text, mbox):

From: Christoph Berg <myon@debian.org>
To: Adeodato Simó <dato@net.com.org.es>
Cc: dann frazier <dannf@dannf.org>, 277637@bugs.debian.org, Michael Prokop <mika@grml.org>
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Wed, 25 Jul 2007 11:49:58 +0200
[Message part 1 (text/plain, inline)]
Re: Adeodato Simó 2007-07-25 <20070724230607.GA25024@chistera.yi.org>
> * Christoph Berg [Tue, 24 Jul 2007 23:50:12 +0200]:
> 
> > Along the same line, we should go for unstable,
> 
> No, I really want experimental first, and re-evaluate after some months
> there.

I meant long-term of course, initially trying experimental is fine. (I
was pondering frequent snapshot uploads to experimental anyway, and
more or less only hitting unstable on upstream releases.)

Christoph
-- 
[signature.asc (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to 277637@bugs.debian.org, Adeodato Simó <dato@net.com.org.es>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #68 received at 277637@bugs.debian.org (full text, mbox):

From: Adeodato Simó <dato@net.com.org.es>
To: Christoph Berg <myon@debian.org>, 277637@bugs.debian.org
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Wed, 25 Jul 2007 22:50:29 +0200
* Christoph Berg [Wed, 25 Jul 2007 11:49:58 +0200]:

> Re: Adeodato Simó 2007-07-25 <20070724230607.GA25024@chistera.yi.org>
> > * Christoph Berg [Tue, 24 Jul 2007 23:50:12 +0200]:

> > > Along the same line, we should go for unstable,

> > No, I really want experimental first, and re-evaluate after some months
> > there.

> I meant long-term of course, initially trying experimental is fine.

Ah, right.

> (I was pondering frequent snapshot uploads to experimental anyway, and
> more or less only hitting unstable on upstream releases.)

On the other hand, I think unstable is appropriate for such uploads,
particularly because upstream is now heading towards 1.6 so most updates
are bugfixes, plus that's really the stuff that benefits from having
much users testing it, which experimental does not give you (for already
existing packages).

Cheers,

-- 
Adeodato Simó                                     dato at net.com.org.es
Debian Developer                                  adeodato at debian.org
 
As an adolescent I aspired to lasting fame, I craved factual certainty,
and I thirsted for a meaningful vision of human life -- so I became a
scientist. This is like becoming an archbishop so you can meet girls.
                -- Matt Cartmill




Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to Michelle Konzack <linux4michelle@freenet.de>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #73 received at 277637@bugs.debian.org (full text, mbox):

From: Michelle Konzack <linux4michelle@freenet.de>
To: Christoph Berg <myon@debian.org>, 277637@bugs.debian.org
Subject: Re: Bug#277637: current state of sidebar-patch?
Date: Mon, 30 Jul 2007 13:47:04 +0200
[Message part 1 (text/plain, inline)]
Hello *,

Am 2007-07-24 23:50:12, schrieb Christoph Berg:
> I not really aware of any other patch (besides sidebar) that people
> want and that is at the same time rejected upstream (or not already in
> the Debian package). I'd go with a mutt-sidebar package built from the

I have tried mutt-ng but since I use courier-imap only, it was crashing
all the time while opening huge Mailboxes with over 3000 messages.

Because this I realy like a mutt version which includes the "sidebar"
only beside Upstream approved patches.

OK, I have already applied (for more then one year) the sidebar patch
my own, but I was not realy satisfait because there where problems
while using IMAP.  Maybe this have changed now.

> same source. Of course building twice is somewhat scary, but it should
> definitely come from the same source, or else would result in lots of
> duplicated work. Along the same line, we should go for unstable, as
> experimental isn't really widely used, and the point of the new
> package is to be used, rather than tested.

ACK.

Thanks, Greetings and nice Day
    Michelle Konzack
    Systemadministrator
    Tamay Dogan Network
    Debian GNU/Linux Consultant


-- 
Linux-User #280138 with the Linux Counter, http://counter.li.org/
##################### Debian GNU/Linux Consultant #####################
Michelle Konzack   Apt. 917                  ICQ #328449886
                   50, rue de Soultz         MSN LinuxMichi
0033/6/61925193    67100 Strasbourg/France   IRC #Debian (irc.icq.com)
[signature.pgp (application/pgp-signature, inline)]

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Acknowledgement sent to dann frazier <dannf@debian.org>:
Extra info received and forwarded to list. Copy sent to Adeodato Simó <dato@net.com.org.es>. Full text and rfc822 format available.

Message #78 received at 277637@bugs.debian.org (full text, mbox):

From: dann frazier <dannf@debian.org>
To: 277637@bugs.debian.org
Subject: sidebar patch for 1.5.17-1
Date: Tue, 20 Nov 2007 08:54:45 -0700
[Message part 1 (text/plain, inline)]
Attached. Has there been anymore thought about doing a mutt-sidebar
package?

-- 
dann frazier

[mutt-sidebar-1.5.17-1.patch (text/x-diff, attachment)]

Information forwarded to debian-bugs-dist@lists.debian.org, Adeodato Simó <dato@net.com.org.es>:
Bug#277637; Package mutt. Full text and rfc822 format available.

Message #81 received at 277637@bugs.debian.org (full text, mbox):

From: Christoph Berg <myon@debian.org>
To: dann frazier <dannf@debian.org>, 277637@bugs.debian.org
Subject: Re: Bug#277637: sidebar patch for 1.5.17-1
Date: Sat, 24 Nov 2007 21:12:09 +0100
[Message part 1 (text/plain, inline)]
Re: dann frazier 2007-11-20 <20071120155444.GA31107@ldl.fc.hp.com>
> Attached.

Thanks.

> Has there been anymore thought about doing a mutt-sidebar package?

I tried but ran into the following problem:

The workflow

patch (without sidebar)
configure
build-mutt
add sidebar patch
build-mutt-patched
binary-mutt
binary-mutt-patched

doesn't work because the first binary-* target will trigger a
recompile on "make install (even for out-of-tree configure). OTOH,
with

...
build-mutt
binary-mutt
add sidebar patch
build-mutt-patched
binary-mutt-patched

the root/non-root parts don't work (build vs. binary targets).

Any ideas on how to sanely build two packages from the same source?

Christoph
-- 
cb@df7cb.de | http://www.df7cb.de/
[signature.asc (application/pgp-signature, inline)]

Tags added: pending Request was from Anibal Monsalve Salazar <anibal@debian.org> to control@bugs.debian.org. (Tue, 01 Jan 2008 23:42:07 GMT) Full text and rfc822 format available.

Reply sent to Christoph Berg <myon@debian.org>:
You have taken responsibility. Full text and rfc822 format available.

Notification sent to Jean-Michel Kelbert <kelbert@debian.org>:
Bug acknowledged by developer. Full text and rfc822 format available.

Message #88 received at 277637-close@bugs.debian.org (full text, mbox):

From: Christoph Berg <myon@debian.org>
To: 277637-close@bugs.debian.org
Subject: Bug#277637: fixed in mutt 1.5.17-2
Date: Sat, 05 Jan 2008 17:43:29 +0000
Source: mutt
Source-Version: 1.5.17-2

We believe that the bug you reported is fixed in the latest version of
mutt, which is due to be installed in the Debian FTP archive:

mutt-dbg_1.5.17-2_amd64.deb
  to pool/main/m/mutt/mutt-dbg_1.5.17-2_amd64.deb
mutt-patched_1.5.17-2_amd64.deb
  to pool/main/m/mutt/mutt-patched_1.5.17-2_amd64.deb
mutt_1.5.17-2.diff.gz
  to pool/main/m/mutt/mutt_1.5.17-2.diff.gz
mutt_1.5.17-2.dsc
  to pool/main/m/mutt/mutt_1.5.17-2.dsc
mutt_1.5.17-2_amd64.deb
  to pool/main/m/mutt/mutt_1.5.17-2_amd64.deb



A summary of the changes between this version and the previous one is
attached.

Thank you for reporting the bug, which will now be closed.  If you
have further comments please address them to 277637@bugs.debian.org,
and the maintainer will reopen the bug report if appropriate.

Debian distribution maintenance software
pp.
Christoph Berg <myon@debian.org> (supplier of updated mutt package)

(This message was generated automatically at their request; if you
believe that there is a problem with it please contact the archive
administrators by mailing ftpmaster@debian.org)


-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Format: 1.7
Date: Tue, 01 Jan 2008 20:00:33 +0100
Source: mutt
Binary: mutt mutt-dbg mutt-patched
Architecture: source amd64
Version: 1.5.17-2
Distribution: unstable
Urgency: low
Maintainer: Adeodato Simó <dato@net.com.org.es>
Changed-By: Christoph Berg <myon@debian.org>
Description: 
 mutt       - text-based mailreader supporting MIME, GPG, PGP and threading
 mutt-dbg   - debugging symbols for mutt
 mutt-patched - the Mutt Mail User Agent with extra patches
Closes: 277637 426148 426158 436228 446016 448728
Changes: 
 mutt (1.5.17-2) unstable; urgency=low
 .
   * Build a mutt-patched package to apply the sidebar patch. Thanks to Dato
     who had the right idea for the necessary debian/rules magic during the
     recent debian-qa meeting in Extremadura. (Closes: #277637)
   * Build a mutt-dbg package, and bump DH level to 5.
   * Grab current hg tip from upstream.
     + Fixes "mailto:" URL parsing.
       (Closes: #426148, #426158, #446016, Mutt: #2968, #2980)
     + 'set folder= =' won't segfault. (Closes: #448728)
     + Improve DSN docs. (Closes: #436228)
   * Bump Standards-Version, add Homepage field.
Files: 
 1bded6107213c3c252d2439b81164f8b 892 mail standard mutt_1.5.17-2.dsc
 0460a41e697a38015924ca92479e0bb9 151997 mail standard mutt_1.5.17-2.diff.gz
 8e7399f0423e224b2ce324e95860a0f8 1963130 mail standard mutt_1.5.17-2_amd64.deb
 3ff7270a81309b2a4eb56e0fe6420de9 383916 mail extra mutt-patched_1.5.17-2_amd64.deb
 62dc5f56c82b353ed936ba4ee6f189e0 1317402 mail extra mutt-dbg_1.5.17-2_amd64.deb

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)

iD8DBQFHepCOxa93SlhRC1oRApMEAKDG1b+VEW3PYrkvhom8lMJ5NsKg+QCfUnMm
2mXzzPbcdTi1alB8UJ9rcKY=
=fSEu
-----END PGP SIGNATURE-----





Reply sent to Christoph Berg <myon@debian.org>:
You have taken responsibility. Full text and rfc822 format available.

Notification sent to "Thomer M. Gil" <debian-bugs@thomer.com>:
Bug acknowledged by developer. Full text and rfc822 format available.

Bug archived. Request was from Debbugs Internal Request <owner@bugs.debian.org> to internal_control@bugs.debian.org. (Wed, 06 Feb 2008 07:27:22 GMT) Full text and rfc822 format available.

Send a report that this bug log contains spam.


Debian bug tracking system administrator <owner@bugs.debian.org>. Last modified: Sun Apr 20 01:49:23 2014; Machine Name: buxtehude.debian.org

Debian Bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.