* lisp/progmodes/python.el (python-pdbtrack-get-source-buffer): Use
authorLeo Liu <sdl.web@gmail.com>
Wed, 25 Apr 2012 16:46:01 +0000 (00:46 +0800)
committerLeo Liu <sdl.web@gmail.com>
Wed, 25 Apr 2012 16:46:01 +0000 (00:46 +0800)
compilation-message if available to find real filename.

lisp/ChangeLog
lisp/progmodes/python.el

index 81313ef..55df33b 100644 (file)
@@ -1,3 +1,8 @@
+2012-04-25  Leo Liu  <sdl.web@gmail.com>
+
+       * progmodes/python.el (python-pdbtrack-get-source-buffer): Use
+       compilation-message if available to find real filename.
+
 2012-04-25  Chong Yidong  <cyd@gnu.org>
 
        * vc/diff-mode.el (diff-setup-whitespace): New function.
index b00e42d..620ea8c 100644 (file)
@@ -2606,9 +2606,17 @@ problem."
     (let* ((filename (match-string 1 block))
            (lineno (string-to-number (match-string 2 block)))
            (funcname (match-string 3 block))
+           (msg (get-text-property 0 'compilation-message filename))
+           (loc (and msg (compilation--message->loc msg)))
            funcbuffer)
 
-      (cond ((file-exists-p filename)
+      (cond ((and loc (markerp (compilation--loc->marker loc)))
+             (setq funcbuffer (marker-buffer (compilation--loc->marker loc)))
+             (list (with-current-buffer funcbuffer
+                     (line-number-at-pos (compilation--loc->marker loc)))
+                   funcbuffer))
+
+            ((file-exists-p filename)
              (list lineno (find-file-noselect filename)))
 
             ((setq funcbuffer (python-pdbtrack-grub-for-buffer funcname lineno))
@@ -2626,15 +2634,12 @@ problem."
                                                   (buffer-substring
                                                    (point-min) (point-max)))
                                     )))))))
-               (list lineno funcbuffer))
+             (list lineno funcbuffer))
 
             ((= (elt filename 0) ?\<)
              (format "(Non-file source: '%s')" filename))
 
-            (t (format "Not found: %s(), %s" funcname filename)))
-      )
-    )
-  )
+            (t (format "Not found: %s(), %s" funcname filename))))))
 
 (defun python-pdbtrack-grub-for-buffer (funcname _lineno)
   "Find recent Python mode buffer named, or having function named FUNCNAME."