Subject: Re: bug#32848: 26.1; follow-mode cursor move breaks with frame-resize-pixelwise

From: Alan Mackenzie <[email-masked]>
Date: Sun, 30 Sep 2018 11:02:15 +0000

Hello, Allen and Eli.

I've just committed the following change to the emacs-26 branch.  It is
a workaround, but is safe, and should enable you (Allen) to carry on
using follow mode.

Eli and I have a more satisfactory fix planned for master.

diff --git a/lisp/follow.el b/lisp/follow.el
index fd397c077b..7942901bb4 100644
--- a/lisp/follow.el
+++ b/lisp/follow.el
@@ -438,7 +438,10 @@ follow-mode
         (setq pos-visible-in-window-group-p-function
               'follow-pos-visible-in-window-p)
         (setq selected-window-group-function 'follow-all-followers)
-        (setq move-to-window-group-line-function 'follow-move-to-window-line))
+        (setq move-to-window-group-line-function 'follow-move-to-window-line)
+
+        ;; Crude workaround for bug #32848 for the emacs-26 branch, 2018-09-30.
+        (setq-local make-cursor-line-fully-visible nil))
 
     ;; Remove globally-installed hook functions only if there is no
     ;; other Follow mode buffer.
@@ -451,6 +454,9 @@ follow-mode
 	(remove-hook 'post-command-hook 'follow-post-command-hook)
 	(remove-hook 'window-size-change-functions 'follow-window-size-change)))
 
+    ;; Second part of crude workaround for bug #32848.
+    (kill-local-variable 'make-cursor-line-fully-visible)
+
     (kill-local-variable 'move-to-window-group-line-function)
     (kill-local-variable 'selected-window-group-function)
     (kill-local-variable 'pos-visible-in-window-group-p-function)

-- 
Alan Mackenzie (Nuremberg, Germany).

On Thu, Sep 27, 2018 at 11:06:20 +0300, Eli Zaretskii wrote:
> > From: Allen Li <[email-masked]>
> > Date: Wed, 26 Sep 2018 15:49:15 -0700

> > Moving the cursor off the bottom of the window with follow-mode enabled
> > doesn't move to the other window properly if frame-resize-pixelwise is
> > set and a partial line is visible.

> It seems like setting make-cursor-line-fully-visible to nil solves the
> problem.  Could you try that for a while, and see if this has any
> adverse effects?

> Alan and Anders: does setting this variable to nil in buffers under
> follow-mode sounds like an okay solution?  It might mean that in some
> rare cases the user will see the current line only partially (only in
> the last window in the group).  If you think this is OK, we could
> arrange for that variable to be set locally as part of turning on
> follow-mode.

> A more complex solution would be to allow
> make-cursor-line-fully-visible have a value that is a function, which
> follow-mode will define in a way that will only allow
> partially-visible current line in a window if it is not the last one
> in the order returned by follow-all-followers.

> Comments?