Function: edebug-eval-expression
edebug-eval-expression is an interactive and byte-compiled function
defined in edebug.el.gz.
Signature
(edebug-eval-expression EXPR &optional PP)
Documentation
Evaluate an expression in the outside environment.
If interactive, prompt for the expression.
Print result in minibuffer by default, but if PP is non-nil open a new window and pretty-print the result there. (Interactively, this is the prefix key.)
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/edebug.el.gz
(defun edebug-eval-expression (expr &optional pp)
"Evaluate an expression in the outside environment.
If interactive, prompt for the expression.
Print result in minibuffer by default, but if PP is non-nil open
a new window and pretty-print the result there. (Interactively,
this is the prefix key.)"
(interactive (list (read--expression "Edebug eval: ")
current-prefix-arg))
(let* ((errored nil)
(value
(edebug-outside-excursion
(if debug-allow-recursive-debug
(edebug-eval expr)
(condition-case err
(edebug-eval expr)
(error
(setq errored
(format "%s: %s"
(get (car err) 'error-message)
(car (cdr err)))))))))
(result
(unless errored
(values--store-value value)
(concat (edebug-safe-prin1-to-string value)
(eval-expression-print-format value)))))
;; Provide a defined previous value also in case of an error.
(setq edebug-previous-value (if errored nil value))
(cond
(errored
(message "Error: %s" errored))
(pp
(save-selected-window
(pop-to-buffer "*Edebug Results*")
(erase-buffer)
(pp value (current-buffer))
(goto-char (point-min))
(lisp-data-mode)))
(t
(princ result)))))