First, thank you to everyone who has helped develop Mutt!  I had been
stuck using Solaris mailx because no other program would let me edit
message headers using vi, until I recently discovered Mutt.

Also, bravo to whomever is responsible for the large speedup in reading
mail files between versions 0.93.2i and 0.95.1i.

Below are a number of questions and suggestions for further
improvements.

AMC

Comments on Mutt 0.95.1i (under Solaris 2.6):

Miscellaneous:

    In the pager, next-line and previous-line appear to repaint the
    entire screen instead of scrolling it.  Scrolling it would be a lot
    faster.  The same might be true for the index.

    The documentation says nothing about the dangers (or lack thereof)
    of running multiple instances of Mutt.  How about running two Mutts
    on different machines accessing the same spool file via NFS?

    When Mutt is suspended and resumed, it sometimes ends up in a bad
    state.  I think the terminal is no longer in non-canonical (raw)
    mode, because Mutt doesn't react to my keystrokes until I press
    return.

    The suspend variable causes Mutt to ignore the susp key (usually
    ctrl-Z) the first time I press it, but not the second time.  After
    this is fixed, check whether Mutt will also ignore the dsusp key
    (usually ctrl-Y).

    It would be nice to have a function for the index screen that causes
    a check for new mail to happen right now (like the inc command of
    mailx).  One would then have the option of setting mail_check to a
    larger (possibly infinite) value.

    When Mutt first starts up, the index is scrolled so that the
    selection is at the bottom of the window, but it would be nicer
    if it were in the middle of the window.  Sometimes after I change
    folders the index is scrolled so that only the last item is shown,
    at the top of the window.  Again, it would be nicer if the selected
    item started out in the middle of the window.

    In the index, half-up and half-down behave strangly near the top and
    bottom.  Usually, they scroll the viewable region without affecting
    the selection, unless the selection is scrolled out of the window,
    in which case the selection is moved as little as possible in order
    to make it visible.  But when the first (for half-up) or last (for
    half-down) entry is already visible, then no scrolling happens, and
    the first/last entry becomes selected.  I think it would make much
    more sense if half-down were exactly equivalent to doing next-line
    w/2 times, where w is the window size.

Bindings:

    <exit> does not work in this context: macro pager X <exit>XXX

    There is apparently no way to truly unbind a key.  Binding it to
    noop does not allow it to fall through to the generic map.  I'm
    currently working around this by creating bindings that duplicate
    the generic bindings.

    When I bind "<backspace>", it doesn't work, but when I bind "\cH",
    it works.  My terminfo entry contains "kbs=\b", so shouldn't the
    curses library see character 8 as backspace?  (I'm using an xterm
    under Solaris 2.6.)

    It would be nice if I could override the tty special characters
    via bind and macro commands.  For example, when I bind \cY to
    previous-line (for compatibility with vi), it currently doesn't
    work, because ctrl-Y is the dsusp character and therefore suspends
    Mutt.  It would be nice if Mutt, when it executes the bind and macro
    commands, would notice if a character is a tty special character and
    reconfigure the tty to disable that character.

Undocumented functions:

    index/tag-subthread

Documented but nonexistent functions:

    attach/decode-copy

Tabs:

    I hate tabs because they're rendered differently in different
    environments, so text that looks aligned in one environment will
    look misaligned in another.  I make it a policy never to use tabs
    (except in Makefiles, where it's required).  Mutt uses tabs to fold
    long header fields, so I edited the source to make it use spaces
    instead:

*** sendlib-orig.c      Thu Jan 14 23:29:03 1999
--- sendlib.c   Thu Jan 14 23:38:18 1999
***************
*** 406,415 ****
  
        tmplen = mutt_strlen (buffer) + mutt_strlen (p->attribute) + 1;
  
!       if (len + tmplen + 2 > 76)
        {
!       fputs ("\n\t", f);
!       len = tmplen + 8;
        }
        else
        {
--- 406,415 ----
  
        tmplen = mutt_strlen (buffer) + mutt_strlen (p->attribute) + 1;
  
!       if (len + tmplen + 2 > 72)
        {
!       fputs ("\n  ", f);
!       len = tmplen + 2;
        }
        else
        {
***************
*** 1183,1194 ****
      buf[0] = 0;
      rfc822_write_address (buf, sizeof (buf), adr);
      len = mutt_strlen (buf);
!     if (count && linelen + len > 74)
      {
        if (count)
        {
!       fputs ("\n\t", fp);
!       linelen = len + 8; /* tab is usually about 8 spaces... */
        }
      }
      else
--- 1183,1194 ----
      buf[0] = 0;
      rfc822_write_address (buf, sizeof (buf), adr);
      len = mutt_strlen (buf);
!     if (count && linelen + len > 72)
      {
        if (count)
        {
!       fputs ("\n  ", fp);
!       linelen = len + 2;
        }
      }
      else

Reply via email to