Subject: Re: bug#3418: Issue with compile.el and compilation-parse-errors-filename-function

From: Eli Zaretskii <[email-masked]>
Date: Tue, 26 Jan 2016 16:42:58 +0200

> From: Andrew Hyatt <[email-masked]>
> Date: Tue, 26 Jan 2016 00:21:51 -0500
> Cc: [email-masked]
> 
> Gary Oberbrunner <[email-masked]> writes:
> 
> > Hi emacs folks.  I submitted a patch to compilation-get-file-structure in
> > compile.el in 2001, introducing this stanza:
> >
> > 	;; If compilation-parse-errors-filename-function is
> > 	;; defined, use it to process the filename.
> > 	(when compilation-parse-errors-filename-function
> > 	  (setq filename
> > 		(funcall
> > 			 filename)))
> >
> > At some point since then, the filename was changed to not always be absolute;
> > there's now a variable spec-directory in that function.  This means that
> > implementations of compilation-parse-errors-filename-function can't always work
> > correctly since it doesn't know the full path of the file.
> >
> > I'm happy to work on a fix, but I see a few issues.
> >
> > Solution 1: add 2nd arg SPEC-DIRECTORY to
> > compilation-parse-errors-filename-function.
> > Problem: existing implementations will get an incorrect number of args error and
> > will have to change.
> >
> > Solution 2: make filename absolute before passing to
> > compilation-parse-errors-filename-function.
> > Problem: the rest of the code is pretty careful not to absolutize the filename;
> > this would change the behavior in ways I don't completely understand.
> >
> > Of course I am personally happy with solution 1, but since it affects
> > compatibility I thought I should bring it up on this list.  I am not on the
> > list, so please cc me with any replies, thanks!
> 
> Sadly, this bug hasn't been responded to.  Your description is pretty
> code-intensive, for those of us not familiar with the internals, can you
> give instructions on how to reproduce a user-visible issue?

FWIW, I don't see why not adopt Soution 1, just make the second
argument optional.  That would be backward-compatible, IIUC.