From 6ff930c3d206417e4cec9429fa5d71bb5c9af541 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Fabi=C3=A1n=20Ezequiel=20Gallina?= Date: Wed, 30 Jan 2013 12:02:58 -0300 Subject: [PATCH] * progmodes/python.el (python-pdbtrack-comint-output-filter-function): Enhancements on stacktrace detection. (thanks @gnovak) --- lisp/ChangeLog | 6 ++++++ lisp/progmodes/python.el | 20 +++++++++++--------- 2 files changed, 17 insertions(+), 9 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 41c5c7d1671..bd8f5c08274 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,9 @@ +2013-01-30 Fabián Ezequiel Gallina + + * progmodes/python.el + (python-pdbtrack-comint-output-filter-function): Enhancements on + stacktrace detection. (thanks @gnovak) + 2013-01-30 Glenn Morris * imenu.el (imenu-default-create-index-function): diff --git a/lisp/progmodes/python.el b/lisp/progmodes/python.el index 71c5ba57fa0..2a7a3765ac2 100644 --- a/lisp/progmodes/python.el +++ b/lisp/progmodes/python.el @@ -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))))) -- 2.39.2