Subject: bug#77715: [PATCH] Add ring-bell functions for mode line and header line.

From: Elijah Gabe Pérez <[email-masked]>
Date: Wed, 30 Apr 2025 11:51:46 -0600

Eli Zaretskii <[email-masked]> wrote:
> > From: Ship Mints <[email-masked]>
> > Date: Wed, 30 Apr 2025 10:09:36 -0400
> > Cc: [email-masked], [email-masked], [email-masked]
> > 
> > On Wed, Apr 30, 2025 at 10:06 AM Eli Zaretskii <[email-masked]> wrote:
> > 
> >  >  But this code is not general enough for that.  It was written
> >  >  explicitly for additional optional values for ring-bell-functions, as
> >  >  the doc strings say.
> >  > 
> >  > The prototype was derived from private code used in this narrow case but 
> > if we're going to adopt the
> >  > functionality in core, I think we go the extra mile to make it 
> > appropriately general.
> > 
> >  But then the entire implementation should be revisited and reviewed
> >  with that generality in mind.  So please let's talk about that.  Could
> >  you or someone else please describe what general features are meant to
> >  be implemented based on this functionality?
> > 
> > I think of face flashing as the face equivalent to 
> > 'pulse-momentary-highlight-region'.

> Then why don't we use the functions defined in pulse.el in the first
> place? why invent a whole new family of functions,l face attributes,
> etc.?

pulse.el is somewhat complex for me; as you pointed, the ring bell must
wait until `sleep-for' ends, pulse.el uses `run-with-timer' which will
not stop/freeze Emacs.

I wasn't sure how to reuse pulse.el code for that
(and I'm not sure if it is slow than this implementation).

And the echo-area function will ensure all the echo-area/minibuffer
background face will flash; pulse.el will only flash a region in the
minibuffer instead the whole buffer face.

The code is intended to flash/pulse `any face'.

If it is required to move this code for general purposes.
I'm not sure where to move it, maybe to pulse.el?

But of course, the ring-bell functions must be kept but be rewritten for
use that feature.

-- 
                                          - E.G via GNU Emacs and Org.