summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp
diff options
context:
space:
mode:
authorGerd Moellmann <gerd@gnu.org>2000-07-05 15:16:15 +0000
committerGerd Moellmann <gerd@gnu.org>2000-07-05 15:16:15 +0000
commit105d6be118e80b4430aa986f80ae5d9115d8dc3c (patch)
tree259a27e800839c442d79575b48ebbf9595649d14 /lisp/emacs-lisp
parent44b6285eb6187d9da56d55fda68f9dcc766fdfb4 (diff)
downloademacs-105d6be118e80b4430aa986f80ae5d9115d8dc3c.tar.gz
emacs-105d6be118e80b4430aa986f80ae5d9115d8dc3c.tar.bz2
emacs-105d6be118e80b4430aa986f80ae5d9115d8dc3c.zip
(eval-defun-2): Remove parameter
EVAL-DEFUN-ARG-INTERNAL; always print to minibuffer. (eval-defun): If called with prefix arg, instrument code for Edebug.
Diffstat (limited to 'lisp/emacs-lisp')
-rw-r--r--lisp/emacs-lisp/lisp-mode.el51
1 files changed, 30 insertions, 21 deletions
diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el
index 74a0aed7eac..4a794883bd9 100644
--- a/lisp/emacs-lisp/lisp-mode.el
+++ b/lisp/emacs-lisp/lisp-mode.el
@@ -408,7 +408,7 @@ With argument, print output into current buffer."
(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 @@ Return the result of evaluation."
;; 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 @@ Return the result of evaluation."
;; 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.
-With argument, insert value in current buffer after the defun.
-Return the result of evaluation."
+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.
+
+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 ()