Kevin Rodgers <ihs_4664@yahoo.com> writes:
kl.vanw@gmail.com wrote:
Here's my situation. My header files (C++) are located in a dir named
src/lib. These are the files I edit and are CVS managed. When I run
'make', make copies the headers into include/, which my other source
files include. Then if there was an error in one of the headers, and I
use 'next-error' in the compilation buffer to open the header, emacs
opens the file in the include/ directory, but I really need it to open
the header in src/lib. Can I some how help emacs find the right file?
Unfortunately, I don't have the option of changing the way our makefile
works or the #include statements.
Try this:
(add-hook 'find-file-hook
(lambda ()
(let* ((file (file-name-nondirectory buffer-file-name))
(directory (file-name-directory buffer-file-name))
(alternate-file (expand-file-name file "../src/lib")))
(when (and (equal (file-name-nondirectory
(directory-file-name directory))
"include")
(file-exists-p alternate-file))
(find-alternate-file alternate-file)))))
--
Kevin
I have a similar problem, except that my CVS has *.F files (in say ../src) for
the fortran preprocessor, and make gives me corresponding *.f files in the
current directory. How would one modify the above example for this case?