bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#20489: 25.0.50; next-error-find-buffer chooses non-current buffer wi


From: Dmitry Gutov
Subject: bug#20489: 25.0.50; next-error-find-buffer chooses non-current buffer without good reason
Date: Mon, 25 Jan 2016 09:23:53 +0300
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:44.0) Gecko/20100101 Thunderbird/44.0

Hi Juri,

Thank you for the reply.

But having had time to consider this issue, I think there are benefits to how it currently works. For instance, if I want to switch from a Compilation's buffer next-error-function to the current file buffer's one, I just need to bury Compilation (doing the reverse might be harder, however). If we change this logic, we should make sure not to make anything worse.
On 01/25/2016 12:10 AM, Juri Linkov wrote:

The link to the discussion is here:
http://lists.gnu.org/archive/html/emacs-devel/2004-05/msg00614.html
where you can see the case that we need to support.
In this scenario, it seems like you could have benefited from 
next-error-last-buffer value being frame-local instead (maybe 
implemented as a frame parameter?).
Now that we have window-local variables, it's possible to support
this case in a proper way.  Instead of checking if a buffer visible
in the current frame, we should check the window-local value of
next-error-last-buffer.  Thus invoking next-error in the window
with the source buffer will continue navigation using the right value
of next-error-last-buffer that navigated to its previous occurrence.
How do linting minor modes (like Flycheck or Flymake) fit into this?

Suppose I called M-x compile (or, better yet, M-x grep), navigated to some file buffer from it and then see that it has some linter errors highlighed by Flycheck. So I want to use the current buffer's next-error-function now, and jump between linter warnings using next/previous-error. How do I do that? IIU your plan correctly, the current window-local next-error-last-buffer value will continue pointing at the Grep buffer, even if I bury it.
Basically, I want to have two at least somewhat guessable sequences of 
actions that would let the user choose which buffer to use for its 
next-error-function.
As discussed in this issue, the best way to do that seems to require:

- Some indicator that a given buffer's next-error-function points to other buffer (then, if you're in a different buffer, that other buffer is still relevant). Like a buffer-local variable called, for example, next-error-function-nonlocal.
- A command (or several) to switch between the plausible candidates for 
next-error-last-buffer. Maybe just have a single command that uses 
read-buffer with a predicate checking the aforementioned variable and an 
extra option that means "just use the current buffer".
- Ignore next-error-last-buffer's visibility. Or make it frame-local, to 
account for your scenario as well (but that would bring extra 
complexity: some people use use frames like almost separate 
applications, and other can use frames instead of windows, and display 
them side-by-side).
WDYT?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]