Subject: bug#74700: [PATCH] Revert Dired buffer when clicking on last segment of directory name

From: Michael Heerdegen <[email-masked]>
Date: Wed, 25 Dec 2024 00:39:10 +0100

Visuwesh <[email-masked]> writes:

> [திங்கள் டிசம்பர் 23, 2024] Michael Heerdegen wrote:
>
> > Hello,
> >
> > a user on emacs-help (Dieter, CC'd) mentioned that in contrast to
> > hitting g,
> > reverting with this new method loses the position of point, instead,
> > point is repositioned at the beginning of the buffer.  And I agree that
> > this is not the optimal behavior.  Can we maybe improve this?
> >
>
> I didn't notice this, thanks for bringing this to my attention.  This
> also caught another bug that I would not have noticed since I have
> mouse-autoselect-window set non-nil.
> With the following patch, using mouse-2 on the base name reverts the
> buffer without moving point.

Thank you.

> However, using mouse-1 still moves the point to bob.  I believe we
> could fix it by directly binding mouse-1 but I would like to respect
> mouse-1-click-follows-link like the rest of the code in the function.
> I cannot tell how to prevent mouse-1 from moving point reading the
> Info nodes (info "(elisp) Clickable Text") and (info "(emacs) Mouse
> References").  I tried
>
>     (with-selected-window (posn-window (event-start e)) ...)
>
> to no avail.

Was that code line the attempt to fix the problem that the buffer in the
wrong window was being reverted, or the attempt to fix the mouse-1
problem?

> This goes beyond my level of knowledge so someone else will have to
> take care of this.  But please install the following patch because
> without it using mouse-2 on the base name tries to revert the
> current-buffer instead of the dired buffer when the dired buffer is
> not shown in the selected window.

> +++ #<buffer dired.el>
> @@ -2089,8 +2089,10 @@
>             `( mouse-face highlight
>                help-echo "mouse-1: revert this buffer"
>                keymap ,(define-keymap
> -                        "<mouse-2>" #'revert-buffer
> -                        "<follow-link>" 'follow-link
> +                        "<mouse-2>" (lambda (_)
> +                                      (interactive "@e")
> +                                      (revert-buffer))
> +                        "<follow-link>" 'mouse-face

I don't know how to fix the mouse-1 problem in a sensible way either.
Does anyone?

(And I think in this version the "e" code in `interactive' isn't
significant - but let's first see if we can improve the behavior even
more.)

Thx,

Michael.