Commit b0743354 authored by Alan Mackenzie's avatar Alan Mackenzie
Browse files

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)".
parent a961dced
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> 2015-03-16 Stefan Monnier <monnier@iro.umontreal.ca>
   
* emacs-lisp/cl-macs.el (cl--transform-lambda): Rework to avoid * emacs-lisp/cl-macs.el (cl--transform-lambda): Rework to avoid
......
...@@ -2446,15 +2446,6 @@ MSG is printed after `::::} '." ...@@ -2446,15 +2446,6 @@ MSG is printed after `::::} '."
edebug-function) 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). ;; Make sure we bind those in the right buffer (bug#16410).
(let ((overlay-arrow-position overlay-arrow-position) (let ((overlay-arrow-position overlay-arrow-position)
(overlay-arrow-string overlay-arrow-string)) (overlay-arrow-string overlay-arrow-string))
...@@ -2507,14 +2498,18 @@ MSG is printed after `::::} '." ...@@ -2507,14 +2498,18 @@ MSG is printed after `::::} '."
((eq edebug-execution-mode 'Trace-fast) ((eq edebug-execution-mode 'Trace-fast)
(sit-for 0))) ; Force update and continue. (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 (unwind-protect
(if (or edebug-stop (if (or edebug-stop
(memq edebug-execution-mode '(step next)) (memq edebug-execution-mode '(step next))
(eq arg-mode 'error)) (eq arg-mode 'error))
(progn (edebug--recursive-edit arg-mode)) ; <--- Recursive edit
;; (setq edebug-execution-mode 'step)
;; (edebug-overlay-arrow) ; This doesn't always show up.
(edebug--recursive-edit arg-mode))) ; <--- Recursive edit
;; Reset the edebug-window-data to whatever it is now. ;; Reset the edebug-window-data to whatever it is now.
(let ((window (if (eq (window-buffer) edebug-buffer) (let ((window (if (eq (window-buffer) edebug-buffer)
...@@ -2702,8 +2697,9 @@ MSG is printed after `::::} '." ...@@ -2702,8 +2697,9 @@ MSG is printed after `::::} '."
(if (buffer-name edebug-buffer) ; if it still exists (if (buffer-name edebug-buffer) ; if it still exists
(progn (progn
(set-buffer edebug-buffer) (set-buffer edebug-buffer)
(if (memq edebug-execution-mode '(go Go-nonstop)) (when (memq edebug-execution-mode '(go Go-nonstop))
(edebug-overlay-arrow)) (edebug-overlay-arrow)
(sit-for 0))
(edebug-mode -1)) (edebug-mode -1))
;; gotta have a buffer to let its buffer local variables be set ;; gotta have a buffer to let its buffer local variables be set
(get-buffer-create " bogus edebug buffer")) (get-buffer-create " bogus edebug buffer"))
...@@ -2721,7 +2717,7 @@ MSG is printed after `::::} '." ...@@ -2721,7 +2717,7 @@ MSG is printed after `::::} '."
(step . "=>") (step . "=>")
(next . "=>") (next . "=>")
(go . "<>") (go . "<>")
(Go-nonstop . "..") ; not used (Go-nonstop . "..")
) )
"Association list of arrows for each edebug mode.") "Association list of arrows for each edebug mode.")
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment