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: emacs master + org Wrong type argument: number-or-marker-p Date: Thu, 4 Aug 2022 16:07:48 +0000 Message-ID: References: <83o7x04kul.fsf@gnu.org> <87tu6sa5uf.fsf@yahoo.com> <83czdg4h7p.fsf@gnu.org> <87k07oa2ie.fsf@yahoo.com> <837d3o4eyn.fsf@gnu.org> <87v8r88kna.fsf@yahoo.com> <831qtw4btm.fsf@gnu.org> <83mtck2llb.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="9730"; mail-complaints-to="usenet@ciao.gmane.io" Cc: luangruo@yahoo.com, monnier@iro.umontreal.ca, gregory@heytings.org, mattiase@acm.org, philipk@posteo.net, silent2600@gmail.com, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Aug 04 18:13:49 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 1oJdTp-0002Nq-S9 for ged-emacs-devel@m.gmane-mx.org; Thu, 04 Aug 2022 18:13:49 +0200 Original-Received: from localhost ([::1]:35706 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oJdTo-0007KV-T2 for ged-emacs-devel@m.gmane-mx.org; Thu, 04 Aug 2022 12:13:48 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34776) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oJdOB-0007ae-6V for emacs-devel@gnu.org; Thu, 04 Aug 2022 12:08:00 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:31870 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1oJdO8-0005gb-Rf for emacs-devel@gnu.org; Thu, 04 Aug 2022 12:07:58 -0400 Original-Received: (qmail 99600 invoked by uid 3782); 4 Aug 2022 16:07:53 -0000 Original-Received: from acm.muc.de (p4fe15d23.dip0.t-ipconnect.de [79.225.93.35]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Thu, 04 Aug 2022 18:07:52 +0200 Original-Received: (qmail 7540 invoked by uid 1000); 4 Aug 2022 16:07:48 -0000 Content-Disposition: inline In-Reply-To: <83mtck2llb.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, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=unavailable 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:293073 Archived-At: Hello, Eli. On Thu, Aug 04, 2022 at 16:18:40 +0300, Eli Zaretskii wrote: > > Date: Thu, 4 Aug 2022 10:18:21 +0000 > > Cc: Po Lu , monnier@iro.umontreal.ca, > > gregory@heytings.org, mattiase@acm.org, philipk@posteo.net, > > silent2600@gmail.com, emacs-devel@gnu.org > > From: Alan Mackenzie > > > > And what if someone wants to write a fontification function whose > > > > results depend, for example, on a single character at a known position > > > > outside of the accessible region? That cannot result in a freeze > > > I cannot reason about something as abstract and theoretical. > > CC Mode is such a mode, though it depends on more than just a single > > character outside the accessible region. > And what catastrophic results does the current master produce with CC > Mode, when you edit files with very long lines, due to this narrowing? This isn't yet known. There is no evidence, no argument even, that such "catastrophic results" won't occur. Wrong fontification is already evident. [ .... ] > > Has anybody asked the question why is font-lock so slow on these long > > lines? The answer is surely not the use of widen and > > narrow-to-region. A piece of text takes exactly as long to fontify > > when its buffer is narrowed as when it is not. > Of course. But the problem is that font-lock was found to examine > much larger portions of the buffer than the ones to which we now > restrict it in those cases. And the speedup is evident. What does > that tell you? That you can speed things up by omitting part of the work. Possibly that font-lock is insufficiently flexible in what it offers major modes. > > I think (though I have not analysed it any further) the cause of this > > slowness is font-lock fontifying from BOL to EOL. That's an awful lot of > > fontification if we have long lines. If this is the case, a better > > solution to the problem would be to restrict the font-locked region to, > > say, the visible line. Or to the window. Or something like that. > That's what we do: we restrict it to somewhat more than fits in the > window. I meant doing this in a way which doesn't introduce bugs. Something like amending/replacing font-lock-extend-region-wholelines, for example. > But the files in questions have lines that are much longer than that. > > The current "solution" breaks things, because it doesn't fix what is > > broken and fixes what isn't broken. In particular, it breaks CC Mode > > when there are long lines in a buffer. > No, the current solution sacrifices some of the font-lock correctness > .... "Sacrificing correctness" sounds like a euphemism for tolerating bugs. > .... to give us a usable Emacs. I say it's a justified tradeoff. Better would be to get a usable Emacs without introducing bugs. CC Mode (amongst other packages) is a victim of this tradeoff, yet I wasn't alerted to the decision being taken, I just found out about it by chance. I CARE about the correctness of CC Mode, and have spent a lot of time and energy over the last 20 years tending to it. Now it's being sacrificed, even if only in an edge case, with barely a second thought - along with an unknown number of other packages. > > > Anyway, this discussion doesn't lead anywhere. We have decided to > > > try this way of solving a long-standing problem in Emacs, and no > > > amount of talking will cause us to change that decision. Only code > > > that makes font-lock and syntax.c significantly faster, and/or > > > reports about specific issues (as opposed to general > > > semi-philosophical concerns) caused by these changes, can affect > > > both the implementation of these changes and our future decisions > > > about its defaults. > > I don't want to be provocative, but having opcodes that only work > > most of the time rather than all of the time isn't a mere > > semi-philosophical concern. > They work all the time when there are no long lines. They don't work all the time, since sometimes there are long lines. > When there are long lines, they work slightly less correctly, .... Correctness doesn't admit of degrees. Something is either correct, or it's incorrect. `widen' doesn't work at all in the pertinent circumstances. It is as though somebody unconnected with a project steals into the source code and secretly removes `(widen)' and `(narrow-to-region ...)' without telling the maintainer, who'll likely have to debug things later. > .... and the lack of correctness is only visible in the fontifications. That hasn't been shown. Arbitrary Lisp can be executed through fontification-functions and all the hooks in font-lock.el and jit-lock.el. > Hardly a disaster, if you keep in mind that one of the previously > recommended solutions was to turn on so-long-mode, which turns off > font-lock (to tell nothing of the not-so-distant past, when Emacs > didn't have font-lock at all). Do these long lines occur in modes where fontification is important? I don't know as I haven't seen any test files. > IOW, it's a tradeoff: we give up some of the font-lock correctness, > and in return gain a usable Emacs. -- Alan Mackenzie (Nuremberg, Germany).