]> git.eshelyaron.com Git - emacs.git/commitdiff
find-func.el: Fix bug#41104
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 7 Jun 2022 14:30:47 +0000 (10:30 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 7 Jun 2022 14:31:17 +0000 (10:31 -0400)
* lisp/emacs-lisp/find-func.el (find-function-advised-original): Look
at the actual function definition rather than
`advice--symbol-function` which sometimes returns only the advice.

* test/lisp/emacs-lisp/find-func-tests.el
(find-func-tests--find-library-verbose): Add test.

lisp/emacs-lisp/find-func.el
test/lisp/emacs-lisp/find-func-tests.el

index 96eaf1ab642d0f9e36b22aa9dae01b42688756e1..2dec51dd044371cf8843e75aec77fa3e8f478602 100644 (file)
@@ -270,7 +270,7 @@ 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 'nadvice)
-           (let ((ofunc (advice--symbol-function func)))
+           (let ((ofunc (symbol-function func)))
              (if (advice--p ofunc)
                  (advice--cd*r ofunc)
                ofunc)))
@@ -516,8 +516,8 @@ Return t if any PRED returns t."
 (defun find-function-library (function &optional lisp-only verbose)
   "Return the pair (ORIG-FUNCTION . LIBRARY) for FUNCTION.
 
-ORIG-FUNCTION is the original name, after removing all advice and
-resolving aliases.  LIBRARY is an absolute file name, a relative
+ORIG-FUNCTION is the original name, after resolving aliases.
+LIBRARY is an absolute file name, a relative
 file name inside the C sources directory, or a name of an
 autoloaded feature.
 
index d29d9ff656369aa7a6b4f364270e1c4aef25e68f..420c61acb55b2c62719c7d904ae2c9849cd428d6 100644 (file)
@@ -95,6 +95,13 @@ expected function symbol and function library, respectively."
   (advice-remove #'mark-sexp 'my-message))
 
 (ert-deftest find-func-tests--find-library-verbose ()
+  (unwind-protect
+      (progn
+        (advice-add 'dired :before #'ignore)
+        ;; bug#41104
+        (should (equal (find-function-library #'dired) '(dired . "dired"))))
+    (advice-remove 'dired #'ignore))
+
   (find-function-library #'join-line nil t)
   (with-current-buffer "*Messages*"
     (save-excursion