[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#37856: 27.0.50; 'next-error' advised with 'recenter' signals error w
From: |
Eli Zaretskii |
Subject: |
bug#37856: 27.0.50; 'next-error' advised with 'recenter' signals error when run from "*grep*" buffer |
Date: |
Mon, 21 Oct 2019 22:30:42 +0300 |
> From: Stefan Kangas <stefan@marxist.se>
> Date: Mon, 21 Oct 2019 20:38:47 +0200
>
> 1. Under "emacs -Q", evaluate:
> (defun my-advice (&rest args)
> (recenter))
> (advice-add 'next-error :after #'my-advice)
> 2. M-x rgrep RET [... grep for something]
> 3. Run 'next-error' (M-g M-n) from the "*grep*" buffer.
>
> Result: I get the error:
> recenter-top-bottom: ‘recenter’ing a window that does not display
> current-buffer.
Why isn't this a cockpit error: you force a function that happens to
switch buffers to recenter. It's like you've added a call to
'recenter' in some arbitrary place in a random function: you are
responsible for that code, and if it does stuff that it shouldn't,
your code is wrong. No?
> This seems to be due to this code in window.c:
>
> /* For reasons why we signal an error here, see
> https://lists.gnu.org/r/emacs-devel/2014-06/msg00053.html,
> https://lists.gnu.org/r/emacs-devel/2014-06/msg00094.html. */
> if (buf != current_buffer)
> error ("`recenter'ing a window that does not display current-buffer.");
Yes, and that's on purpose, see the cited discussion.