From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.help Subject: Re: Set-window-vscroll sometimes doesn't work Date: Thu, 22 Oct 2020 19:08:55 +0300 Message-ID: <83imb2kzu0.fsf@gnu.org> References: <72B62847-3F35-412A-9F74-88442A936B19@gmail.com> <83eelvsivm.fsf@gnu.org> <853C8CD1-B58B-4F22-A889-4AB2AEE3DD80@gmail.com> <83imb7qw46.fsf@gnu.org> <66013ADF-731C-4922-8AF7-EAFDBF43C33C@gmail.com> <83ft6bqv0q.fsf@gnu.org> <4F2C1811-940E-4C58-8EE0-37AA3B666E12@gmail.com> <835z77qr3f.fsf@gnu.org> <834kmrq7gy.fsf@gnu.org> <83blgyp4k2.fsf@gnu.org> <4F794407-585E-4C74-85F3-00A668FB9675@gmail.com> <834kmqp1ts.fsf@gnu.org> <835z74ope5.fsf@gnu.org> <1B858755-4CAE-4E06-B867-098B323EF79E@gmail.com> <83h7qnmtq4.fsf@gnu.org> <8C545387-7A95-4B4E-A71E-05949E8A4641@gmail.com> <183EE2A7-4FF5-4888-A6F5-BDE08BD5F482@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="12819"; mail-complaints-to="usenet@ciao.gmane.io" To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Oct 22 18:09:17 2020 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1kVd9Q-0003Ds-S6 for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 22 Oct 2020 18:09:16 +0200 Original-Received: from localhost ([::1]:57888 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVd9P-0000Fh-Rl for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 22 Oct 2020 12:09:15 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:49324) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1kVd8t-0000FN-1r for help-gnu-emacs@gnu.org; Thu, 22 Oct 2020 12:08:43 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:46408) by eggs.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1kVd8s-0002AB-Mp for help-gnu-emacs@gnu.org; Thu, 22 Oct 2020 12:08:42 -0400 Original-Received: from [176.228.60.248] (port=4918 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1kVd8s-0003Pw-6X for help-gnu-emacs@gnu.org; Thu, 22 Oct 2020 12:08:42 -0400 In-Reply-To: <183EE2A7-4FF5-4888-A6F5-BDE08BD5F482@gmail.com> (message from Yuan Fu on Thu, 22 Oct 2020 00:16:04 -0400) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:124635 Archived-At: > From: Yuan Fu > Date: Thu, 22 Oct 2020 00:16:04 -0400 > Cc: help-gnu-emacs@gnu.org > > Ok, I looked at redisplay_window, and it zeros out vscroll if force_start is true, that explains my initial > question. After reading the function, it seems that setting window-start is the primary way to scroll and to > produce the glyph matrix to display. IIUC this is how window-start and vscroll works together in window > redisplay: we have a window-start -> try window -> start_display on window-start -> it_initialize on > window-start -> it->current-y adjusted according to vscroll -> back to try window -> while (it.current_y < > it.last_visible_y): produce glyph rows. This doesn’t seem to be too contradictory, and scrolling by setting > window-start and add sub-line adjustment with vscroll seems to be complaint with the redisplay logic. What > am I missing? You are missing the use cases where the display element that is taller than the normal text is not an image, but something else. For example, text displayed with a very large font. In this other use case, starting display with a non-zero vscroll when the Lisp program forced window-start will produce text part of which cannot be read, because too much of the characters is off-screen. This is why setting window-start zeroes out vscroll: Emacs wants to make sure that in this case the entire screen line that starts at window-start will be fully visible.