Mercurial > emacs
changeset 60316:c2f592ab6807
(debug-on-entry-1): Reimplement to make sure that debug-entry-code can
be safely removed from a function while this code is being evaluated.
Revert the 2005-02-27 change as the new implementation no longer
requires it. Make sure that a function body containing just a string
is not mistaken for a docstring.
author | Lute Kamstra <lute@gnu.org> |
---|---|
date | Tue, 01 Mar 2005 09:08:47 +0000 |
parents | c185b3fd86dc |
children | dbdab00b8f09 |
files | lisp/emacs-lisp/debug.el |
diffstat | 1 files changed, 10 insertions(+), 17 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/emacs-lisp/debug.el Tue Mar 01 08:41:52 2005 +0000 +++ b/lisp/emacs-lisp/debug.el Tue Mar 01 09:08:47 2005 +0000 @@ -25,7 +25,7 @@ ;;; Commentary: -;; This is a major mode documented in the Emacs manual. +;; This is a major mode documented in the Emacs Lisp manual. ;;; Code: @@ -479,8 +479,6 @@ (insert ? ))) (beginning-of-line)) - - (put 'debugger-env-macro 'lisp-indent-function 0) (defmacro debugger-env-macro (&rest body) "Run BODY in original environment." @@ -694,7 +692,6 @@ (setq body (cons (documentation function) body))) (fset function (cons 'lambda (cons (car contents) body))))))) - (defconst debug-entry-code '(if inhibit-debug-on-entry nil (debug 'debug)) "Code added to a function to cause it to call the debugger upon entry.") @@ -705,22 +702,18 @@ (debug-on-entry-1 function (cdr defn) flag) (or (eq (car defn) 'lambda) (error "%s not user-defined Lisp function" function)) - (let ((tail (cddr defn))) + (let ((tail (cdr defn))) ;; Skip the docstring. - (if (stringp (car tail)) (setq tail (cdr tail))) + (when (and (stringp (cadr tail)) (cddr tail)) + (setq tail (cdr tail))) ;; Skip the interactive form. - (if (eq 'interactive (car-safe (car tail))) (setq tail (cdr tail))) - (unless (eq flag (equal (car tail) debug-entry-code)) - ;; If the function has no body, add nil as a body element. - (when (null tail) - (setq tail (list nil)) - (nconc defn tail)) + (when (eq 'interactive (car-safe (cadr tail))) + (setq tail (cdr tail))) + (unless (eq flag (equal (cadr tail) debug-entry-code)) ;; Add/remove debug statement as needed. - (if (not flag) - (progn (setcar tail (cadr tail)) - (setcdr tail (cddr tail))) - (setcdr tail (cons (car tail) (cdr tail))) - (setcar tail debug-entry-code))) + (if flag + (setcdr tail (cons debug-entry-code (cdr tail))) + (setcdr tail (cddr tail)))) defn)))) (defun debugger-list-functions ()