From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Eli Zaretskii Newsgroups: gmane.emacs.devel Subject: Re: Scrolling commands and skipping redisplay, was: Re: emacs rendering comparisson between emacs23 and emacs26.3 Date: Fri, 17 Apr 2020 20:35:18 +0300 Message-ID: <83o8rqaucp.fsf@gnu.org> References: <20200403174757.GA8266@ACM> <83blo7v68b.fsf@gnu.org> <1845d7aa-9ae4-3d95-6a30-c7b1d8d8adec@gmx.at> <83a73qt6zs.fsf@gnu.org> <97c4254e-ff43-8402-3645-f713c408c245@gmx.at> <83y2r9syby.fsf@gnu.org> <20200405195753.GG5049@ACM> <542b48ba-4dfa-820f-ba50-4b147ab6d8e2@yandex.ru> <0a5f70aa-4985-8f8d-81d6-6ac4a60a94f9@yandex.ru> <838sj8sphk.fsf@gnu.org> <834ktwsmfw.fsf@gnu.org> <83imibqsmm.fsf@gnu.org> <478c2aab-a5fc-61c2-02e2-2d9846b95273@yandex.ru> <83v9m9nltx.fsf@gnu.org> <83tv1rn8fx.fsf@gnu.org> <4f8bb277-b376-97bf-8539-799688d8e66d@yandex.ru> <83eesvmj15.fsf@gnu.org> <6eec7f68-770e-b3b1-4627-6222f3ef7216@yandex.ru> <83ftd9kwlu.fsf@gnu.org> <1de9d24f-eeb7-7d0a-3768-4baba4365066@yandex.ru> <83zhbcdmyi.fsf@gnu.org> <61f565cd-4fee-d48c-a9ef-b78419b3d058@yandex.ru> <83wo6ed4kb.fsf@gnu.org> <464b5639-7790-fdbc-b519-22a6b0e8c016@yandex.ru> Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="93607"; mail-complaints-to="usenet@ciao.gmane.io" Cc: acm@muc.de, rrandresf@gmail.com, emacs-devel@gnu.org, rms@gnu.org, rudalics@gmx.at To: Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Apr 17 19:36:34 2020 Return-path: Envelope-to: ged-emacs-devel@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 1jPUuo-000ODw-LN for ged-emacs-devel@m.gmane-mx.org; Fri, 17 Apr 2020 19:36:34 +0200 Original-Received: from localhost ([::1]:50100 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jPUun-0003aR-KU for ged-emacs-devel@m.gmane-mx.org; Fri, 17 Apr 2020 13:36:33 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:42212) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jPUtu-0002vM-HY for emacs-devel@gnu.org; Fri, 17 Apr 2020 13:35:39 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:41639) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1jPUtt-0006Fp-PL; Fri, 17 Apr 2020 13:35:37 -0400 Original-Received: from [176.228.60.248] (port=3491 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:RSA_AES_256_CBC_SHA1:256) (Exim 4.82) (envelope-from ) id 1jPUtm-0005ox-6d; Fri, 17 Apr 2020 13:35:30 -0400 In-Reply-To: <464b5639-7790-fdbc-b519-22a6b0e8c016@yandex.ru> (message from Dmitry Gutov on Fri, 17 Apr 2020 20:04:04 +0300) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:247187 Archived-At: > Cc: acm@muc.de, rudalics@gmx.at, rrandresf@gmail.com, rms@gnu.org, > emacs-devel@gnu.org > From: Dmitry Gutov > Date: Fri, 17 Apr 2020 20:04:04 +0300 > > 1. (setq scroll-conservatively 1) > > 2. Visit xdisp.c. > > 3. Lean on C-n. > > 4. From time to time, you will see point jump into the middle of the > screen, when font-lock takes too long, apparently (or maybe it > corresponds to GC pauses). > > This shouldn't happen because next-line only moves by one line. And it doesn't. What happens is that Emacs is sometimes unable to keep up with input, so when it comes to displaying the next screenful, point is already more than 1 line below the window's end. So Emacs recenters. That's why the special value of 101 was introduced: so that this recentering never happens. > >> In any case, if there is a way to dynamically detect these cases and > >> disable redisplay skipping for them, I'd like to try that out. > > > > Yes, jit-lock-defer-time is that way. But you already know that. > > No, it speeds up redisplay. It doesn't make *sure* that redisplay is not > skipped. > > To do that, need to modify the condition of skipping redisplay. Adding such a condition would be against Emacs design, which enters redisplay only when Emacs is idle. As long as Emacs is not idle, redisplay will be skipped, that's how Emacs is designed. > > If that's not what you meant, then what exactly would you like to be > > able to detect? The move_it_* functions are the entry point to the > > display simulation code, and they are used all over the place. > > Perhaps detect the cases when move_it_* was used inside the command's > implementation? > > >> Even more if there was a way to put the results of "simulated redisplay" > >> to use in the "real" redisplay later. > > > > That happens automatically, since the 'fontified' property they > > produce is left on the buffer text. > > That might be sufficient if we assume that font-lock is always the > slowest part of redisplay (for some commands it might not always be > true, but I'm guessing here). Nothing else can be kept from the move_it_* phase, because the command that is running might not yet have finished, and so not all of the changes that affect display are known. > But with that assumption, the extra condition of not skipping redisplay > could be simplified (?) to only checking whether the current screen has > been fontified already (i.e. 'fontified' is non-nil). If it's fontified, > we won't skip redisplay. I don't think forcing redisplay in the way that you suggest is a good idea, see above.