> What'd I'd like to see is a behavior where the list starts scrolling as
> you get within some arbitrary number (2-3 probably) of lines from the
> bottom.

You know what? I've wanted this functionality for a long time and i didn't
even consciously realize it.

Here's a patch. I'm currently using it and haven't seen any problems, but i
haven't exactly stress-tested it yet, either.

Index: globals.h
===================================================================
RCS file: /home/roessler/cvs/mutt/globals.h,v
retrieving revision 3.2
diff -u -r3.2 globals.h
--- globals.h   2002/01/24 21:53:19     3.2
+++ globals.h   2002/03/27 16:39:05
@@ -145,6 +145,7 @@
 
 WHERE short ConnectTimeout;
 WHERE short HistSize;
+WHERE short IndexContext;
 WHERE short PagerContext;
 WHERE short PagerIndexLines;
 WHERE short ReadInc;
Index: init.h
===================================================================
RCS file: /home/roessler/cvs/mutt/init.h,v
retrieving revision 3.14
diff -u -r3.14 init.h
--- init.h      2002/03/02 12:11:33     3.14
+++ init.h      2002/03/27 16:39:06
@@ -848,6 +848,12 @@
   { "indent_str",      DT_SYN,  R_NONE, UL "indent_string", 0 },
   /*
   */
+  { "index_context",   DT_NUM,  R_NONE, UL &IndexContext, 0 },
+  /*
+  ** .pp
+  ** This variable controls the number of lines of context that are given
+  ** when scrolling through the message index.
+  */
   { "index_format",    DT_STR,  R_BOTH, UL &HdrFmt, UL "%4C %Z %{%b %d} %-15.15L 
(%?l?%4l&%4c?) %s" },
   /*
   ** .pp
Index: menu.c
===================================================================
RCS file: /home/roessler/cvs/mutt/menu.c,v
retrieving revision 3.3
diff -u -r3.3 menu.c
--- menu.c      2002/02/13 09:53:33     3.3
+++ menu.c      2002/03/27 16:39:06
@@ -371,18 +371,22 @@
     set_option (OPTNEEDREDRAW);
     menu->redraw |= REDRAW_INDEX;
   }
-  else if (menu->current >= menu->top + menu->pagelen)
+  else if (menu->current >= menu->top + menu->pagelen - IndexContext)
   {
     if (option (OPTMENUSCROLL) || (menu->pagelen <= 0))
-      menu->top = menu->current - menu->pagelen + 1;
+      menu->top = menu->current - menu->pagelen + IndexContext + 1;
     else
       menu->top += menu->pagelen * ((menu->current - menu->top) / menu->pagelen);
     menu->redraw |= REDRAW_INDEX;
   }
-  else if (menu->current < menu->top)
+  else if (menu->current < menu->top + IndexContext)
   {
     if (option (OPTMENUSCROLL) || (menu->pagelen <= 0))
-      menu->top = menu->current;
+    {
+      menu->top = menu->current - IndexContext;
+      if (menu->top < 0)
+        menu->top = 0;
+    }
     else
     {
       menu->top -= menu->pagelen * ((menu->top + menu->pagelen - 1 - menu->current) / 
menu->pagelen);

Attachment: msg26281/pgp00000.pgp
Description: PGP signature

Reply via email to