mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-27 07:37:33 +00:00
Improve Edebug error for attempting to instrument built-in functions.
* lisp/emacs-lisp/edebug.el (edebug-instrument-function): Use it to signal an error for built-in functions. * lisp/emacs-lisp/find-func.el (find-function-noselect): New arg lisp-only. Fixes: debbugs:6664
This commit is contained in:
parent
1e91d50696
commit
23a8a5ab69
@ -1,3 +1,11 @@
|
||||
2011-08-21 Chong Yidong <cyd@stupidchicken.com>
|
||||
|
||||
* emacs-lisp/find-func.el (find-function-noselect): New arg
|
||||
lisp-only.
|
||||
|
||||
* emacs-lisp/edebug.el (edebug-instrument-function): Use it to
|
||||
signal an error for built-in functions (Bug#6664).
|
||||
|
||||
2011-08-21 Lars Magne Ingebrigtsen <larsi@gnus.org>
|
||||
|
||||
* mail/smtpmail.el (smtpmail-smtp-user): New variable.
|
||||
|
@ -3408,7 +3408,7 @@ go to the end of the last sexp, or if that is the same point, then step."
|
||||
(message "%s is already instrumented." func)
|
||||
func)
|
||||
(t
|
||||
(let ((loc (find-function-noselect func)))
|
||||
(let ((loc (find-function-noselect func t)))
|
||||
(unless (cdr loc)
|
||||
(error "Could not find the definition in its file"))
|
||||
(with-current-buffer (car loc)
|
||||
|
@ -312,7 +312,7 @@ The search is done in the source for library LIBRARY."
|
||||
(cons (current-buffer) nil))))))))
|
||||
|
||||
;;;###autoload
|
||||
(defun find-function-noselect (function)
|
||||
(defun find-function-noselect (function &optional lisp-only)
|
||||
"Return a pair (BUFFER . POINT) pointing to the definition of FUNCTION.
|
||||
|
||||
Finds the source file containing the definition of FUNCTION
|
||||
@ -320,6 +320,10 @@ in a buffer and the point of the definition. The buffer is
|
||||
not selected. If the function definition can't be found in
|
||||
the buffer, returns (BUFFER).
|
||||
|
||||
If FUNCTION is a built-in function, this function normally
|
||||
attempts to find it in the Emacs C sources; however, if LISP-ONLY
|
||||
is non-nil, signal an error instead.
|
||||
|
||||
If the file where FUNCTION is defined is not known, then it is
|
||||
searched for in `find-function-source-path' if non-nil, otherwise
|
||||
in `load-path'."
|
||||
@ -345,6 +349,8 @@ in `load-path'."
|
||||
(cond ((eq (car-safe def) 'autoload)
|
||||
(nth 1 def))
|
||||
((subrp def)
|
||||
(if lisp-only
|
||||
(error "%s is a built-in function" function))
|
||||
(help-C-file-name def 'subr))
|
||||
((symbol-file function 'defun)))))
|
||||
(find-function-search-for-symbol function nil library))))
|
||||
|
Loading…
Reference in New Issue
Block a user