GNU logs - #77809, boring messages


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77809: adding next-error support for flymake diagnostics buffers
Resent-From: matthewktromp@HIDDEN
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 14 Apr 2025 21:08:02 +0000
Resent-Message-ID: <handler.77809.B.17446648227392 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 77809
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: 77809 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.17446648227392
          (code B ref -1); Mon, 14 Apr 2025 21:08:02 +0000
Received: (at submit) by debbugs.gnu.org; 14 Apr 2025 21:07:02 +0000
Received: from localhost ([127.0.0.1]:49272 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4R1B-0001v1-SY
	for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 17:07:02 -0400
Received: from lists.gnu.org ([2001:470:142::17]:58982)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <matthewktromp@HIDDEN>)
 id 1u4R19-0001uc-PR
 for submit <at> debbugs.gnu.org; Mon, 14 Apr 2025 17:07:00 -0400
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 <matthewktromp@HIDDEN>)
 id 1u4R12-0000Fm-D1
 for bug-gnu-emacs@HIDDEN; Mon, 14 Apr 2025 17:06:53 -0400
Received: from mail-qk1-x72b.google.com ([2607:f8b0:4864:20::72b])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <matthewktromp@HIDDEN>)
 id 1u4R10-0005RP-IS
 for bug-gnu-emacs@HIDDEN; Mon, 14 Apr 2025 17:06:52 -0400
Received: by mail-qk1-x72b.google.com with SMTP id
 af79cd13be357-7c54a9d3fcaso521842685a.2
 for <bug-gnu-emacs@HIDDEN>; Mon, 14 Apr 2025 14:06:45 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1744664804; x=1745269604; darn=gnu.org;
 h=mime-version:message-id:date:subject:to:from:from:to:cc:subject
 :date:message-id:reply-to;
 bh=0M2luttl0Cx85xiXJE69bqLqb2RzBAFxudwLeEWL5PI=;
 b=dlNLyPsrBIIPIiyhfQfQJiJjYcfslnLQooeQX0AgHqPwwKQXHjkBMSjN/3vu5Yo79g
 8OsHlFZ3GQB7tkzpZtY23oTi5QMYHpF+t26+yuyN1A82OrSXabGgaGnJ5Cap1fOTqgwq
 Gh2+eWdm6k2kWY6fL2M7zLgjJgt/VWURS4kKOAu2nsTVr997fSb0+cKuqX5wPpBWm12C
 51SKF/iaEPz4Q06Oh/CHvn3/DWP5MAQkXzYTXcjyU4WBSrcWR66t6dtpC99xmAdDW6oJ
 ZuuIaG/4AErlUp0Zpcedk7hrzNG5gj9IWoeVEko+dhC81N+xUFT68kyFua1rMP3qrl/H
 SAvA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1744664804; x=1745269604;
 h=mime-version:message-id:date:subject:to:from:x-gm-message-state
 :from:to:cc:subject:date:message-id:reply-to;
 bh=0M2luttl0Cx85xiXJE69bqLqb2RzBAFxudwLeEWL5PI=;
 b=Q/KEnv74Za1bWb1oHJwQAq5y3aaGe3P1YLinDgP1L/yi1K5Zf8JGlTepeer9SPKbZV
 +6OgAUP/mtU2JHIN+85fGR65sc5acD1xAU7dUcnIihxkqOSOVJ2sR9Q75095nhwti1yU
 G19NN+RNKb5eUAGZ24FNRyPUzmaMnDrHUKqyoCZfopZwhWuHq5wwVH/vkyEKM5vhhbDg
 mbRcjXesX17IKcocQeugI3M3bxjY5nDVg4DGctQV4OFQ+IMPSVHml8LVlMDRqnIfH1qg
 Hd2UkePftYnInompMCh82Jq2cGMZJJQ/fJiM92zDlBblyIvzIvDKvCid0ZGI767rXvXI
 XIOg==
