Edebug: Allow "S" to work during trace mode. Fixes debbugs #20074.

Also display the overlay arrow in go and go-nonstop modes.

* emacs-lisp/edebug.el (edebug--display-1): Move the
`input-pending' test to after trace mode's `sit-for'.
(edebug--recursive-edit): Insert "(sit-for 0)" after
"(edebug-overlay-arrow)".
This commit is contained in:
Alan Mackenzie 2015-03-16 22:10:00 +00:00
parent a961dcedeb
commit b0743354e5
2 changed files with 22 additions and 16 deletions

View file

@ -1,3 +1,13 @@
2015-03-16 Alan Mackenzie <acm@muc.de>
Edebug: Allow "S" to work during trace mode. Fixes debbugs #20074.
Also display the overlay arrow in go and go-nonstop modes.
* emacs-lisp/edebug.el (edebug--display-1): Move the
`input-pending' test to after trace mode's `sit-for'.
(edebug--recursive-edit): Insert "(sit-for 0)" after
"(edebug-overlay-arrow)".
2015-03-16 Stefan Monnier <monnier@iro.umontreal.ca>
* emacs-lisp/cl-macs.el (cl--transform-lambda): Rework to avoid

View file

@ -2446,15 +2446,6 @@ MSG is printed after `::::} '."
edebug-function)
))
;; Test if there is input, not including keyboard macros.
(if (input-pending-p)
(progn
(setq edebug-execution-mode 'step
edebug-stop t)
(edebug-stop)
;; (discard-input) ; is this unfriendly??
))
;; Make sure we bind those in the right buffer (bug#16410).
(let ((overlay-arrow-position overlay-arrow-position)
(overlay-arrow-string overlay-arrow-string))
@ -2507,14 +2498,18 @@ MSG is printed after `::::} '."
((eq edebug-execution-mode 'Trace-fast)
(sit-for 0))) ; Force update and continue.
(when (input-pending-p)
(setq edebug-stop t)
(setq edebug-execution-mode 'step) ; for `edebug-overlay-arrow'
(edebug-stop))
(edebug-overlay-arrow)
(unwind-protect
(if (or edebug-stop
(memq edebug-execution-mode '(step next))
(eq arg-mode 'error))
(progn
;; (setq edebug-execution-mode 'step)
;; (edebug-overlay-arrow) ; This doesn't always show up.
(edebug--recursive-edit arg-mode))) ; <--- Recursive edit
(edebug--recursive-edit arg-mode)) ; <--- Recursive edit
;; Reset the edebug-window-data to whatever it is now.
(let ((window (if (eq (window-buffer) edebug-buffer)
@ -2702,8 +2697,9 @@ MSG is printed after `::::} '."
(if (buffer-name edebug-buffer) ; if it still exists
(progn
(set-buffer edebug-buffer)
(if (memq edebug-execution-mode '(go Go-nonstop))
(edebug-overlay-arrow))
(when (memq edebug-execution-mode '(go Go-nonstop))
(edebug-overlay-arrow)
(sit-for 0))
(edebug-mode -1))
;; gotta have a buffer to let its buffer local variables be set
(get-buffer-create " bogus edebug buffer"))
@ -2721,7 +2717,7 @@ MSG is printed after `::::} '."
(step . "=>")
(next . "=>")
(go . "<>")
(Go-nonstop . "..") ; not used
(Go-nonstop . "..")
)
"Association list of arrows for each edebug mode.")