Subject: bug#65414: save-some-buffers-functions are unexpectedly called when save-some-buffers pred is non-nil

From: Stefan Monnier <[email-masked]>
Date: Sun, 03 Sep 2023 13:06:07 -0400

>> > In any case, not calling save-some-buffers-functions when PRED is
>> > non-nil is not something we can do, as that would be an incompatible
>> > behavior change.  We could perhaps add PRED to the arguments with
>> > which save-some-buffers-functions are called, as an optional argument.
>> > Would that be satisfactory?
>> Yes, that would solve the interference between Magit and hyperdrive.el.
>> See patch.

[ Sorry, `debbugs.gnu.org` appears to be down, so I couldn't read the
  whole bug report, so I haven't seen the patch among other things.
  Hopefully that doesn't invalidate my comment :-)  ]

> Hmm... but how to make this change backward-compatible?  I mean, if
> there's some function out there that is used in
> save-some-buffers-functions, and it was written to accept only 2
> arguments, we cannot safely call it with 3 arguments, can we?

AFAICT `save-some-buffers-functions` is brand new in Emacs-29.1 and
currently gets called sometimes with 1 and sometimes with 2 arguments
(that's a somewhat unusual API in this respect), so it's probably OK to
break backward compatibility because it will only affect fresh code that
can easily be adjusted.

[ Arguably, it would be even better to arrange for `hyperdrive.el` to
  save its buffers "in the usual way", i.e. relying on
  `buffer-offer-save`, `save-buffer`, `buffer-save-without-query, ...  ]

        Stefan