Function: edebug-outside-excursion
edebug-outside-excursion is a macro defined in edebug.el.gz.
Signature
(edebug-outside-excursion &rest BODY)
Documentation
Evaluate an expression list in the outside context.
Return the result of the last expression.
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/edebug.el.gz
;;; Evaluation of expressions
(defmacro edebug-outside-excursion (&rest body)
"Evaluate an expression list in the outside context.
Return the result of the last expression."
;; Only restores the non-variables context since all the variables let-bound
;; by Edebug will be properly reset to the appropriate context's value by
;; backtrace-eval.
(declare (debug t))
`(save-excursion ; of current-buffer
(if edebug-save-windows
(progn
;; After excursion, we will
;; restore to current window configuration.
(setq edebug-inside-windows
(edebug-current-windows edebug-save-windows))
;; Restore outside windows.
(edebug-set-windows edebug-outside-windows)))
(set-buffer edebug-buffer) ; why?
(set-match-data edebug-outside-match-data)
;; Restore outside context.
(setq-default cursor-in-non-selected-windows edebug-outside-d-c-i-n-s-w)
(unwind-protect
;; FIXME: This restoring of edebug-outside-buffer and
;; edebug-outside-point is redundant now that backtrace-eval does it
;; for us.
(with-current-buffer edebug-outside-buffer ; of edebug-buffer
(goto-char edebug-outside-point)
(if (marker-buffer (mark-marker))
(set-marker (mark-marker) edebug-outside-mark))
,@body)
;; Back to edebug-buffer. Restore rest of inside context.
;; (use-local-map edebug-inside-map)
(if edebug-save-windows
;; Restore inside windows.
(edebug-set-windows edebug-inside-windows))
;; Save values that may have been changed.
(setq edebug-outside-d-c-i-n-s-w
(default-value 'cursor-in-non-selected-windows))
;; Restore the outside saved values; don't alter
;; the outside binding loci.
(setq-default cursor-in-non-selected-windows t))))