# HG changeset patch # User Richard M. Stallman # Date 1127692849 0 # Node ID e78a07e4c51383238bcb100c6ed4de4c545afcd6 # Parent c2508361021b9cb27d5de140bd8a1e21624c97df (compilation-error-properties): When getting the file from the previous error message, correctly decode the new data format. diff -r c2508361021b -r e78a07e4c513 lisp/progmodes/compile.el --- 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