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.devel Subject: Re: Major modes using `widen' is a good, even essential, programming practice. Date: Sun, 07 Aug 2022 18:13:47 +0300 Message-ID: <83y1w0w0gk.fsf@gnu.org> References: <6ae35c9306ade07b4c45@heytings.org> <835yj4xhh7.fsf@gnu.org> Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5400"; mail-complaints-to="usenet@ciao.gmane.io" Cc: gregory@heytings.org, emacs-devel@gnu.org To: Alan Mackenzie Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Sun Aug 07 17:14:38 2022 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 1oKhzC-0001F7-1F for ged-emacs-devel@m.gmane-mx.org; Sun, 07 Aug 2022 17:14:38 +0200 Original-Received: from localhost ([::1]:44166 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oKhzA-0007nH-J9 for ged-emacs-devel@m.gmane-mx.org; Sun, 07 Aug 2022 11:14:36 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:39536) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oKhyd-00076k-MJ for emacs-devel@gnu.org; Sun, 07 Aug 2022 11:14:03 -0400 Original-Received: from fencepost.gnu.org ([2001:470:142:3::e]:55774) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oKhyc-0007g1-KI; Sun, 07 Aug 2022 11:14:02 -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=987ZPWeheKwXVBabb4rfjrPNllANMHxewQxejn4P9Hk=; b=KU4xOAVXGFhb 0aw3Hz33+Q5MJREA7/PR4O15beA9+ODXwpfd4Se8Tjb4iah0TtVIIcijYbwSLHpmK6GkXi5wv/LCC Rw0GGuZ7X3cbWyScApPjbOoHjE4I4RBGnmEOt6YByvpD7xDAJKEKDxaTyGSwdTxp0srcoB5IY4r2C FNHuZ1hcvi9NBaUftQ1PPPZ3b1YrsMTAw9f/ttqIBqYefdN/z8uDeK1GUNuoIJn8hucsjIAZMhvHy FrLp0Jl1MCc4CnfSktebuAqzMdwoBknF0gOi85X7VvZa0u9oKV3dLJDKtlo94hxh82zKUrRfGanMs Kv8UXV1fIG0b+wSuTvNLsQ==; Original-Received: from [87.69.77.57] (port=2016 helo=home-c4e4a596f7) by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oKhyc-0006xL-3p; Sun, 07 Aug 2022 11:14:02 -0400 In-Reply-To: (message from Alan Mackenzie on Sun, 7 Aug 2022 14:59:06 +0000) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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:293213 Archived-At: > Date: Sun, 7 Aug 2022 14:59:06 +0000 > Cc: gregory@heytings.org, emacs-devel@gnu.org > From: Alan Mackenzie > > > jit-lock calls the functions with two arguments, BEG and END, and > > expects them to work only on that chunk of text. > > I don't think you really mean that. No, I really do. > Consider the second jit-lock chunk > at the beginning of xdisp.c. Fontifying that chunk involves looking > back 1500 characters before BEG to see that it needs > font-lock-comment-face. You might argue that that information will be > in a cache anyway, but that's not dependable. Either in the cache or in the buffer: the previous chunk was fontified, so its end has the font-lock-comment-face. So you know. > Also, the (BEG END) region will typically get rounded up to whole lines, > again "violating" that chunk. That's a far cry from going to BOB. And if you ask nicely, we could arrange that jit-lock calls you only on line boundaries (unless lines are longer than some reasonable value). > In principle, font-lock needs to look outside of (BEG END). No, it doesn't. A string cannot begin before a beginning of a function, for example. And if you need to go too far, just give up and blame the user who writes such code. It is much better than letting every use of CC Mode wait because once in a blue moon someone could have a very long string.