changeset 30055:16e560dd4ab8

(eval-defun-2): Remove parameter EVAL-DEFUN-ARG-INTERNAL; always print to minibuffer. (eval-defun): If called with prefix arg, instrument code for Edebug.
author Gerd Moellmann <gerd@gnu.org>
date Wed, 05 Jul 2000 15:16:15 +0000
parents 72640301c1fe
children 2381ee2fec5b
files lisp/emacs-lisp/lisp-mode.el
diffstat 1 files changed, 30 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/emacs-lisp/lisp-mode.el	Wed Jul 05 15:15:53 2000 +0000
+++ b/lisp/emacs-lisp/lisp-mode.el	Wed Jul 05 15:16:15 2000 +0000
@@ -408,7 +408,7 @@
 	 (cons 'progn (mapcar 'eval-defun-1 (cdr form))))
 	(t form)))
 
-(defun eval-defun-2 (eval-defun-arg-internal)
+(defun eval-defun-2 ()
   "Evaluate defun that point is in or before.
 The value is displayed in the minibuffer.
 If the current defun is actually a call to `defvar',
@@ -430,7 +430,7 @@
       ;; variables like `end'.
       (apply
        #'eval-region 
-       (let ((standard-output (if eval-defun-arg-internal (current-buffer) t))
+       (let ((standard-output t)
 	     beg end form)
 	 ;; Read the form from the buffer, and record where it ends.
 	 (save-excursion
@@ -450,27 +450,36 @@
   ;; The result of evaluation has been put onto VALUES.  So return it.
   (car values))
 
-(defun eval-defun (eval-defun-arg-internal)
-  "Evaluate defun that point is in or before.
-The value is displayed in the minibuffer.
-If the current defun is actually a call to `defvar',
-then reset the variable using the initial value expression
-even if the variable already has some other value.
-\(Normally `defvar' does not change the variable's value
-if it already has a value.\)
+(defun eval-defun (edebug-it)
+  "Evaluate the top-level form containing point, or after point.
+
+If the current defun is actually a call to `defvar', then reset the
+variable using its initial value expression even if the variable
+already has some other value.  (Normally `defvar' does not change the
+variable's value if it already has a value.)
+
+With a prefix argument, instrument the code for Edebug.
+
+If acting on a `defun' for FUNCTION, and the function was
+instrumented, `Edebug: FUNCTION' is printed in the minibuffer.  If not
+instrumented, just FUNCTION is printed.
 
-With argument, insert value in current buffer after the defun.
-Return the result of evaluation."
+If not acting on a `defun', the result of evaluation is displayed in
+the minibuffer."
   (interactive "P")
-  (if (null eval-expression-debug-on-error)
-      (eval-defun-2 eval-defun-arg-internal)
-    (let ((old-value (make-symbol "t")) new-value value)
-      (let ((debug-on-error old-value))
-	(setq value (eval-defun-2 eval-defun-arg-internal))
-	(setq new-value debug-on-error))
-      (unless (eq old-value new-value)
-	(setq debug-on-error new-value))
-      value)))
+  (cond (edebug-it
+	 (require 'edebug)
+	 (eval-defun (not edebug-all-defs)))
+	(t
+	 (if (null eval-expression-debug-on-error)
+	     (eval-defun-2)
+	   (let ((old-value (make-symbol "t")) new-value value)
+	     (let ((debug-on-error old-value))
+	       (setq value (eval-defun-2))
+	       (setq new-value debug-on-error))
+	     (unless (eq old-value new-value)
+	       (setq debug-on-error new-value))
+	     value)))))
 
 
 (defun lisp-comment-indent ()