Subject: bug#416: flymake highlights errors from wrong file

From: Nikolaj Schumacher <[email-masked]>
Date: Sun, 15 Jun 2008 18:27:37 +0200

Hello.

flymake will highlight errors in the current buffer, even if the error
comes from a different file.

This can be noted, for example, when using

>  check-syntax:
>          gcc -Wall -Wextra -fsyntax-only *.cpp

instead of the more common

>  check-syntax:
>          gcc -Wall -Wextra -pedantic -fsyntax-only -S $(CHK_SOURCES)

in the Makefile.

It also happens when using ant, where it can't be avoided.

The attached patch filters out these errors when parsing.
Alternatively, they could be filtered out when highlighting.

regards,
Nikolaj Schumacher

diff -du /Users/nik/emacs/var/backup/\!Applications\!Emacs.app\!Contents\!Resources\!share\!emacs\!22.2\!lisp\!progmodes\!flymake.el.\~2\~ /Applications/Emacs.app/Contents/Resources/share/emacs/22.2/lisp/progmodes/flymake.el
--- lisp/progmodes/flymake.el	2008-06-02 23:30:29.000000000 +0200
+++ lisp/progmodes/flymake.el	2008-06-05 23:30:08.000000000 +0200
@@ -866,11 +867,10 @@
                                       (flymake-ler-file line-err-info)))
 	(setq line-err-info (flymake-ler-set-full-file line-err-info real-file-name))
 
-	(if (flymake-same-files real-file-name source-file-name)
-	    (setq line-err-info (flymake-ler-set-file line-err-info nil))
-	  (setq line-err-info (flymake-ler-set-file line-err-info (file-name-nondirectory real-file-name))))
+	(when (flymake-same-files real-file-name source-file-name)
+	  (setq line-err-info (flymake-ler-set-file line-err-info nil))
+	  (setq err-info-list (flymake-add-err-info err-info-list line-err-info))))
 
-	(setq err-info-list (flymake-add-err-info err-info-list line-err-info)))
       (flymake-log 3 "parsed '%s', %s line-err-info" (nth idx lines) (if line-err-info "got" "no"))
       (setq idx (1+ idx)))
     err-info-list))

Diff finished.  Thu Jun  5 23:30:18 2008