unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: ynyaaa@gmail.com
To: Eli Zaretskii <eliz@gnu.org>
Cc: 46316@debbugs.gnu.org
Subject: bug#46316: 27.1; wrong horizontal scroll with truncate-lines value t
Date: Sat, 13 Feb 2021 00:41:18 +0900	[thread overview]
Message-ID: <86wnvds38h.fsf@gmail.com> (raw)
In-Reply-To: <835z33n17s.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 07 Feb 2021 21:10:15 +0200")

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: 46316@debbugs.gnu.org
>> From: ynyaaa@gmail.com
>> Date: Mon, 08 Feb 2021 03:54:32 +0900
>> 
>> I only want auto-hscroll-mode to scroll buffer automatically.
>
> It does, when you give it enough information that it should.  When
> your input focus is in another window (the mini-window in the case of
> C-s), I think it would be strange for Emacs to auto-scroll some other
> window.
>
>> If a searched string is not displayed in the window, I might think the
>> searched string does not exist in the buffer.
>
> The searched string _is_ displayed, when you first find it.
>
>> If an image is hidden, I might think the image is a solid color same as
>> the emacs background color.
>
> Just move the cursor and you will see it.
>
> Sorry, I see no problem here, certainly not something that would
> justify complicated triggers for redisplaying a window.

I investigated some more.

#'isearch-update tries to control the hsrcoll using
#'pos-visible-in-window-group-p.
Under the folloing conditions, it returns coordinates as if the point is
at the beginning of a virtual next line.
  (1) the point is the end of the buffer.
  (2) the buffer does not end with a newline.
  (3) the last line is displayed in the window.
  (4) the last line is truncated.
So the calculation is wrong and the hscroll becomes inappropriate.

With a different reason, if isearch started with a large hscroll and the
last match is near the beginning of a line, the hscroll becomes
inapropriate.
For example, evaluate the form below, and type 'C-s a C-s', then the
current point is hidden to the left of the window.
This is because #'isearch-update only checks whether the point is to the
right of the window and does not check whether the point is to the left
of the window.

(let ((buf (generate-new-buffer "tmp")))
  (switch-to-buffer buf)
  (setq truncate-lines t)
  (insert-char ?x 100)
  (save-excursion
    (insert-char ?\n 100)
    (insert ?a)))

Regarding image-mode, a simpler example of the bug is written as below.
The hscroll does not change when the buffer is changed.
Image display, window focus or message is not related.

(let ((buf (generate-new-buffer "tmp")))
  (switch-to-buffer buf)
  (setq truncate-lines t)
  (dotimes (i 200)
    (insert (format ":%03d" i))
    (when (= 0 (% (1+ i) 100)) (insert ?\n)))
  (forward-char -1)
  (sit-for 1)
  (set-window-hscroll nil (window-hscroll))
  (save-excursion
    (forward-char -100)
    (insert-char ?\n 10)
    ))





  reply	other threads:[~2021-02-12 15:41 UTC|newest]

Thread overview: 11+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-02-05  5:08 bug#46316: 27.1; wrong horizontal scroll with truncate-lines value t ynyaaa
2021-02-06 13:01 ` Eli Zaretskii
2021-02-07 15:28   ` ynyaaa
2021-02-07 15:34     ` Eli Zaretskii
2021-02-07 18:54       ` ynyaaa
2021-02-07 19:10         ` Eli Zaretskii
2021-02-12 15:41           ` ynyaaa [this message]
2021-02-13 15:30             ` Eli Zaretskii
2021-02-14 15:43               ` ynyaaa
2021-02-14 18:50                 ` Eli Zaretskii
2021-04-09 16:59                   ` Stefan Kangas

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=86wnvds38h.fsf@gmail.com \
    --to=ynyaaa@gmail.com \
    --cc=46316@debbugs.gnu.org \
    --cc=eliz@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).