Those marked "OBS" are declared to be obsolete. Nothing need be done
now for those.
I suggest that `unload-feature-special-hooks', which is already aliased
to `load-hist-hook-functions', be made obsolete.
The ones marked "Bool" are not hooks. They are Boolean values
indicating whether some behavior associated with particular hooks takes
place - e.g., whether mode hooks should be delayed. I suggest that
these be renamed to indicate this. We could, for example, follow the
convention (still encouraged by RMS) of adding the suffix `-flag'.
The ones marked "XXX" are also not hooks. They're lists of hooks. I
suggest they be re-suffixed `-functions' and the old names declared
[A code comment for `ediff-before-session-group-setup-hooks' says this:
;FIXME: Bad name (should be -hook or -functions) and never run??]
There's some ambiguity in the use of suffix `-functions'. (elisp)
`Standard Hooks' says that it _usually_ means an abnormal hook. But it
seems that sometimes it means just a list of hooks that some code will
do something with (not necessarily invoke them as abnormal hooks).
If we wanted to use a different suffix, to distinguish actual abnormal
hooks from such other lists of hooks (normal and abnormal) then those
marked "XXX" here fall into the latter group.
In GNU Emacs 26.2 (build 1, x86_64-w64-mingw32)
Repository revision: fd1b34bfba8f3f6298df47c8e10b61530426f749
Windowing system distributor `Microsoft Corp.', version 10.0.17134
`configure --without-dbus --host=x86_64-w64-mingw32
--without-compress-install 'CFLAGS=-O2 -static -g3''
> > The following variable names end in `-hooks', instead of `-hook' or
> > `-functions' (there may be more - just noticed these in one of my
> > sessions):
> > bookmark-exit-hooks (OBS)
> As you say, there's nothing to be done about obsolete -hooks variables.
> > delay-mode-hooks (Bool)
> These bool variables have logical names -- they say whether to do
> something or other about the hooks, so I don't think they should change
> > delayed-mode-hooks XXX
> That's not really a -hook variable, but list of hook variables to run,
> so it's fine:
> (defvar-local delayed-mode-hooks nil
> "List of delayed mode hooks waiting to be run.")
> > ediff-before-session-group-setup-hooks XXX
> This is a variable that's never used, apparently? I'll just mark it as
> > recentf-used-hooks XXX
> It's a list of hooks, not a hook, so has a correct name.
> > unload-feature-special-hooks (aliased)
> Nothing to be done for the rest; closing.
IOW, "won't fix".
Lists of hooks are not hooks. Boolean variables that
control behavior of hooks are not hooks.
A user looking for hooks will fall upon these misleading
names of non-hooks using completion (e.g. substring).
We can help her or mislead her. Currently we throw noise
in her face. Not much noise - there are only a few such
anomalies cited here.
> Date: Sat, 13 Jul 2019 10:23:23 -0700 (PDT)
> From: Drew Adams <[hidden email]>
> Cc: [hidden email] >
> A user looking for hooks will fall upon these misleading
> names of non-hooks using completion (e.g. substring).
Not necessarily: we have a section in the ELisp manual that lists all
the standard hooks.