GNU bug report logs - #46119
28.0.50; this-error-recenter

Previous Next

Package: emacs;

Reported by: Tino Calancha <tino.calancha <at> gmail.com>

Date: Tue, 26 Jan 2021 21:22:01 UTC

Severity: wishlist

Tags: patch

Found in version 28.0.50

Done: Tino Calancha <tino.calancha <at> gmail.com>

Bug is archived. No further changes may be made.

Full log


Message #59 received at 46119 <at> debbugs.gnu.org (full text, mbox):

From: Tino Calancha <tino.calancha <at> gmail.com>
To: Juri Linkov <juri <at> jurta.org>
Cc: 46119 <at> debbugs.gnu.org, uyennhi.qm <at> gmail.com
Subject: Re: bug#46119: 28.0.50; this-error-recenter
Date: Wed, 03 Feb 2021 14:03:09 +0100
Juri Linkov <juri <at> jurta.org> writes:

> Would it be possible to avoid code duplication between
> next-error-no-select and recenter-current-error?

How about adding this macro?

(defmacro with-selected-locus (n &rest body)
  "Visit the Nth error and execute BODY, then select the previously selected window."
  (declare (indent 1) (debug (form body)))
  `(save-selected-window
     (let ((next-error-highlight next-error-highlight-no-select)
           (display-buffer-overriding-action
            '(nil (inhibit-same-window . t))))
       (next-error ,n)
       ,@body)))

(defun next-error-no-select (&optional n)
  "Move point to the next error in the `next-error' buffer and highlight match.
Prefix arg N says how many error messages to move forwards (or
backwards, if negative).
Finds and highlights the source line like \\[next-error], but does not
select the source buffer."
  (interactive "p")
  (with-selected-locus n))

(defun recenter-current-error (&optional arg)
  "Recenter the current displayed error in the `next-error' buffer."
  (interactive "P")
  (with-selected-locus 0
    (set-buffer (window-buffer))
    (recenter-top-bottom arg)))




This bug report was last modified 4 years and 162 days ago.

Previous Next


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