Subject: bug#1305: All code that currently beeps should use visual bellinstead

From: "Drew Adams" <[email-masked]>
Date: Sun, 9 Nov 2008 22:28:14 -0800

> > No, that's not the intent.  The intent is to make the 
> > visible bell the default.  To turn it off, you turn off
> > visible-bell, which makes Emacs
> > beep again, and then turn off the speakers.
> 
> Indeed.  A good reason to use visible-bell by default is that 
> we have no guarantee that the bell can actually be heard 

Indeed not. That the bell might not be heard is no reason to use the visible
bell. That just doesn't follow. This is not about guaranteeing that the user's
attention be drawn. This is not a fire alarm.

It is typically just a minor reminder, akin to the "Wrapped" indication in
Isearch that lets you know when you've reached the end of the buffer. And a
clear message like that is typically better and sufficient.

Many, if not most, uses of the bell are probably unnecessary. That's no reason
to replace them with a visible bell. Just get rid of the ones that are
inappropriate.

> (e.g. I usually turn it off because I usually consider that a computer
> should be as close to silent as possible, except when I
> specifically ask otherwise (.e.g listing to music or whatching a video)).

I feel the same and I do the same. However, that is *not* a good reason to use
visible-bell by default. I don't want to lose silence with no distraction only
to gain silence with visible annoyance by default. That's a bad trade.

If this is about the default behavior, and it is generally agreed that such
frequent distractions serve little purpose and are annoying, then they will
remain so if they are simply moved from sound to sight. That's running in
circles around the problem, not fixing it.

> The other reason is that the beep can annoy other people than 
> the user, whereas the visible-bell is very unlikely to annoy other 
> people than the user herself.

As Eli said, just get rid of gratuitous uses of the bell. It's likely that there
are plenty. And that will leave the more appropriate uses, if there are any.

Someone (Jason?) mentioned the bell when quitting and when an error is raised.
Those are very common uses that could no doubt be eliminated. Each error should
display a message anyway, and there is no need for a bell when you quit (C-q).
Getting rid of even just those occurrences would take care of much of the
annoyance.

Or if you prefer, leave those occurrences in, but add an option or two:
`bell-when-quit-flag' and `bell-when-error-flag' - with default values nil.
Perhaps let the values be `bell', `visible-bell', `bell+visible-bell', and nil.

Or some such. IOW, if you really must change something, reduce the current use
of the bell and visible bell. Please do not simply substitute visible-bell for
bell. That is a poor solution to the problem of frequent bell distraction.