The attached demonstrates the problem, I believe.
AaronOn Mon, Sep 01, 2025 at 9:31 AM, Aaron Jensen <aaronjensen@gmail. com> wrote: It's my understanding that the check for set-explicitly is done because given where this hook runs, it's possible that the mode variable is not yet initialized, which means that even though it eventually will be, and thus could be relied on, it may not be. Therefore, bind-map relies on similar logic as the minor mode itself to determine whether or not the minor mode *will eventually* be enabled. It seems like your proposed patch to bind-map would be subject to this "hook race".Again, this is just an informed guess as I haven't set up the conditions to reproduce it yet.I have extracted the relevant bind-map code to my own library that depended on it:Currently, it still relies on set-explicitly (accepting both forms), but if there's a way that we can get it to not I'd be happy to try it out.
AaronOn Mon, Sep 01, 2025 at 8:42 AM, Stefan Monnier <monnier@iro. umontreal. ca> wrote: After spending some time looking at the code, its history, and the corresponding doc, my conclusion is that `bind-map`s code was probably incorrect already with older Emacsen (just in different ways) and its intended behavior is far from clear, so I think it's best to leave this as a WONTFIX and let `bind-map`s authors figure out what to do on their side (tho I'd be happy to help them figure that out).
You don't think we should even restore it and mark it as obsolete?
Since I believe bind-map's code was only half-working to begin with: no, I don't think it's worth the trouble. It would just help them muddle through. I'd rather help them fix their code for good.
Stefan