Subject: bug#41682: makefile-gmake-mode does not trigger "eval-after-load"'s hooks

From: Konstantin Kharlamov <[email-masked]>
Date: Wed, 03 Jun 2020 13:25:01 +0300

On Wed, 2020-06-03 at 11:21 +0100, Basil L. Contovounesios wrote:
> tags 41682 + notabug
> quit
> 
> Konstantin Kharlamov <[email-masked]> writes:
> 
> > Functions added with (eval-after-load 'makefile-gmake-mode …) do
> > not
> > trigger when the mode is enabled
> 
> I think you've misunderstood what eval-after-load does.
> 
> 'makefile-gmake-mode' is a major mode function defined in the file
> make-mode.el which provides the named feature 'make-mode'.  See
> (info "(elisp) Named Features") and (info "(elisp) Hooks for
> Loading").
> 
> https://www.gnu.org/software/emacs/manual/html_node/elisp/Named-Features.html
> https://www.gnu.org/software/emacs/manual/html_node/elisp/Hooks-for-Loading.html
> 
> eval-after-load, and its newer, preferred sibling with-eval-after-
> load,
> register some Lisp to be run when a file or named feature is or has
> already been loaded.
> 
> If you want to register some Lisp to run only once, after make-
> mode.el
> is loaded (and makefile-gmake-mode has been defined), then you should
> write:
> 
>   (with-eval-after-load 'make-mode
>     (foo)
>     (bar))
> 
> If you want to register some Lisp to run every time makefile-gmake-
> mode
> is enabled, then you should write:
> 
>   (add-hook 'makefile-gmake-mode-hook #'foo)
> 
> If you want to register some Lisp to run every time any make-mode.el
> major mode is enabled, then you should write:
> 
>   (add-hook 'makefile-mode-hook #'foo)
> 
> Is there some other case you're trying to address, or can this bug be
> closed?

Thank you for through explanation! Sure, this bug can be closed.