]> code.delx.au - gnu-emacs/commitdiff
Edebug: Allow "S" to work during trace mode. Fixes debbugs #20074.
authorAlan Mackenzie <acm@muc.de>
Mon, 16 Mar 2015 22:10:00 +0000 (22:10 +0000)
committerAlan Mackenzie <acm@muc.de>
Mon, 16 Mar 2015 22:10:00 +0000 (22:10 +0000)
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)".

lisp/ChangeLog
lisp/emacs-lisp/edebug.el

index 41898bee68620f91ab0fa5d044ecb5b8e55ec01f..cbd1bce25e843c980e89f2bc148d7b4e77f7686a 100644 (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
index 333f02842f7895ef47d2a9dc1f8388f44f731719..aa7cdf96337970270b264a5f65f184a06b351474 100644 (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.")