Subject: RE: bug#6933: 24.0.50; fringe-mode value of `half' is broken

From: "Drew Adams" <[email-masked]>
Date: Sat, 18 Sep 2010 07:45:32 -0700

> > What about the confusing name `default' and the doc?
> 
> The original bug report was only about the effect of `half'.
> Documentation is an unrelated issue.

See my second mail for this report which clarifies things.  I specifically
mention problems with the doc and with `default'.

> I don't see a good reason for renaming the symbolic values.

They don't do what they say.  `half' is not necessarily half of `default', even
when one disregards rounding.  `default' itself is a misleading name.  The ELisp
manual calls it "standard", but even that is not great.  Apparently it is the
full width needed to display all fringe bitmaps.  If we kept a symbolic value
for this it should be something like `full'.

> Doing so will surely cause back-compatibility issues,

It is use only in interactive interfaces.

> so IMO we need a really good reason for such a change.
> 
> > "standard fringe width, which is the width needed to 
> > display the fringe bitmaps"
> >
> > That suggests that it is a function of the fringe bitmaps, 
> > not a constant width.
> 
> They are constant for the time being, but may change in the future,
> e.g. if we lift the current restriction of the display engine that
> limits window width to an integral multiple of the canonical character
> size.

We don't name things based on such maybe-one-day-everything-will-be-different
imaginings.  These names have long been giving the wrong impression (years).

> > But as I say, if `default' and `half' are, in their effect, 
> > just hard-coded numeric widths, then let's get rid of those
> > value-menu and `interactive' spec choices.  There is no need for a
> > value of nil unless it actually does let the
> > fringe be different in different contexts (e.g. bitmap size).
> 
> I don't think it's right to fix the choices on specific numbers.
> Symbolic values allow us to change the underlying implementation in
> the future without hurting compatibility.

See above. The choices that users have should reflect the actual behavior, not
some possible future behavior. The only real behaviors possible today and
forever into the past are fixed numeric values for left, right, or both.  The UI
should reflect that faithfully.  It should not be a UI for some imagined
alternative or future world.

> The fact that some of the documentation describes the current
> implementation is not necessarily a good reason to remove future
> extensibility.

The doc and UI should reflect the product's behavior, not some alternative
behavior some developer might be dreaming of.  That's a no-brainer.

> > Can we settle this?
> 
> Feel free to submit a separate bug report.  I'm not going to do
> anything about this at this time, for the reasons stated above.