Drew Adams writes: >> To summarize what has come up in this thread so far, the load-hook >> convention has the following problems: >> >> 1. They are never called if set by a user after a library is loaded. >> 2. They can lead to issues like Bug#24491. >> 3. They require every package (that wants to use them) to add boiler >> plate code. >> >> They are also redundant since we have eval-after-load and >> with-eval-after-load, which do not have any of the above problems. > > Here's what I'd suggest, if you are bent on removing > all load hooks and deprecating them: > > 1. Try removing all of them from the vanilla > (distributed) Elisp code. > > 2. Run with that for a major release or two. If no > problems, then deprecate (declare obsolete). I'm not sure I understand the proposal. What is the "vanilla (distributed) Elisp code"? What does "removing all of them" mean, and how is removing them more cautious than adding a deprecation warning to the variables? Or, are we perhaps talking about different things? IIUC, load-hooks is just a convention to: a) (defvar foo-load-hook nil) ;; or defcustom spanning several lines, or ;; indeed no declaration at all b) (run-hooks 'foo-load-hook) ;; added just before the provide statement Third party packages are free to continue doing that. AFAICT, we have no way to stop them -- and I wouldn't advocate for that. Am I missing something here? I'm not sure if this was clear, but the course of action suggested by Glenn was to add deprecation warnings to the load-hook variables in GNU Emacs. Please see the attached patches for an example. Best regards, Stefan Kangas