Mercurial > emacs
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