changeset 65695:e78a07e4c513

(compilation-error-properties): When getting the file from the previous error message, correctly decode the new data format.
author Richard M. Stallman <rms@gnu.org>
date Mon, 26 Sep 2005 00:00:49 +0000
parents c2508361021b
children f5e752cee995
files lisp/progmodes/compile.el
diffstat 1 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/progmodes/compile.el	Sun Sep 25 23:58:28 2005 +0000
+++ b/lisp/progmodes/compile.el	Mon Sep 26 00:00:49 2005 +0000
@@ -614,6 +614,7 @@
 ;; This function is the central driver, called when font-locking to gather
 ;; all information needed to later jump to corresponding source code.
 ;; Return a property list with all meta information on this error location.
+
 (defun compilation-error-properties (file line end-line col end-col type fmt)
   (unless (< (next-single-property-change (match-beginning 0) 'directory nil (point))
 	     (point))
@@ -628,11 +629,22 @@
 				    (get-text-property dir 'directory)))))
 	    (setq file (cons file (car dir)))))
       ;; This message didn't mention one, get it from previous
-      (setq file (previous-single-property-change (point) 'message)
-	    file (or (if file
-			 (car (nth 2 (car (or (get-text-property (1- file) 'message)
-					 (get-text-property file 'message))))))
-		     '("*unknown*"))))
+      (let ((prev-pos
+	     ;; Find the previous message.
+	     (previous-single-property-change (point) 'message)))
+	(if prev-pos
+	    ;; Get the file structure that belongs to it.
+	    (let* ((prev
+		    (or (get-text-property (1- prev-pos) 'message)
+			(get-text-property prev-pos 'message)))
+		   (prev-struct
+		    (car (nth 2 (car prev)))))
+	      ;; Construct FILE . DIR from that.
+	      (if prev-struct
+		  (setq file (cons (car prev-struct)
+				   (cadr prev-struct))))))
+	(unless file
+	  (setq file '("*unknown*")))))
     ;; All of these fields are optional, get them only if we have an index, and
     ;; it matched some part of the message.
     (and line