emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Making `x-underline-at-descent-line' a face attribute


From: Jim Porter
Subject: Re: Making `x-underline-at-descent-line' a face attribute
Date: Thu, 6 Jan 2022 12:49:59 -0800

On 1/6/2022 12:07 PM, Eli Zaretskii wrote:
Cc: luangruo@yahoo.com, emacs-devel@gnu.org
From: Jim Porter <jporterbugs@gmail.com>
Date: Thu, 6 Jan 2022 09:47:33 -0800

Looking at the docs for :box, I only see the ability to set separate
vertical and horizontal widths (but not to set all 4 sides to different
values). The latter would be useful in some cases, for example to make
the tab-bar tabs look more like tabs.

That is not the right way of displaying tabs with 3D appearance.  We
should provide professionally looking tabs, not some emulation of them
with a box of 4 different width -- that would look extremely
unprofessional and unclean.

In general, I think the visual appearance of tab-bar and tab-line
buttons needs a lot of love and care; what we have now simply looks
badly, IMNSHO.  We've basically copied the code that displays the tool
bar, but without the attention that was at the time given to the
visual appearance of the (native tool-bar buttons.  The result is that
the tool-bar buttons look much prettier than the tab bar and the tab
lines.  Compare our tab bar with that of any of the Web browsers out
there, and you will see what I mean.  there's no good reason why our
tabs couldn't look as pretty as those of the browser, the only problem
is that it involves coding in C, not Lisp.  I still hope someone with
experience in graphics programming will do that.

It's interesting that you mention web browsers in particular, since that's part of what got me to think about using :box to create nicer-looking tab-bar tabs. In Firefox, the visuals are determined by CSS, and Emacs's :box attribute bears a striking resemblance to CSS's `border'. Having done some similar UI design in CSS, I'd likely implement the visuals for tabs partly using CSS `border' in the same way that I described using :box. (Of course, I'd use many other CSS features to adjust the appearance until it looks good.)

That said, CSS has somewhat of a reputation for being tricky to get right and occasionally producing unexpected results (just websearch for "CSS is awesome"). Maybe it's not a good idea to make Emacs face attributes work too much like CSS.

One benefit of making :color a cons cell is that it would be possible to
create an effect like `:style released-button', but allow the programmer
to control the exact colors to use.

Once again, the released-button style should be produced by actually
drawing a released button, like we do on the tool bar and the mode
line.  Playing color games with the :box attribute will produce an
unclean emulation of that, and I therefore object to doing that.  We
shouldn't implement such unclean visuals.

I don't have a strong opinion on this, so I don't mind if :color stays the way it is. It's just the first example I could come up with that someone might use the feature for.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]