unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
* Change of mode does not activate the associated hook
@ 2024-04-04  1:46 Heime
  2024-04-04  4:25 ` tpeplt
  0 siblings, 1 reply; 2+ messages in thread
From: Heime @ 2024-04-04  1:46 UTC (permalink / raw)
  To: Heime via Users list for the GNU Emacs text editor

Have made a minor mode named "ark" that uses mode hooks.
For a buffer with f90-mode enabled, the functionality in
the file avus-f90.el would be activated. This works well
when I open an file named "transform.f90".

But if I am in a lisp-interaction buffer and change the
major mode to f90-mode followed by "M-x ark-minor-mode",
the associated mode hook for f90-mode is not activated.

What is going on ?

(defun ark-gali ()
  (interactive)
  (cond
    ((eq major-mode 'f90-mode)
          (require 'avus-f90))

(defun ark-mode-hooks ()
  (add-hook 'f90-mode-hook #'ark-gali))

(define-minor-mode ark-minor-mode
  (if ark-minor-mode
       (ark-mode-hooks)
    (message "%s" "TEST")))




^ permalink raw reply	[flat|nested] 2+ messages in thread

* Re: Change of mode does not activate the associated hook
  2024-04-04  1:46 Change of mode does not activate the associated hook Heime
@ 2024-04-04  4:25 ` tpeplt
  0 siblings, 0 replies; 2+ messages in thread
From: tpeplt @ 2024-04-04  4:25 UTC (permalink / raw)
  To: Heime; +Cc: Heime via Users list for the GNU Emacs text editor

Heime <heimeborgia@protonmail.com> writes:

> Have made a minor mode named "ark" that uses mode hooks.
> For a buffer with f90-mode enabled, the functionality in
> the file avus-f90.el would be activated. This works well
> when I open an file named "transform.f90".
>
> But if I am in a lisp-interaction buffer and change the
> major mode to f90-mode followed by "M-x ark-minor-mode",
> the associated mode hook for f90-mode is not activated.
>
> What is going on ?
>
> (defun ark-gali ()
>   (interactive)
>   (cond
>     ((eq major-mode 'f90-mode)
>           (require 'avus-f90))
>
> (defun ark-mode-hooks ()
>   (add-hook 'f90-mode-hook #'ark-gali))
>
> (define-minor-mode ark-minor-mode
>   (if ark-minor-mode
>        (ark-mode-hooks)
>     (message "%s" "TEST")))

1. The code that you provided will not compile without errors.  If you
byte-compile your code, then you’ll be able to find and fix those
errors, which will make it more likely that someone can help with the
problem that you are having.

2. The first ‘defun’ is missing some trailing parentheses.

3. The expression for defining the minor mode is missing some arguments.

   a. Using C-h f define-minor-mode, the docstring says:
      (define-minor-mode MODE DOC [KEYWORD VAL ... &rest BODY])
      so, unlike ‘defun’, the docstring (DOC) is required.

   b. Farther down in the docstring is the following requirement for
      BODY: "If you provide BODY, then you must provide at least one
      keyword argument (e.g. ‘:lighter nil‘)."

      Your ‘define-minor-mode’ did not provide at least one keyword
      argument.

   These two could be fixed as follows, for example:

(define-minor-mode ark-minor-mode
  "a docstring for ‘ark-minor-mode’"
  :lighter " Ark"
  (if ark-minor-mode
      (ark-mode-hooks)
    (message "%s" "TEST")))

Once these changes have been made, the code should compile without
errors.  Once that has been done, if the expressions are evaluated, you
should be able to type M-x ark-minor-mode and "Ark" will appear in your
mode line.  You should also see the message "Ark minor mode enabled in
current buffer."  If you type M-x ark-minor-mode a second time, then the
"Ark" will disappear from the mode line and you should see the message
TEST.

--



^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2024-04-04  4:25 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-04-04  1:46 Change of mode does not activate the associated hook Heime
2024-04-04  4:25 ` tpeplt

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).