X-Gm-Message-State: AOJu0Yzib/YfLLdQQr7k/zKzFrH/RRpYA1LK1tqIOvoOwKdaC9hTb9+O
 ijg0X8T/7G7+xfcDMzuHKascEWkG0PY3rJn/T373hbZr0FwiickKuINjt7cI
X-Gm-Gg: ASbGncvGTMhdzy4rEWeKdpKgjHFfv9STcSRdE2ZoDEhAauLtWFQRFTvOr8SOuezhbwP
 W5NmTxz2tqEHmy6hY0iH0GKl+LnAfJnssaCJcoKm1KozyT4v/xx1ovOZ74pb+X4nRpoiasXVjSd
 EvziUc4EDDiQlhEzpPONFfebUY3so2cGWQqvCJJeWN5gS8Gi/xQRxN4OtccN/wm3HbvUKr7RJ5J
 pmlvQmnynR8SOqGl8keHUjEjwtTd2LUeMjlP/OYCaj4j6Gru1tK11Lz7lgk6ATByn0MOEAKbUZp
 3YfYXcUbKGwH1Fbd/zAE4oRM1NUkmaPjZ0hROZAKsAVO6gF0SsTJ
X-Google-Smtp-Source: AGHT+IGn08AXikM4EA5xV8wjyuuG7voo1XPVoCc6DD6gcMIBbIzxVCK8JZltCftrP2YjlCPKMWqhmw==
X-Received: by 2002:a05:620a:d89:b0:7c5:42c8:ac82 with SMTP id
 af79cd13be357-7c7af10c952mr1972227585a.23.1744664804165; 
 Mon, 14 Apr 2025 14:06:44 -0700 (PDT)
Received: from localhost ([96.224.136.38]) by smtp.gmail.com with ESMTPSA id
 af79cd13be357-7c7a895273csm786147285a.33.2025.04.14.14.06.23
 for <bug-gnu-emacs@HIDDEN>
 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256);
 Mon, 14 Apr 2025 14:06:25 -0700 (PDT)
From: matthewktromp@HIDDEN
Date: Mon, 14 Apr 2025 17:06:21 -0400
Message-ID: <85o6wy78s2.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
Received-SPF: pass client-ip=2607:f8b0:4864:20::72b;
 envelope-from=matthewktromp@HIDDEN; helo=mail-qk1-x72b.google.com
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, FREEMAIL_FROM=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 1.0 (+)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.0 (/)

--=-=-=
Content-Type: text/plain

Tags: patch

This patch adds next-error support for flymake diagnostics buffers.
Buffers created with `flymake-show-buffer-diagnostics' and
`flymake-show-project-diagnostics' are now next-error enabled, and
`next-error' and `previous-error' will navigate through their listed
diagnostics.

In GNU Emacs 30.1.50 (build 1, x86_64-pc-linux-gnu, X toolkit, cairo
version 1.18.2, Xaw3d scroll bars)
Windowing system distributor 'The X.Org Foundation', version 11.0.12101016
System Description: NixOS 24.11 (Vicuna)

Configured using:
 'configure
 --prefix=/nix/store/yffwm14bwi3vask5wfx6pcrdgxck61ba-emacs-30.1
 --disable-build-details --with-modules --with-x-toolkit=lucid
 --with-cairo --with-xft --with-compress-install
 --with-toolkit-scroll-bars --with-native-compilation
 --without-imagemagick --with-mailutils --without-small-ja-dic
 --with-tree-sitter --with-xinput2 --without-xwidgets --with-dbus
 --with-selinux'


--=-=-=
Content-Type: text/patch
Content-Disposition: attachment;
 filename=0001-next-error-support-for-flymake-diagnostics-buffers.patch

diff --git a/lisp/progmodes/flymake.el b/lisp/progmodes/flymake.el
index 6cc7e1f7a79..002e587b029 100644
--- a/lisp/progmodes/flymake.el
+++ b/lisp/progmodes/flymake.el
@@ -1390,6 +1390,10 @@ flymake-mode-map
                (format "<%s> <mouse-1>" flymake-fringe-indicator-position)
                #'flymake-show-buffer-diagnostics-at-event-line)
 
