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))))))