From: Dmitry Gutov Date: Thu, 4 Jun 2015 22:34:40 +0000 (+0300) Subject: Handle new-style advice in find-funct X-Git-Tag: emacs-25.0.90~1872 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=f6fc446d93d0c3d19aad779fd093d8408a6e3c31;p=emacs.git Handle new-style advice in find-funct * lisp/emacs-lisp/find-func.el (find-function-advised-original): Handle new-style advice. Return the symbol's function definition. (Bug#20718) (find-function-library): Update accordingly. --- diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el index 7ea13d4637b..54f8340862d 100644 --- a/lisp/emacs-lisp/find-func.el +++ b/lisp/emacs-lisp/find-func.el @@ -189,12 +189,15 @@ defined in C.") (declare-function ad-get-advice-info "advice" (function)) (defun find-function-advised-original (func) - "Return the original function symbol of an advised function FUNC. -If FUNC is not the symbol of an advised function, just returns FUNC." + "Return the original function definition of an advised function FUNC. +If FUNC is not a symbol, return it. Else, if it's not advised, +return the symbol's function definition." (or (and (symbolp func) - (featurep 'advice) - (let ((ofunc (cdr (assq 'origname (ad-get-advice-info func))))) - (and (fboundp ofunc) ofunc))) + (featurep 'nadvice) + (let ((ofunc (advice--symbol-function func))) + (if (advice--p ofunc) + (advice--cd*r ofunc) + ofunc))) func)) (defun find-function-C-source (fun-or-var file type) @@ -331,7 +334,7 @@ signal an error. If VERBOSE is non-nil, and FUNCTION is an alias, display a message about the whole chain of aliases." (let ((def (if (symbolp function) - (symbol-function (find-function-advised-original function)))) + (find-function-advised-original function))) aliases) ;; FIXME for completeness, it might be nice to print something like: ;; foo (which is advised), which is an alias for bar (which is advised). @@ -344,8 +347,8 @@ message about the whole chain of aliases." (symbol-name def))) (format "`%s' is an alias for `%s'" function (symbol-name def))))) - (setq function (symbol-function (find-function-advised-original function)) - def (symbol-function (find-function-advised-original function)))) + (setq function (find-function-advised-original function) + def (find-function-advised-original function))) (if aliases (message "%s" aliases)) (cons function