+(defvar-local flymake-current-diagnostic-line 0
+  "The line of the most recently focused diagnostic in the flymake
+diagnostics buffer.")
+
 ;;;###autoload
 (define-minor-mode flymake-mode
   "Toggle Flymake mode on or off.
@@ -1881,7 +1885,8 @@ flymake-pulse-momentary-highlight-region
 (defun flymake-show-diagnostic (pos &optional other-window)
   "Show location of diagnostic at POS."
   (interactive (list (point) t))
-  (let* ((id (or (tabulated-list-get-id pos)
+  (let* ((diagnostics-buffer (current-buffer))
+         (id (or (tabulated-list-get-id pos)
                  (user-error "Nothing at point")))
          (diag (plist-get id :diagnostic))
          (locus (flymake--diag-locus diag))
@@ -1890,6 +1895,7 @@ flymake-show-diagnostic
          (visit (lambda (b e)
                   (goto-char b)
                   (flymake-pulse-momentary-highlight-region b e))))
+    (setq flymake-current-diagnostic-line (line-number-at-pos pos))
     (with-current-buffer (cond ((bufferp locus) locus)
                                (t (find-file-noselect locus)))
       (with-selected-window
@@ -1905,6 +1911,8 @@ flymake-show-diagnostic
                                                  (car beg)
                                                  (cdr beg))))
                  (funcall visit bbeg bend)))))
+      (setq next-error-buffer diagnostics-buffer
+            next-error-last-buffer diagnostics-buffer)
       (current-buffer))))
 
 (defun flymake-goto-diagnostic (pos)
@@ -2008,6 +2016,23 @@ flymake--diagnostics-base-tabulated-list-format
     ("Backend" 8 t)
     ("Message" 0 t)])
 
