On 25.05.2020 18:17, Eli Zaretskii wrote: >>> Yes, this will fix the reported problem of customizability. >>> Maybe Eli will agree to fix this in emacs-27. >> >> I can post the corresponding patch, if it helps. > > It's okay to add a defcustom and a new function, but the other part of > the patch changes the default behavior, and that is less okay. Can we > do one without the other? The defcustom already exists. It currently defaults to #'ignore (do nothing). It is called in case #1. The attached patch moves case #2 into a new function and makes it the default value of the said defcustom (thus case #2 effectively moves into case #1). As a result, the default behavior doesn't change, but the user will have a much easier time turning off case #2. > (Btw, the textual descriptions of the options both in the patch and > those already in the code are confusingly obscure, so much so that I > don't think I could understand what each one does.) Knowing the subject matter somewhat, I think the descriptions are meaningful enough, but to make sense of them one has to understand how the whole feature comes together. E.g. at what times next-error-find-buffer is called. > All in all, I feel (for quite some time) that this area is > over-engineered and keeps bumping into more and more unintended > consequences. Maybe it's time to take a step back and rethink the > entire subject? (But definitely not on the release branch.) That's what we're doing here. If the attached patch is accepted for emacs-27, then on master we'll change next-error-find-buffer-function's default back to #'ignore (thus reverting to the previous path that I sent). And see if we find problems with how the result is working. So in the end, next-error-find-buffer-function will have three possible values: - Pre Emacs 27 behavior. - Emacs 27 behavior (extracted in the attached patch). - Simplified behavior with less buffer-local state (Emacs 28, hopefully).