Improving add-hook of two functions

Heime <[email protected]> Sun, 05 Jul 2026 19:00:34 +0000
Newsgroups gmane.emacs.help
Message-ID <B5NWoJtmch0vl-SjW2FbNlo8DNW_TKSF57sdHgdlTCsj-QAmMb5c0ExnyyYNBOEN-dk5UyHKmYDUYgHcilSndyPR787pS_k3PyFmo59z_04=@protonmail.com>
I would like to improve the selection mechanism and
performance of the following function.

It is intended to call either add-hook or remove-hook
on the functions kronaire-regexp and outline-minor-mode.

With actm = 'add and actm = 'remove, tho addition or removal 
would be applied to both kronaire-regexp and outline-minor-mode.


(defun kronaire-mhooks (actm mhkl)
  "Add `kronaire-regexp' or `outline-minor-mode' to mode hooks.

ACTM = Choice('add, 'remove)
  Define hook action, add-hook' or `remove-hook'.
  (add-hook MDHK #'ACFN)  (remove-hook MDHK #'ACFN)

MHKL  List of mode hooks.

Where MDHK = Choice(sh-mode-hook, ...)
      ACFN = Choice(kronaire-regexp, outline-minor-mode)

(kronaire-mhooks 'add '(emacs-lisp-mode-hook sh-mode-hook))
   DESC
"

  (let ( ;; ST(HKA, "Hook Action")
         (hka   (cond
                  ((eq actm 'add)            #'add-hook)
                  ((eq actm 'remove)         #'remove-hook)
                  ((eq actm 'add-regexp)     #'add-hook)
                  ((eq actm 'remove-regexp)  #'remove-hook)
                  ((eq actm 'add-outline)    #'add-hook)
                  ((eq actm 'remove-outline) #'remove-hook)
                  (t (error "%s: ACTM %s is invalid"
                       "kronaire-hooks" actm)))) )

    ;; Call `add-hook' or `remove-hook'
    ;;  ST(HKA, "Hook Action"), ST(MDHOOK, "Mode Hook")
    ;;  LET HKA = Choice(add-hook, remove-hook)
    ;;      MDHOOK = Choice(emacs-lisp-mode-hook, ...)
    (dolist (mdhook mhkl)
      ;; (add-hook mdhook #'kronaire-regexp)
      ;; (remove-hook mdhook #'kronaire-regex)
      (cond
         ((or (eq actm 'add) (eq actm 'remove))
             (funcall hka mdhook #'kronaire-regexp)
             (funcall hka mdhook #'outline-minor-mode))
         ((or (eq actm 'add-regexp) (eq actm 'remove-regexp))
             (funcall hka mdhook #'kronaire-regexp))
         ((or (eq actm 'add-outline) (eq actm 'remove-outline))
             (funcall hka mdhook #'outline-minor-mode))))))