Subject: bug#26347: patch for mwheel.el

From: Tak Kunihiro <[email-masked]>
Date: Tue, 4 Apr 2017 09:55:01 +0900

>> During not only horizontal scroll but also vertical scroll,
>> `auto-hscroll-mode' should be disabled by following three aspects.
>> 
>> (1) It should be off during horizontal scroll.  If it is on, scope
>>    jumps randomly when point is at the edge.  Also, since
>>    horizontal scroll does not move point, there will be
>>    inconsistency between point and scope, and the inconsistency
>>    will result in unexpected shift of the scope.
>> 
>> (2) It should be off during vertical scroll.  When a buffer is with
>>    short and long alternative lines, scope jumps from the end of
>>    long line to the end of short line.  Sudden shift of the scope
>>    makes edition of a wide document hard.
> 
> We don't turn off auto-hscroll-mode when scrolling with the horizontal
> or vertical scroll bars, and we don't have the problems you describe
> in those cases.  Why is this case different?

I see your point in regard to (1).  Yes, if `mwheel-scroll’ can scroll right
or left like horizontal-scroll-bar does, turing off auto-hscroll-mode is not
necessary for case (1).  Give me time to understand code of horizontal-scroll-bar.

In regard to (2), let’s say you have a very long line and your point is at the end
of line in a window.  The next line is short and even the end of line is not shown
in the window.  The third line is very long again.

> date & session & stone & remark & date & session & stone & remark\\
> \hline
> April 4, 2017 & a & b & c & April 4, 2017 & a & b & c\\

When you move vertical-scroll-bar down, eventually the long line disappears
above the top of window.  The point moves to the end of the next short line.
As a consequence, you see scope shifted.  The patch tries to keep the scope to
be the same.  To do so, auto-hscroll-mode was set to off.