From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Juri Linkov Newsgroups: gmane.emacs.bugs Subject: bug#61215: 29.0.60; font-lock broken in diff-mode with long lines Date: Mon, 06 Feb 2023 19:15:49 +0200 Organization: LINKOV.NET Message-ID: <86edr2davu.fsf@mail.linkov.net> References: <86lelh6yhq.fsf_-_@mail.linkov.net> <83cz6tz12b.fsf@gnu.org> <86o7qcf2x5.fsf@mail.linkov.net> <83a61vx0jo.fsf@gnu.org> <86bkmbfalm.fsf@mail.linkov.net> <83pmarufgi.fsf@gnu.org> <86ilggc6gn.fsf@mail.linkov.net> <83mt5sq7nr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="32730"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/30.0.50 (x86_64-pc-linux-gnu) Cc: 61215@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Feb 06 18:17:29 2023 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1pP57Q-0008KN-1a for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 06 Feb 2023 18:17:28 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pP57D-0004Lf-S3; Mon, 06 Feb 2023 12:17:15 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pP571-0004Ki-2G for bug-gnu-emacs@gnu.org; Mon, 06 Feb 2023 12:17:06 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pP570-00027y-QA for bug-gnu-emacs@gnu.org; Mon, 06 Feb 2023 12:17:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pP570-0006ZE-8N for bug-gnu-emacs@gnu.org; Mon, 06 Feb 2023 12:17:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 06 Feb 2023 17:17:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61215 X-GNU-PR-Package: emacs Original-Received: via spool by 61215-submit@debbugs.gnu.org id=B61215.167570379725206 (code B ref 61215); Mon, 06 Feb 2023 17:17:02 +0000 Original-Received: (at 61215) by debbugs.gnu.org; 6 Feb 2023 17:16:37 +0000 Original-Received: from localhost ([127.0.0.1]:49767 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pP56a-0006YS-MS for submit@debbugs.gnu.org; Mon, 06 Feb 2023 12:16:36 -0500 Original-Received: from relay8-d.mail.gandi.net ([217.70.183.201]:40493) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pP56Y-0006YA-Tr for 61215@debbugs.gnu.org; Mon, 06 Feb 2023 12:16:35 -0500 Original-Received: (Authenticated sender: juri@linkov.net) by mail.gandi.net (Postfix) with ESMTPSA id 2D2141BF20D; Mon, 6 Feb 2023 17:16:27 +0000 (UTC) In-Reply-To: <83mt5sq7nr.fsf@gnu.org> (Eli Zaretskii's message of "Sun, 05 Feb 2023 20:38:48 +0200") X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:254983 Archived-At: >> If you think the problem is in diff-syntax-fontify-hunk, >> then I could try to find a working workaround local to diff-mode. > > Yes, now this is something for diff-mode to solve: it shouldn't assume > that it will always be able to go to the beginning and the end of a > hunk, because narrowing could interfere with that. Diff-mode should > have some fallback plan for these cases. After debugging I discovered that the problem is not caused by font-lock in diff-mode. The problem is in easy-mmode-define-navigation. diff-mode uses it to navigate diff hunks. It supports such a feature that when the user narrowed the diff buffer, it puts narrowing back after moving to the next hunk. But this fails when the diff buffer is narrowed automatically by long-line-optimizations. If there is no way to distinguish whether the narrowing is automatic by long-lines or manual by the user, this patch fixes the problem. It works without errors, and even highlights first 250000 characters of the long line: diff --git a/lisp/emacs-lisp/easy-mmode.el b/lisp/emacs-lisp/easy-mmode.el index 5721470ad0d..d9176061434 100644 --- a/lisp/emacs-lisp/easy-mmode.el +++ b/lisp/emacs-lisp/easy-mmode.el @@ -782,7 +782,10 @@ easy-mmode-define-navigation (when-narrowed (lambda (body) (if (null narrowfun) body - `(let ((was-narrowed (prog1 (buffer-narrowed-p) (widen)))) + `(let ((was-narrowed + (prog1 (unless (long-line-optimizations-p) + (buffer-narrowed-p)) + (widen)))) ,body (when was-narrowed (funcall #',narrowfun))))))) (unless name (setq name base-name))