]> code.delx.au - gnu-emacs/commitdiff
* progmodes/python.el
authorFabián Ezequiel Gallina <fgallina@gnu.org>
Wed, 30 Jan 2013 15:02:58 +0000 (12:02 -0300)
committerFabián Ezequiel Gallina <fgallina@gnu.org>
Wed, 30 Jan 2013 15:02:58 +0000 (12:02 -0300)
(python-pdbtrack-comint-output-filter-function): Enhancements on
stacktrace detection.  (thanks @gnovak)

lisp/ChangeLog
lisp/progmodes/python.el

index 41c5c7d16712402268787faf84653ca42662142c..bd8f5c082745e1712ff937cb6360a60c8b1b1769 100644 (file)
@@ -1,3 +1,9 @@
+2013-01-30  Fabián Ezequiel Gallina  <fgallina@cuca>
+
+       * progmodes/python.el
+       (python-pdbtrack-comint-output-filter-function): Enhancements on
+       stacktrace detection.  (thanks @gnovak)
+
 2013-01-30  Glenn Morris  <rgm@gnu.org>
 
        * imenu.el (imenu-default-create-index-function):
index 71c5ba57fa09a0f51c0e64a10f85699636975c46..2a7a3765ac275257eaf09669935d1a5fae238e11 100644 (file)
@@ -2317,15 +2317,17 @@ Argument OUTPUT is a string with the output from the comint process."
            (file-name
             (with-temp-buffer
               (insert full-output)
-              (goto-char (point-min))
-              ;; OK, this sucked but now it became a cool hack. The
-              ;; stacktrace information normally is on the first line
-              ;; but in some cases (like when doing a step-in) it is
-              ;; on the second.
-              (when (or (looking-at python-pdbtrack-stacktrace-info-regexp)
-                        (and
-                         (forward-line)
-                         (looking-at python-pdbtrack-stacktrace-info-regexp)))
+              ;; When the debugger encounters a pdb.set_trace()
+              ;; command, it prints a single stack frame.  Sometimes
+              ;; it prints a bit of extra information about the
+              ;; arguments of the present function.  When ipdb
+              ;; encounters an exception, it prints the _entire_ stack
+              ;; trace.  To handle all of these cases, we want to find
+              ;; the _last_ stack frame printed in the most recent
+              ;; batch of output, then jump to the corrsponding
+              ;; file/line number.
+              (goto-char (point-max))
+              (when (re-search-backward python-pdbtrack-stacktrace-info-regexp nil t)
                 (setq line-number (string-to-number
                                    (match-string-no-properties 2)))
                 (match-string-no-properties 1)))))