Function: edebug-debugger
edebug-debugger is a byte-compiled function defined in edebug.el.gz.
Signature
(edebug-debugger OFFSET-INDEX ARG-MODE VALUE)
Source Code
;; Defined in /usr/src/emacs/lisp/emacs-lisp/edebug.el.gz
(defun edebug-debugger (offset-index arg-mode value)
(if inhibit-redisplay
;; Don't really try to enter edebug within an eval from redisplay.
value
;; Check breakpoints and pending input.
;; If edebug display should be updated, call edebug--display.
;; Return value.
(let* ( ;; This needs to be here since breakpoints may be changed.
(edebug-breakpoints (car (cdr edebug-data))) ; list of breakpoints
(edebug-break-data (assq offset-index edebug-breakpoints))
(edebug-break-condition (car (cdr edebug-break-data)))
(breakpoint-disabled (nth 4 edebug-break-data))
(edebug-global-break
(if edebug-global-break-condition
(condition-case nil
(setq edebug-global-break-result
(edebug-eval edebug-global-break-condition))
(error nil))))
(edebug-break))
;;(edebug-trace "exp: %s" value)
;; Test whether we should break.
(setq edebug-break
(or edebug-global-break
(and edebug-break-data
(not breakpoint-disabled)
(or (not edebug-break-condition)
(setq edebug-break-result
(edebug-eval edebug-break-condition))))))
(if (and edebug-break
(nth 2 edebug-break-data)) ; is it temporary?
;; Delete the breakpoint.
(setcdr edebug-data
(cons (delq edebug-break-data edebug-breakpoints)
(cdr (cdr edebug-data)))))
;; Display if mode is not go, continue, or Continue-fast
;; or break, or input is pending,
(if (or (not (memq edebug-execution-mode '(go continue Continue-fast)))
edebug-break
(input-pending-p))
(edebug--display value offset-index arg-mode)) ; <---------- display
value)))