+(defun flymake--diagnostics-next-error (n &optional reset)
+  "`next-error-function' for flymake diagnostics buffers.
+N is an integer representing how many errors to move.
+If RESET is non-nil, returns to the beginning of the errors before
+moving."
+  (let ((line (if reset 1 flymake-current-diagnostic-line))
+        (total-lines (count-lines (point-min) (point-max))))
+    (goto-char (point-min))
+    (unless (zerop total-lines)
+      (let ((target-line (+ line n)))
+        (setq target-line (max 1 target-line))
+        (setq target-line (min target-line total-lines))
+        (forward-line (1- target-line))))
+    (when-let ((win (get-buffer-window nil t)))
+      (set-window-point win (point)))
+    (flymake-goto-diagnostic (point))))
+
 (define-derived-mode flymake-diagnostics-buffer-mode tabulated-list-mode
   "Flymake diagnostics"
   "A mode for listing Flymake diagnostics."
@@ -2015,6 +2040,9 @@ flymake-diagnostics-buffer-mode
   (setq tabulated-list-format flymake--diagnostics-base-tabulated-list-format)
   (setq tabulated-list-entries
         'flymake--diagnostics-buffer-entries)
+
+  (setq-local next-error-function #'flymake--diagnostics-next-error)
+
   (tabulated-list-init-header))
 
 (defun flymake--diagnostics-buffer-name ()
@@ -2036,6 +2064,7 @@ flymake-show-buffer-diagnostics
                        (current-buffer)))))
     (with-current-buffer target
       (setq flymake--diagnostics-buffer-source source)
+      (setq next-error-last-buffer (current-buffer))
       (revert-buffer)
       (display-buffer (current-buffer)
                       `((display-buffer-reuse-window
@@ -2085,6 +2114,9 @@ flymake-project-diagnostics-mode
   (setq tabulated-list-format
         (vconcat [("File" 25 t)]
                  flymake--diagnostics-base-tabulated-list-format))
+
+  (setq-local next-error-function #'flymake--diagnostics-next-error)
+
   (setq tabulated-list-entries
         'flymake--project-diagnostics-entries)
   (tabulated-list-init-header))
@@ -2149,6 +2181,7 @@ flymake-show-project-diagnostics
     (with-current-buffer buffer
       (flymake-project-diagnostics-mode)
       (setq-local flymake--project-diagnostic-list-project prj)
+      (setq next-error-last-buffer (current-buffer))
       (revert-buffer)
       (display-buffer (current-buffer)
                       `((display-buffer-reuse-window

--=-=-=--




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: matthewktromp@HIDDEN
Subject: bug#77809: Acknowledgement (adding next-error support for flymake
 diagnostics buffers)
Message-ID: <handler.77809.B.17446648227392.ack <at> debbugs.gnu.org>
References: <85o6wy78s2.fsf@HIDDEN>
X-Gnu-PR-Message: ack 77809
X-Gnu-PR-Package: emacs
X-Gnu-PR-Keywords: patch
Reply-To: 77809 <at> debbugs.gnu.org
Date: Mon, 14 Apr 2025 21:08:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-gnu-emacs@HIDDEN

If you wish to submit further information on this problem, please
send it to 77809 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
77809: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D77809
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#77809: adding next-error support for flymake diagnostics buffers
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 15 Apr 2025 06:32:02 +0000
Resent-Message-ID: <handler.77809.B77809.174469869027441 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 77809
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: matthewktromp@HIDDEN, Spencer Baugh <sbaugh@HIDDEN>
Cc: 77809 <at> debbugs.gnu.org
Received: via spool by 77809-submit <at> debbugs.gnu.org id=B77809.174469869027441
          (code B ref 77809); Tue, 15 Apr 2025 06:32:02 +0000
Received: (at 77809) by debbugs.gnu.org; 15 Apr 2025 06:31:30 +0000
Received: from localhost ([127.0.0.1]:50224 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1u4ZpS-00078X-2z
	for submit <at> debbugs.gnu.org; Tue, 15 Apr 2025 02:31:30 -0400
Received: from eggs.gnu.org ([2001:470:142:3::10]:46528)
 by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.84_2) (envelope-from <eliz@HIDDEN>) id 1u4ZpM-00078C-Nc
 for 77809 <at> debbugs.gnu.org; Tue, 15 Apr 2025 02:31:25 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1u4ZpH-0004s4-4c; Tue, 15 Apr 2025 02:31:19 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=0Zh8zK9kRXYs9NcsRI/xv5DqBr5bxyFoHOJHZjeXTVY=; b=ZTdofu4AAtm7
 9jfoGfpqgbCnLR3mf9yJlWe8p6hNuOXZvBwXlqJSjwhc5RlC60OvIdv6jnk5x5JEqNf2XiuR0ltB+
 NlDuYR8FO7m1mgzTATyNL2PizYLYchD7mdoQW8CANI1ooqYvnJDeSLGa+fZtkekoiN0KxD3X5+1eX
 01edfS+UD5JYjGPhioaiiMnJVAtIw0DA+f9vK5XB+LE33/17Ur2llVRculVWFEQDupjwzuf0lCzO0
 vvjpVL51M5kmoh6XFXNr04sW+g3h+h9gHB7GZ2OEl3mpModIW5B6BcGCVkbLW8jIZfCQrFe8Uo6Pb
 hlImDwhJd7TOcGh7e/8FjQ==;
Date: Tue, 15 Apr 2025 09:30:23 +0300
Message-Id: <867c3mhr7k.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <85o6wy78s2.fsf@HIDDEN> (matthewktromp@HIDDEN)
References: <85o6wy78s2.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: matthewktromp@HIDDEN
> Date: Mon, 14 Apr 2025 17:06:21 -0400
> 
> Tags: patch
> 
> This patch adds next-error support for flymake diagnostics buffers.
> Buffers created with `flymake-show-buffer-diagnostics' and
> `flymake-show-project-diagnostics' are now next-error enabled, and
> `next-error' and `previous-error' will navigate through their listed
> diagnostics.

Many buffers which use Flymake already support next-error, don't they?
Won't this conflict with those cases?

Adding Spencer to the discussion.





Last modified: Tue, 15 Apr 2025 06:45:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.