From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Gregory Heytings Newsgroups: gmane.emacs.devel Subject: Re: Major modes using `widen' is a good, even essential, programming practice. Date: Sun, 07 Aug 2022 13:31:05 +0000 Message-ID: <6ae35c9306ade07b4c45@heytings.org> References: Mime-Version: 1.0 Content-Type: text/plain; format=flowed; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="7401"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 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 15:32:14 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 1oKgO6-0001kT-0Y for ged-emacs-devel@m.gmane-mx.org; Sun, 07 Aug 2022 15:32:14 +0200 Original-Received: from localhost ([::1]:40462 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oKgO5-0005Q9-3p for ged-emacs-devel@m.gmane-mx.org; Sun, 07 Aug 2022 09:32:13 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:50136) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oKgN4-00047D-Hj for emacs-devel@gnu.org; Sun, 07 Aug 2022 09:31:10 -0400 Original-Received: from heytings.org ([95.142.160.155]:41324) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oKgN2-0000WJ-85 for emacs-devel@gnu.org; Sun, 07 Aug 2022 09:31:10 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=heytings.org; s=20220101; t=1659879066; bh=Qw3ENyZNwMICUglJf26R4tB+etNr8t6W08VbC2pm+Qw=; h=Date:From:To:cc:Subject:In-Reply-To:Message-ID:References:From; b=CNRtcsSec7TFgvkjX0Vptt3nNXtfbzLjkPb0K5DAy2dh3GuTpWqSvvO8D2NIcxYBx gzkt79mq2RGzIvcH5yATdxNPXnAduOJf1AkoIZLsZwjZAMFUVBkRRimmjnQTsrFO3O GR0W6MVX0BHDtlpKbFt7w7G00Xs4IrKM6I0gcra2IUkOcrvHCAXfR4S+Oi5nPVQShz tS2eXIHyufqhcDy9jSiub+z3NwzdNrX6GeX4AiWCp7anuXyxhMWOgpEY826GgJuWpD DdV615DwPe3EqsPSVt5Fa/fKO6u4PlnaJ3JDI3D33BQ5NMDW2nyBbhTJkQnPUYUJZa eAhdttVIao/tA== In-Reply-To: Received-SPF: pass client-ip=95.142.160.155; envelope-from=gregory@heytings.org; helo=heytings.org X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action 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:293200 Archived-At: > > Major modes, like all Emacs Lisp programs, have, by design, access to > the full range of Emacs's facilities. Should it make your task more > difficult (and I don't see that it does), that's your problem, not the > major modes' maintainers'. > I fear it is not my problem, no. jit-lock-functions is an API, with a contract. CC Mode decided to break that contract. It is wrong that "arbitrary Lisp can be executed through fontification-functions", as you said earlier. A function called from fontification-functions isn't supposed to download a file, or to send an email, or to change a user option, or to remove or create a file, or to remove or insert text in the buffer, or to kill Emacs or a frame or a window or the current buffer, or to change the window layout, and so on and so forth. So far breaching that contract has not posed major problems, except of course for CC Mode users, who had to bear its sluggishness. We now have a new feature which assumes, and rightly so, that this contract is obeyed. This breaks CC Mode. >From where I stand, there are two options here: either CC Mode disables the new feature (which is, on purpose, 100% backward compatible), or CC Mode is fixed to obey the jit-lock-functions contract, and to become compatible with the new feature (which will likely also, by side-effect and as a bonus, fix the aforementioned sluggishness).