Mercurial > emacs
changeset 14730:5b81926cc17f
(compilation-parse-errors):
Collapse //'s using command-line-normalize-file-name.
author | Richard M. Stallman <rms@gnu.org> |
---|---|
date | Fri, 01 Mar 1996 20:13:42 +0000 |
parents | b072589a6e57 |
children | 3682b5e64ce3 |
files | lisp/progmodes/compile.el |
diffstat | 1 files changed, 8 insertions(+), 26 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/progmodes/compile.el Fri Mar 01 20:13:01 1996 +0000 +++ b/lisp/progmodes/compile.el Fri Mar 01 20:13:42 1996 +0000 @@ -1391,32 +1391,6 @@ (setq alist (car alist)) (error "compilation-parse-errors: impossible regexp match!")) - ;; Some compilers (e.g. Sun's java compiler, reportedly) - ;; produce bogus file names like "./bar//foo.c" for the file - ;; "bar/foo.c"; expand-file-name will collapse these into - ;; "/foo.c" and fail to find the appropriate file. So we look - ;; for doubled slashes in the file name and fix them up in the - ;; buffer. It is essential here to save the match-data not - ;; only because the `search-forward' overwrites it, but - ;; because the internally stored data returned by - ;; `match-beginning' and `match-end' is integer locations - ;; instead of markers; the deletions we do here make all the - ;; later position values incorrect. However, when we extract - ;; the positions with (match-data), we get a list of markers - ;; that do compensate properly for insertions and deletions - ;; automagically. - (let* ((data (match-data)) - ;; We extract from DATA here instead of just using - ;; `(match-end (nth 1 alist))' because we need a marker - ;; that will track the end of the file name properly - ;; after we delete some characters in the middle of it. - (end (nth (1+ (* 2 (nth 1 alist))) data))) - (save-excursion - (goto-char (1+ (nth (* 2 (nth 1 alist)) data))) - (while (search-forward "//" end t) - (delete-char -1))) - (store-match-data data)) - ;; Extract the file name and line number from the error message. (let ((beginning-of-match (match-beginning 0)) ;looking-at nukes (filename (buffer-substring (match-beginning (nth 1 alist)) @@ -1441,6 +1415,14 @@ ;; compile-abbreviate-directory). (file-name-absolute-p filename) (setq filename (concat comint-file-name-prefix filename))) + + ;; Some compilers (e.g. Sun's java compiler, reportedly) + ;; produce bogus file names like "./bar//foo.c" for the file + ;; "bar/foo.c"; expand-file-name will collapse these into + ;; "/foo.c" and fail to find the appropriate file. So we look + ;; for doubled slashes in the file name and fix them up in the + ;; buffer. + (setq filename (command-line-normalize-file-name filename)) (setq filename (cons filename (cons default-directory (nthcdr 4 alist))))