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: cc-mode fontification feels random Date: Sun, 6 Jun 2021 14:19:00 +0000 Message-ID: References: <86a85d26-75c0-e4a3-e8d3-244c5346dd3a@dancol.org> <83bl8ji4sw.fsf@gnu.org> <837dj7i2mh.fsf@gnu.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="20090"; mail-complaints-to="usenet@ciao.gmane.io" Cc: dancol@dancol.org, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Jun 06 16:19:44 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 1lptcr-0004wE-Lx for ged-emacs-devel@m.gmane-mx.org; Sun, 06 Jun 2021 16:19:41 +0200 Original-Received: from localhost ([::1]:46098 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lptcq-0000dO-Oi for ged-emacs-devel@m.gmane-mx.org; Sun, 06 Jun 2021 10:19:40 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:45298) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lptcH-0008OA-ES for emacs-devel@gnu.org; Sun, 06 Jun 2021 10:19:05 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:21470 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1lptcF-0003Is-Bw for emacs-devel@gnu.org; Sun, 06 Jun 2021 10:19:05 -0400 Original-Received: (qmail 96831 invoked by uid 3782); 6 Jun 2021 14:19:00 -0000 Original-Received: from acm.muc.de (p2e5d5696.dip0.t-ipconnect.de [46.93.86.150]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 06 Jun 2021 16:19:00 +0200 Original-Received: (qmail 7710 invoked by uid 1000); 6 Jun 2021 14:19:00 -0000 Content-Disposition: inline In-Reply-To: <837dj7i2mh.fsf@gnu.org> 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:270482 Archived-At: Hello, Eli. On Sun, Jun 06, 2021 at 15:44:38 +0300, Eli Zaretskii wrote: > > Date: Sun, 6 Jun 2021 12:27:05 +0000 > > Cc: dancol@dancol.org, emacs-devel@gnu.org > > From: Alan Mackenzie > > > AFAIR, the way to tell JIT font-lock that a chunk of text was already > > > fontified is to set the 'fontified' property on that text. > > Sorry, I was unclear. I was thinking of a signal from jit-lock to the > > major mode, indicating that background fontification had been completed. > > CC Mode could react to this by fontifying all occurrences in the buffer > > of "newly found" types. Or something like that. > Sorry, I don't understand (probably because I missed the beginning of > this discussion): what do you mean by "background fontification", and > what does it mean for that to have been "completed"? I'm afraid we > are not on the same page wrt JIT font-lock related terminology. CC Mode maintains a simple table of a buffer's types, which it uses to fontify the same types when they occur again in the buffer. Daniel's main problem was that with JIT fontification, the occurrences of foo get "fontified" to default face before foo has been entered into the table. This happens because jit-lock doesn't scan the buffer from (point-min). By "background fontification" I meant stealth fontification (and should have said so). This is, sadly, disabled by default. If it were to be enabled again, I was envisaging some sort of signal from jit-lock stealth fontification when the stealth had determined a buffer was completely fontified. Reacting to this signal, CC Mode could then fontify all the types which the stealth had caused to be added to the CC Mode table. I no longer think this is a good idea. > > Or maybe the fontification could be done immediately after parsing a new > > type. > Parsing by whom? by CC Mode? Yes. By CC Mode's fontification detecting a symbol, foo, must be a type, and entering it into its internal table. I am thinking that immediately following, CC Mode could scan the entire buffer and refontify occurrences of foo which hadn't yet got font-lock-type-face. > If so, CC Mode parsing is itself part of fontification, AFAIU, and is > invoked by the JIT font-lock machinery. So I'm confused wrt what you > are looking for. I was looking for jit stealth locking to detect when it had completely fontified a buffer (i.e. the `fontified' property was on the entire buffer) and do something like calling a major mode function. As I said, I don't think this is a good idea, any more. -- Alan Mackenzie (Nuremberg, Germany).