summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBarry Warsaw <barry@python.org>1998-03-26 16:08:59 (GMT)
committerBarry Warsaw <barry@python.org>1998-03-26 16:08:59 (GMT)
commitf9b99f437569736076891d5dad80851be4f8cfdc (patch)
tree1263a0c945d961978527853eabe698b1f5c71b74
parent512af04b35e51fa4ee9fb9321322931612d0871d (diff)
downloadcpython-f9b99f437569736076891d5dad80851be4f8cfdc.zip
cpython-f9b99f437569736076891d5dad80851be4f8cfdc.tar.gz
cpython-f9b99f437569736076891d5dad80851be4f8cfdc.tar.bz2
(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).
-rw-r--r--Misc/python-mode.el22
1 files changed, 13 insertions, 9 deletions
diff --git a/Misc/python-mode.el b/Misc/python-mode.el
index 6d10dcf..211fd3c 100644
--- a/Misc/python-mode.el
+++ b/Misc/python-mode.el
@@ -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))
- (when (and py-jump-on-exception line)
- (beep)
- (py-jump-to-exception 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)
+ (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)
- (pop-to-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)))
))
)))