From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.devel Subject: Re: [PATCH] Re: cc-mode fontification feels random Date: Tue, 31 Aug 2021 10:54:23 +0000 Message-ID: References: <835yvmka50.fsf@gnu.org> <9377d9ec-a3e5-ceea-8a9a-523a420f13f7@dancol.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="39266"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Eli Zaretskii , Daniel Colascione , emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue Aug 31 12:55:21 2021 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 1mL1QG-000A3f-SO for ged-emacs-devel@m.gmane-mx.org; Tue, 31 Aug 2021 12:55:20 +0200 Original-Received: from localhost ([::1]:57204 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mL1QE-0004Me-Q1 for ged-emacs-devel@m.gmane-mx.org; Tue, 31 Aug 2021 06:55:18 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40954) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mL1PQ-0003gh-Bl for emacs-devel@gnu.org; Tue, 31 Aug 2021 06:54:28 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:29850 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1mL1PO-0007Ff-3I for emacs-devel@gnu.org; Tue, 31 Aug 2021 06:54:28 -0400 Original-Received: (qmail 49948 invoked by uid 3782); 31 Aug 2021 10:54:24 -0000 Original-Received: from acm.muc.de (p4fe158c5.dip0.t-ipconnect.de [79.225.88.197]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Tue, 31 Aug 2021 12:54:23 +0200 Original-Received: (qmail 5157 invoked by uid 1000); 31 Aug 2021 10:54:23 -0000 Content-Disposition: inline In-Reply-To: X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.1; envelope-from=acm@muc.de; helo=mail.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action 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:273573 Archived-At: Hello, Stefan. On Mon, Aug 30, 2021 at 16:11:18 -0400, Stefan Monnier wrote: > > Because good defaults matter, and if we have proper input preemption of > > stealth JIT working, there should be no downside. > `jit-lock-stealth-time` defaults to nil (i.e. stealth fontification is > disabled by default) for a good reason: it used to be enabled. > The known downsides are: > - we don't have good input preemption > - it eats up your battery with no clear benefit > [ Because you end up re-fontifying the whole rest of the buffer after > every buffer modification. ] Ah, so that's why stealth was disabled by default - the battery. For my current project (finding CC Mode "found types") stealth fontification is not ideal - what I need is a single pass through the whole buffer to detect the types, and that should be as fast as possible. The current stealth fontification is not fast (it doesn't need to be) and carries on working until Emacs is shut down. So, it seems I want something like stealth, but not quite. How about, say jit-lock-single-fontification - it would apply to individual buffers only, would scan through the buffer precisely once, and would do just enough 500-byte chunks at at time to take 0.05 seconds (configurable). On my machine in C Mode, approximately 100 chunks are fontified per second. So if we had jit-lock-single-nice at 0.1 seconds, the time taken to scan xdisp.c would be approximately 1 to 1.5 minutes. On a smaller file, say syntax.c (a tenth of the size) it would take 5 - 10 seconds. This is barely worse than context fontification, and would only happen at mode start up. > If we want to keep the buffers fully fontified, then it's crucial to make > sure every tiny buffer modification doesn't force re-fontifying most of the > rest of the buffer. Yes. This feels like a difficult problem, otherwise it would have been done a long time ago. > Stefan -- Alan Mackenzie (Nuremberg, Germany).