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: Make scroll-{up, down} move point to {start, end} of newly visible text Date: Fri, 11 Aug 2023 14:30:11 +0300 Message-ID: <838rahhl4s.fsf@gnu.org> References: <83mszb0w9l.fsf@gnu.org> <83il9y22e8.fsf@gnu.org> <834jli1uhb.fsf@gnu.org> <83msz7wez5.fsf@gnu.org> <87h6pcj5x1.fsf@dataswamp.org> <83y1iln1up.fsf@gnu.org> <87wmy4lyol.fsf@dataswamp.org> <837cq2iyyw.fsf@gnu.org> <87zg2yu600.fsf@dataswamp.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="27521"; 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 Fri Aug 11 13:30:19 2023 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 1qUQLQ-0006tf-Nx for geh-help-gnu-emacs@m.gmane-mx.org; Fri, 11 Aug 2023 13:30:16 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qUQKw-0002Sl-OF; Fri, 11 Aug 2023 07:29:46 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qUQKu-0002Ru-JB for help-gnu-emacs@gnu.org; Fri, 11 Aug 2023 07:29:44 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1qUQKt-0003oB-IZ for help-gnu-emacs@gnu.org; Fri, 11 Aug 2023 07:29:44 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org; s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date: mime-version; bh=15uM/JQVy9ywwNkIVksEI2qr2Llttc1yRNQVEr/eU9I=; b=qc8A+W+inuRy 6x3/Z4YvM8alJOAE14/Dx6lLyIQbcXo9s6KT9nbP6cJY4ZOwIlEqcenCPd4S9avxSjV7sHWreWhl5 Ti0M79YVY+BM6IKZO69qhXIpEQi98mPFR72NFv4RE1mVR9EaNyOt5bQDw58voG0gX2+0SehUAuOTN mQVo6jgt+6/5XIjdz2+xaC0oLV3kK4rvMNsr/fFjLuRz5MPpxsm2ioKHgiXgMbbxzWaFNUR9Tljw3 yrRUqmR0fzOhXzZtFMR2bcwEj9Wdiais9aMYlnmmjtAECzLga7oJK6PVadoGHTkeVQXWEtE+XhLNt Jp2YrQUNqbcELR4ZwATNgA==; In-Reply-To: <87zg2yu600.fsf@dataswamp.org> (message from Emanuel Berg on Thu, 10 Aug 2023 20:06:23 +0200) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 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-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:144751 Archived-At: > From: Emanuel Berg > Date: Thu, 10 Aug 2023 20:06:23 +0200 > > Eli Zaretskii wrote: > > >>> I think your mental model of how scrolling works in Emacs > >>> is not accurate. [...] > >> > >> That can be helped, > >> > >> (defun scroll-up-1 () > >> (interactive) > >> (scroll-down 1) ) > >> > >> (defun scroll-down-1 () > >> (interactive) > >> (scroll-up 1) ) > > > > I asked what you thought happens in Emacs as part of the > > call to scroll-down. If you think that function actually > > scrolls the text in the window, then that's not what happens > > in reality. The scrolling is performed as part of redisplay, > > after scroll-up exits. > > But it can still be controlled from Elisp. We would have > another function around the scroll function, and that other > function would be used instead. Normally it would just call > the scroll function. Normally - but not always :) We've lost context. This sub-thread began when you said: If one can get the state of scrolling in a window in Elisp one could solve this in Elisp only since then one could write a new scroll function on top of the old, and what it would do is - based on that information - it would either scroll normally or not call the function at all, if scrolling was determined not to make any sense. So now please explain what you mean by "the state of scrolling" and how would you determine that "scrolling does not make any sense"? My point is that "the state of scrolling" (at least my interpretation of that) is only known when the scrolling was already done, by which time it's too late to try to figure out whether "scrolling does not make any sense". That's because Lisp code doesn't compute how to scroll the window, and thus doesn't know what would scrolling yield. The actual scrolling is done by the display engine, in C code.