(ad-get-advice-info): Change to a function.

(ad-get-advice-info-macro): New macro, like old ad-get-advice-info.
(ad-is-advised, ad-get-advice-info-field)
(ad-set-advice-info-field): Use ad-get-advice-info-macro.
This commit is contained in:
Richard M. Stallman 2007-10-16 02:37:33 +00:00
parent 6e5d0e9e73
commit 745dc723d9
2 changed files with 16 additions and 6 deletions

View file

@ -1,3 +1,10 @@
2007-10-16 Richard Stallman <rms@gnu.org>
* emacs-lisp/advice.el (ad-get-advice-info): Change to a function.
(ad-get-advice-info-macro): New macro, like old ad-get-advice-info.
(ad-is-advised, ad-get-advice-info-field)
(ad-set-advice-info-field): Use ad-get-advice-info-macro.
2007-10-15 Stefan Monnier <monnier@iro.umontreal.ca> 2007-10-15 Stefan Monnier <monnier@iro.umontreal.ca>
* vc-hooks.el (vc-workfile-version): Compatibility alias. * vc-hooks.el (vc-workfile-version): Compatibility alias.

View file

@ -2013,7 +2013,10 @@ On each iteration VAR will be bound to the name of an advised function
(if (not (get 'ad-do-advised-functions 'lisp-indent-hook)) (if (not (get 'ad-do-advised-functions 'lisp-indent-hook))
(put 'ad-do-advised-functions 'lisp-indent-hook 1)) (put 'ad-do-advised-functions 'lisp-indent-hook 1))
(defmacro ad-get-advice-info (function) (defun ad-get-advice-info (function)
(get function 'ad-advice-info))
(defmacro ad-get-advice-info-macro (function)
`(get ,function 'ad-advice-info)) `(get ,function 'ad-advice-info))
(defmacro ad-set-advice-info (function advice-info) (defmacro ad-set-advice-info (function advice-info)
@ -2025,7 +2028,7 @@ On each iteration VAR will be bound to the name of an advised function
(defmacro ad-is-advised (function) (defmacro ad-is-advised (function)
"Return non-nil if FUNCTION has any advice info associated with it. "Return non-nil if FUNCTION has any advice info associated with it.
This does not mean that the advice is also active." This does not mean that the advice is also active."
(list 'ad-get-advice-info function)) (list 'ad-get-advice-info-macro function))
(defun ad-initialize-advice-info (function) (defun ad-initialize-advice-info (function)
"Initialize the advice info for FUNCTION. "Initialize the advice info for FUNCTION.
@ -2035,16 +2038,16 @@ Assumes that FUNCTION has not yet been advised."
(defmacro ad-get-advice-info-field (function field) (defmacro ad-get-advice-info-field (function field)
"Retrieve the value of the advice info FIELD of FUNCTION." "Retrieve the value of the advice info FIELD of FUNCTION."
`(cdr (assq ,field (ad-get-advice-info ,function)))) `(cdr (assq ,field (ad-get-advice-info-macro ,function))))
(defun ad-set-advice-info-field (function field value) (defun ad-set-advice-info-field (function field value)
"Destructively modify VALUE of the advice info FIELD of FUNCTION." "Destructively modify VALUE of the advice info FIELD of FUNCTION."
(and (ad-is-advised function) (and (ad-is-advised function)
(cond ((assq field (ad-get-advice-info function)) (cond ((assq field (ad-get-advice-info-macro function))
;; A field with that name is already present: ;; A field with that name is already present:
(rplacd (assq field (ad-get-advice-info function)) value)) (rplacd (assq field (ad-get-advice-info-macro function)) value))
(t;; otherwise, create a new field with that name: (t;; otherwise, create a new field with that name:
(nconc (ad-get-advice-info function) (nconc (ad-get-advice-info-macro function)
(list (cons field value))))))) (list (cons field value)))))))
;; Don't make this a macro so we can use it as a predicate: ;; Don't make this a macro so we can use it as a predicate: