Subject: Re: bug#1779: 23.0.60; proced with variable-pitch header line

From: Stephen Berman <[email-masked]>
Date: Sun, 04 Jan 2009 16:01:00 +0100

On Sun, 04 Jan 2009 03:23:53 -0500 Chong Yidong <[email-masked]> wrote:

>> Proced does not align the attribute names in the header line with the
>> corresponding columns when header-line face has variable pitch.
>>
>> I know of two approaches to dealing with this situation in Emacs, namely
>> that of buff-menu.el and that of ibuffer.el.  The latter imposes a
>> fixed-pitch face in the header line, overriding the
>> user customization.  The former uses the display property with an
>> :align-to specification to get proper alignment.  Maybe one of these
>> will work with proced.el too.
>
> We can't use :align-to because proced justifies some headers to the
> right hand side of the column.

The justification is customizable in proced-grammar-alist.  I set it to
`left' for all headers and modified proced-format by adapting the
:align-to code from buff-menu.el, but the headers still failed to align
with the columns with a variable-pitch header-line face.  But shouldn't
it be possible in principle?  Maybe someone who knows the code better
can make it work.

> I don't see where ibuffer.el imposes a fixed-pitch face on the header
> line, though.  Can you point out where it does this?

I made two mistakes here, sorry.  First, I shouldn't have said
fixed-pitch but the same face as is used in the buffer (which has to be
fixed-pitch in order for the columns to be aligned).  But in addition,
what I assumed to be the header line in the ibuffer window is in fact
just the first line of the buffer (although I looked at the ibuffer code
and saw ibuffer-header-line-format, I overlooked that this was only for
filters, and unthinkingly took the first line to be a header line, as
with buff-menu).  It's too bad the ibuffer "header" line isn't fixed
with respect to the rest of the buffer when scrolling, like a real
header line.  Could this effect be achieved with an overlay?

Steve Berman