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: bug-reference-prog-mode slows down CC Mode's scrolling by ~7% Date: Thu, 2 Sep 2021 16:57:19 +0000 Message-ID: References: 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="13486"; mail-complaints-to="usenet@ciao.gmane.io" Cc: emacs-devel@gnu.org To: Stefan Monnier Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Sep 02 18:58:27 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 1mLq2k-0003I8-9b for ged-emacs-devel@m.gmane-mx.org; Thu, 02 Sep 2021 18:58:26 +0200 Original-Received: from localhost ([::1]:44988 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mLq2j-0004qf-5U for ged-emacs-devel@m.gmane-mx.org; Thu, 02 Sep 2021 12:58:25 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:51298) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mLq1z-00044n-0F for emacs-devel@gnu.org; Thu, 02 Sep 2021 12:57:39 -0400 Original-Received: from colin.muc.de ([193.149.48.1]:61144 helo=mail.muc.de) by eggs.gnu.org with smtp (Exim 4.90_1) (envelope-from ) id 1mLq1x-0006AD-0B for emacs-devel@gnu.org; Thu, 02 Sep 2021 12:57:38 -0400 Original-Received: (qmail 38575 invoked by uid 3782); 2 Sep 2021 16:57:20 -0000 Original-Received: from acm.muc.de (p4fe15b97.dip0.t-ipconnect.de [79.225.91.151]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Thu, 02 Sep 2021 18:57:20 +0200 Original-Received: (qmail 6443 invoked by uid 1000); 2 Sep 2021 16:57:19 -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:273713 Archived-At: Hello, Stefan. On Wed, Sep 01, 2021 at 16:59:02 -0400, Stefan Monnier wrote: > > However, this mechanism is rendered ineffective if a second function > > is add-hook'd onto jit-lock-functions. Maybe this could be fixed, > > though it looks difficult. > I think we can "easily" handle this specific case if the > `bug-reference-prog-mode` function is added to the end of the hook > rather than to its beginning and use a patch along the lines of the > one below. Yes. How about an optional parameter to jit-lock-register meaning "put this function at the beginning of jit-lock-functions", with the default meaning put the function at the end? I haven't tried it, but I don't think the patch below is quite enough. I think it needs a (setq beg (min tight-beg beg)), or something like that, to prevent TIGHT-BEG being set back to the original value of BEG in the body of jit-lock--run-functions. > I don't know if it would make any difference to the 7% figure. I'm sure it would. That slow down comes from Jit Lock fontifying the statement straddling a jit chunk border twice. > Stefan > diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el > index a905936b6b9..14d09c979b9 100644 > --- a/lisp/jit-lock.el > +++ b/lisp/jit-lock.el > @@ -390,7 +390,7 @@ jit-lock--run-functions > 'jit-lock-functions > (lambda (fun) > (pcase-let* > - ((res (funcall fun beg end)) > + ((res (funcall fun (or tight-beg beg) (tight-end end))) > (`(,this-beg . ,this-end) > (if (eq (car-safe res) 'jit-lock-bounds) > (cdr res) (cons beg end)))) -- Alan Mackenzie (Nuremberg, Germany).