Sorry for chipping in late to this discussion.
[email protected] (Ludovic Courtès) writes:
> I think it’s often undesirable.
>
> Suppose you want to use ‘current-filename’ in an ‘assert’ macro, for
> instance: what you want is a hint, not an absolute path, since that path
> is likely to be invalid at the time you see it (for instance, it could
> point to the source tree on a build machine of your distro.)
Or suppose that a script and accompanying module set is compiled in the
build tree, then installed or relocated elsewhere. In this case, what
I'd be looking for, with this
(add-to-load-path ...)
stuff, would be to discover the location of the running script file
_now_, and to construct a load path element relative to that. If I'm
understanding correctly, 'current-filename' would give me the wrong
answer in that case too, because it would have the
pre-install/relocation location.
Perhaps after all the right thing, for my use case, is something based
on (car (command-line)) and (getcwd). I currently have this
'compatibility definition' for Guile 1.8.x:
(define (current-filename)
(let* ((script (car (command-line)))
(scriptdir (dirname script))
(absdir (cond ((string=? scriptdir ".")
(getcwd))
((string-match "^/" scriptdir)
scriptdir)
(else
(in-vicinity (getcwd) scriptdir)))))
(in-vicinity scriptdir (basename script))))
But maybe that's the better solution for 2.x as well.
Regards,
Neil