]> granicus.if.org Git - python/commitdiff
(py-jump-on-exception): Variable which if t, means that if an
authorBarry Warsaw <barry@python.org>
Wed, 3 Dec 1997 05:25:48 +0000 (05:25 +0000)
committerBarry Warsaw <barry@python.org>
Wed, 3 Dec 1997 05:25:48 +0000 (05:25 +0000)
exception occurs in a synchronous Python subprocess, the mode will
automatically jump to the innermost exception.

Misc/python-mode.el

index 045d9b0aa0d00ac389e0ade225036578668d9ef1..3ea1f3b15b3919be3b7928cef886989ef32c7c31 100644 (file)
@@ -238,6 +238,12 @@ the Emacs bell is also rung as a warning."
   :type 'boolean
   :group 'python)
 
+(defcustom py-jump-on-exception t
+  "*Jump to innermost exception frame in *Python Output* buffer.
+When this variable is non-nil and ane exception occurs when running
+Python code synchronously in a subprocess, jump immediately to the
+source code of the innermost frame.")
+
 (defcustom py-backspace-function 'backward-delete-char-untabify
   "*Function called by `py-electric-backspace' when deleting backwards."
   :type 'function
@@ -1043,15 +1049,21 @@ Electric behavior is inhibited inside a string or comment."
       (set-buffer curbuf))))
 
 (defun py-postprocess-output-buffer (buf)
-  (save-excursion
-    (set-buffer buf)
-    (beginning-of-buffer)
-    (while (re-search-forward py-traceback-line-re nil t)
-      (let ((file (match-string 1))
-           (line (string-to-int (match-string 2))))
-       (py-highlight-line (py-point 'bol) (py-point 'eol) file line))
+  (let (line file bol)
+    (save-excursion
+      (set-buffer buf)
+      (beginning-of-buffer)
+      (while (re-search-forward py-traceback-line-re nil t)
+       (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))
       )))
 
+
 \f
 ;;; Subprocess commands