On Thu, 29 Apr 2021, Eli Zaretskii wrote: >> From: Tino Calancha >> Date: Wed, 28 Apr 2021 21:31:25 +0200 >> Cc: 46374@debbugs.gnu.org, Stefan Monnier , >> Quách Mỹ Uyên Nhi >> >> >> Juri Linkov writes: >> >> +(defcustom save-some-buffers-default-predicate save-some-buffers-default-fun >> + "Generator function of the default predicate for `save-some-buffers'. >> + >> +It must be a function with no arguments that returns a predicate. >> +This predicate is called (with no parameters) from the buffer to be >> +saved. > > Reading this, I'm confused: a function that returns a predicate? If > this is literally so, why do we need this two-step approach? why not > have the value _be_ a predicate function? The point of this two-step approach is to get access to the caller environment: - We have a function, generate-foo, that builds a predicate foo. - By calling generate-foo inside same-some-buffers, we build a foo with access to the enviroment, i.e. foo is a closure. That makes the trick to restrict the prompt to saving buffers only inside the current project.