From f0685ed1d455e2e47b11f1ea9a708a2730a270a4 Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Mon, 26 Sep 2005 00:01:27 +0000 Subject: [PATCH] (compilation-error-properties): When getting the file from the previous error message, correctly decode the new data format. --- lisp/ChangeLog | 9 +++++++++ lisp/progmodes/compile.el | 22 +++++++++++++++++----- 2 files changed, 26 insertions(+), 5 deletions(-) diff --git a/lisp/ChangeLog b/lisp/ChangeLog index 9c9bc0d1eb1..62cd1a6df9e 100644 --- a/lisp/ChangeLog +++ b/lisp/ChangeLog @@ -1,3 +1,12 @@ +2005-09-25 Richard M. Stallman + + * progmodes/compile.el (compilation-error-properties): + When getting the file from the previous error message, + correctly decode the new data format. + + * progmodes/cc-cmds.el (c-electric-paren): + Call old-blink-paren only for close-paren. + 2005-09-24 Andreas Schwab * term/rxvt.el (rxvt-register-default-colors): Delete redundant diff --git a/lisp/progmodes/compile.el b/lisp/progmodes/compile.el index 5ff256e5f8f..3ef1c0c1ff6 100644 --- a/lisp/progmodes/compile.el +++ b/lisp/progmodes/compile.el @@ -614,6 +614,7 @@ Faces `compilation-error-face', `compilation-warning-face', ;; 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 @@ Faces `compilation-error-face', `compilation-warning-face', (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 -- 2.39.2