(py-postprocess-output-buffer): Return t if an exception was found,

otherwise return nil.

(py-execute-region): When executing the buffer asynchronously in a
subprocess, if an exception occurred, show both the output buffer and
the file containing the exception, leaving point on the source line
containing bottom-most error in the traceback.  If no exception
occurred, jump to the output buffer (no change).
This commit is contained in:
Barry Warsaw 1998-03-26 16:08:59 +00:00
parent 512af04b35
commit f9b99f4375
1 changed files with 13 additions and 9 deletions

View File

@ -1133,8 +1133,9 @@ Electric behavior is inhibited inside a string or comment."
(set-buffer curbuf))))
(defun py-postprocess-output-buffer (buf)
;; Highlight exceptions found in BUF
(let (line file bol)
;; Highlight exceptions found in BUF. If an exception occurred
;; return t, otherwise return nil. BUF must exist.
(let (line file bol err-p)
(save-excursion
(set-buffer buf)
(beginning-of-buffer)
@ -1142,11 +1143,12 @@ Electric behavior is inhibited inside a string or comment."
(setq file (match-string 1)
line (string-to-int (match-string 2))
bol (py-point 'bol))
(py-highlight-line bol (py-point 'eol) file line))
(py-highlight-line bol (py-point 'eol) file line)))
(when (and py-jump-on-exception line)
(beep)
(py-jump-to-exception file line))
)))
(py-jump-to-exception file line)
(setq err-p t))
err-p))
@ -1263,8 +1265,10 @@ is inserted at the end. See also the command `py-clear-queue'."
(if (not (get-buffer py-output-buffer))
(message "No output.")
(setq py-exception-buffer (current-buffer))
(py-postprocess-output-buffer py-output-buffer)
(let ((err-p (py-postprocess-output-buffer py-output-buffer)))
(pop-to-buffer py-output-buffer)
(if err-p
(pop-to-buffer py-exception-buffer)))
))
)))