emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Emacs-diffs] master f6fc446: Handle new-style advice in find-funct


From: Dmitry Gutov
Subject: [Emacs-diffs] master f6fc446: Handle new-style advice in find-funct
Date: Thu, 04 Jun 2015 22:35:23 +0000

branch: master
commit f6fc446d93d0c3d19aad779fd093d8408a6e3c31
Author: Dmitry Gutov <address@hidden>
Commit: Dmitry Gutov <address@hidden>

    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.
---
 lisp/emacs-lisp/find-func.el |   19 +++++++++++--------
 1 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/lisp/emacs-lisp/find-func.el b/lisp/emacs-lisp/find-func.el
index 7ea13d4..54f8340 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]