From unknown Thu Jul 31 07:49:09 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32460: 27.0.50; diff-mode sometimes doesn't refine hunks Resent-From: Juri Linkov Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 16 Aug 2018 21:42:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 32460 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 32460@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.153445566611979 (code B ref -1); Thu, 16 Aug 2018 21:42:02 +0000 Received: (at submit) by debbugs.gnu.org; 16 Aug 2018 21:41:06 +0000 Received: from localhost ([127.0.0.1]:52930 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fqQ0u-000376-UA for submit@debbugs.gnu.org; Thu, 16 Aug 2018 17:41:06 -0400 Received: from eggs.gnu.org ([208.118.235.92]:44107) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1fqQ0s-000369-UH for submit@debbugs.gnu.org; Thu, 16 Aug 2018 17:41:03 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fqQ0m-0007ce-VU for submit@debbugs.gnu.org; Thu, 16 Aug 2018 17:40:57 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:42408) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fqQ0m-0007cX-Rv for submit@debbugs.gnu.org; Thu, 16 Aug 2018 17:40:56 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:36847) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fqQ0m-0000Tp-0L for bug-gnu-emacs@gnu.org; Thu, 16 Aug 2018 17:40:56 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fqQ0i-0007aK-0I for bug-gnu-emacs@gnu.org; Thu, 16 Aug 2018 17:40:55 -0400 Received: from homie-sub3.mail.dreamhost.com ([69.163.253.7]:44685 helo=homiemail-a22.g.dreamhost.com) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1fqQ0h-0007Zh-PA for bug-gnu-emacs@gnu.org; Thu, 16 Aug 2018 17:40:51 -0400 Received: from homiemail-a22.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a22.g.dreamhost.com (Postfix) with ESMTP id 95A06114066 for ; Thu, 16 Aug 2018 14:40:49 -0700 (PDT) Received: from localhost.linkov.net (m91-129-110-6.cust.tele2.ee [91.129.110.6]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: jurta@jurta.org) by homiemail-a22.g.dreamhost.com (Postfix) with ESMTPSA id E1F5E114065 for ; Thu, 16 Aug 2018 14:40:48 -0700 (PDT) From: Juri Linkov Organization: LINKOV.NET Date: Thu, 16 Aug 2018 23:48:05 +0300 Message-ID: <87zhxmhz4a.fsf@mail.linkov.net> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (x86_64-pc-linux-gnu) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x (no timestamps) [generic] X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -5.0 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -6.0 (------) --=-=-= Content-Type: text/plain It's difficult to debug a sporadic problem when automatic diff refinement doesn't display refined overlays on some diff hunks occasionally. Looking at the code, it seems there is a possible race condition when diff--font-lock-refined calls diff-hunk-next that sets a timer that later might remove and try to re-add again overlays already added by the direct call of diff--refine-hunk from diff--font-lock-refined. Also diff-hunk-next prevents multiple consequent calls from refining a set of hunks by checking diff--auto-refine-data. To avoid such double refinement, this patch let-binds diff-auto-refine-mode to nil before calling diff-hunk-next for non-interactive navigation (it calls diff--refine-hunk explicitly below): --=-=-= Content-Type: text/x-diff Content-Disposition: inline; filename=diff-refine.1.patch diff --git a/lisp/vc/diff-mode.el b/lisp/vc/diff-mode.el index b91a2ba45a..175687f184 100644 --- a/lisp/vc/diff-mode.el +++ b/lisp/vc/diff-mode.el @@ -2077,7 +2088,9 @@ diff--font-lock-refined (point) 'diff--font-lock-refined nil max))) (let* ((min (point)) (beg (or (ignore-errors (diff-beginning-of-hunk)) - (ignore-errors (diff-hunk-next) (point)) + (ignore-errors (let ((diff-auto-refine-mode nil)) + (diff-hunk-next)) + (point)) max))) (while (< beg max) (let ((end @@ -2092,7 +2105,10 @@ diff--font-lock-refined (overlay-put ol 'modification-hooks '(diff--font-lock-refine--refresh)))) (goto-char (max beg end)) - (setq beg (or (ignore-errors (diff-hunk-next) (point)) max))))))) + (setq beg (or (ignore-errors (let ((diff-auto-refine-mode nil)) + (diff-hunk-next)) + (point)) + max))))))) (defun diff--font-lock-refine--refresh (ol _after _beg _end &optional _len) (delete-overlay ol)) --=-=-=-- From unknown Thu Jul 31 07:49:09 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32460: 27.0.50; diff-mode sometimes doesn't refine hunks Resent-From: charles@aurox.ch (Charles A. Roelli) Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 07 Mar 2019 19:14:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32460 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Juri Linkov Cc: 32460@debbugs.gnu.org Reply-To: charles@aurox.ch Received: via spool by 32460-submit@debbugs.gnu.org id=B32460.155198603027194 (code B ref 32460); Thu, 07 Mar 2019 19:14:02 +0000 Received: (at 32460) by debbugs.gnu.org; 7 Mar 2019 19:13:50 +0000 Received: from localhost ([127.0.0.1]:35621 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1ySk-00074T-7r for submit@debbugs.gnu.org; Thu, 07 Mar 2019 14:13:50 -0500 Received: from nestroy.aurox.ch ([82.195.237.20]:41828) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h1ySi-000749-Pw for 32460@debbugs.gnu.org; Thu, 07 Mar 2019 14:13:49 -0500 Received: from nestroy.aurox.ch (nestroy.aurox.ch [127.0.0.1]) by nestroy.aurox.ch (Postfix) with ESMTP id 44FgK24T6FznCh for <32460@debbugs.gnu.org>; Thu, 7 Mar 2019 19:13:42 +0000 (UTC) Authentication-Results: nestroy.aurox.ch (amavisd-new); dkim=pass (1024-bit key) reason="pass (just generated, assumed good)" header.d=aurox.ch DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=aurox.ch; h= references:reply-to:subject:subject:in-reply-to:to:from:from :message-id:date:date; s=dkim2; t=1551986021; x=1554578022; bh=I ef6dc9s8jeYWcJzVblJyHN4Ho0m1pPgHG3jhv4orXQ=; b=o7nQumOWGvI0rQXnX OabmvrhUvH28N7LWYpODfujUHDQNRxAQ6QJfaUj7qFklnmn3obnzDKwkBnxcWQre 1iV84gEJ5wGCGsrgc7tLSDC8KEb8DbS+gmCrwaVF9GIRvYbOqkbSgwi8LmZIQJaf wZ+KLy2SmCSWTFQk5NF+jk/sm0= X-Virus-Scanned: Debian amavisd-new at nestroy.aurox.ch Received: from nestroy.aurox.ch ([127.0.0.1]) by nestroy.aurox.ch (nestroy.aurox.ch [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id Wk9tegDuPQGY for <32460@debbugs.gnu.org>; Thu, 7 Mar 2019 19:13:41 +0000 (UTC) Received: from gray (unknown [IPv6:2a02:1206:4512:5f50:c62c:3ff:fe30:b864]) by nestroy.aurox.ch (Postfix) with ESMTPSA id 44FgK14SDfznCX; Thu, 7 Mar 2019 19:13:41 +0000 (UTC) Date: Thu, 07 Mar 2019 20:26:11 +0100 Message-Id: From: charles@aurox.ch (Charles A. Roelli) In-reply-to: <87zhxmhz4a.fsf@mail.linkov.net> (message from Juri Linkov on Thu, 16 Aug 2018 23:48:05 +0300) References: <87zhxmhz4a.fsf@mail.linkov.net> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) tags 32460 fixed close 32460 27.1 quit As Juri suggested, the fix for Bug#32991 probably fixed this bug. From unknown Thu Jul 31 07:49:09 2025 X-Loop: help-debbugs@gnu.org Subject: bug#32460: 27.0.50; diff-mode sometimes doesn't refine hunks Resent-From: Stefan Monnier Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 08 Mar 2019 03:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 32460 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: fixed To: charles@aurox.ch (Charles A. Roelli) Cc: 32460@debbugs.gnu.org, Juri Linkov Received: via spool by 32460-submit@debbugs.gnu.org id=B32460.155201446216911 (code B ref 32460); Fri, 08 Mar 2019 03:08:02 +0000 Received: (at 32460) by debbugs.gnu.org; 8 Mar 2019 03:07:42 +0000 Received: from localhost ([127.0.0.1]:35742 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h25rJ-0004Oh-Md for submit@debbugs.gnu.org; Thu, 07 Mar 2019 22:07:41 -0500 Received: from pruche.dit.umontreal.ca ([132.204.246.22]:45954) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1h25rH-0004OZ-TW for 32460@debbugs.gnu.org; Thu, 07 Mar 2019 22:07:40 -0500 Received: from pastel.home (lechon.iro.umontreal.ca [132.204.27.242]) by pruche.dit.umontreal.ca (8.14.7/8.14.1) with ESMTP id x2837U9o004945; Thu, 7 Mar 2019 22:07:30 -0500 Received: by pastel.home (Postfix, from userid 20848) id 1CCDE6A478; Thu, 7 Mar 2019 22:07:30 -0500 (EST) From: Stefan Monnier Message-ID: References: <87zhxmhz4a.fsf@mail.linkov.net> Date: Thu, 07 Mar 2019 22:07:30 -0500 In-Reply-To: (Charles A. Roelli's message of "Thu, 07 Mar 2019 20:26:11 +0100") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-NAI-Spam-Flag: NO X-NAI-Spam-Threshold: 5 X-NAI-Spam-Score: 0 X-NAI-Spam-Rules: 2 Rules triggered EDT_SA_DN_PASS=0, RV6498=0 X-NAI-Spam-Version: 2.3.0.9418 : core <6498> : inlines <7029> : streams <1815071> : uri <2808719> X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) > As Juri suggested, the fix for Bug#32991 probably fixed this bug. As part of the fix for Bug#32991, I rewrote the code that visits "all" hunks in a region, because that code had a bug which basically made it skip every other hunk: in practice with jit-lock (where the granularity is small enough that the region considered rarely contains more than one hunk), it tended to "arbitrarily" miss some hunks every once in a while (regardless of diff-hunk-next). Not sure if this error was the cause of bug#32460 since you mention interaction with diff-hunk-next, but I think it's indeed better to close the bug for now and reopen it (or a new one) if it re-appears. Stefan