core-lib: refactor add-hook!
This commit is contained in:
parent
d7db99a1ef
commit
c71b8ac438
1 changed files with 11 additions and 17 deletions
|
@ -39,27 +39,21 @@ Examples:
|
||||||
(unless func-or-forms
|
(unless func-or-forms
|
||||||
(error "add-hook!: FUNC-OR-FORMS is empty"))
|
(error "add-hook!: FUNC-OR-FORMS is empty"))
|
||||||
(let* ((val (car func-or-forms))
|
(let* ((val (car func-or-forms))
|
||||||
(quoted (eq (car-safe hook) 'quote))
|
(quoted-p (eq (car-safe hook) 'quote))
|
||||||
(hook (if quoted (cadr hook) hook))
|
(hook (if quoted-p (cadr hook) hook))
|
||||||
(funcs (if (eq (car-safe val) 'quote)
|
(funcs (if (eq (car-safe val) 'quote)
|
||||||
(if (cdr-safe (cadr val))
|
(if (cdr-safe (cadr val))
|
||||||
(cadr val)
|
(cadr val)
|
||||||
(list (cadr val)))
|
(list (cadr val)))
|
||||||
(list func-or-forms)))
|
(list func-or-forms))))
|
||||||
(forms '()))
|
(macroexp-progn
|
||||||
(mapc (lambda (f)
|
(mapcar (lambda (f)
|
||||||
(let ((func (if (symbolp f) `(quote ,f) `(lambda (&rest _) ,@func-or-forms))))
|
(let ((func (if (symbolp f) `(quote ,f) `(lambda (&rest _) ,@func-or-forms))))
|
||||||
(mapc (lambda (h)
|
(macroexp-progn
|
||||||
(push `(add-hook ',(if quoted h (intern (format "%s-hook" h))) ,func) forms))
|
(mapcar (lambda (h)
|
||||||
(-list hook))))
|
`(add-hook ',(if quoted-p h (intern (format "%s-hook" h))) ,func))
|
||||||
funcs)
|
(-list hook)))))
|
||||||
(macroexp-progn forms)))
|
funcs))))
|
||||||
|
|
||||||
;; TODO
|
|
||||||
(defmacro add-lambda-hook! (hooks func-name &rest forms))
|
|
||||||
|
|
||||||
;; TODO
|
|
||||||
(defmacro remove-hooks! (hooks &rest funcs))
|
|
||||||
|
|
||||||
(defmacro associate! (mode &rest rest)
|
(defmacro associate! (mode &rest rest)
|
||||||
"Associate a major or minor mode to certain patterns and project files."
|
"Associate a major or minor mode to certain patterns and project files."
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue