Subject: Re: bug#21440: 25.0.50; Manual: FEATURE-unload-hook in (info "(elisp) Coding Conventions")

From: Stefan Kangas <[email-masked]>
Date: Sat, 15 Aug 2020 06:53:00 -0700

Michael Heerdegen <[email-masked]> writes:

> Hi,
>
> In (info "(elisp) Coding Conventions"):
>
>    • If loading the file adds functions to hooks, define a function
>      ‘FEATURE-unload-hook’, where FEATURE is the name of the feature the
>      package provides, and make it undo any such changes.  Using
>      ‘unload-feature’ to unload the file will run this function.  *Note
>      Unloading.
>
> A problematic tip:
>
>  - it is unnecessary for that reason. AFAIK FEATURE's functions are
>  removed automatically from hooks by `unload-feature'.
>
>  - When you follow the advice, `unload-feature' will skip removing
>  entries from `auto-mode-alist', so you would have to do that yourself.
>
>  - Isn't `FEATURE-unload-function' the preferred thing to use today?
>  The doc string of `unload-feature' doesn't even mention
>  FEATURE-unload-hook variables.  Seems it is discouraged to be used.

The above analysis seems correct to me.  There should be no need to use
`FEATURE-load-hook', in fact from reading `unload-feature' it seems
worse.  But I don't know too much about this, so I'm not sure if there's
some fundamental aspect I'm overlooking.

If the above is indeed true, we should probably just remove the advice
from coding conventions.  And it should be announced in NEWS, probably
together with some warnings emitted by `unload-feature' if there is such
a `FEATURE-unload-hook' defined.

Is there anyone else who could provide some insight here?

Best regards,
Stefan Kangas