The function current-pathname
is useful for loading other files relative to a file.
current-pathname
computes a pathname from the current operation as follows:
When evaluating or compiling an Editor buffer
Uses the pathname of the buffer, if available, otherwise uses the current working directory.
Uses the current working directory.
The pathname computed above is then translated to a physical pathname, and the argument relative-pathname is merged with this physical pathname. The pathname-type
of the result pathname is set to type if supplied, the pathname-version
is set to :newest
, and pathname is returned.
A useful value for type is nil
, which can be used to allow load
to choose between lisp or fasl regardless of the type of the current pathname.
defsystem uses current-pathname
with its :default-host
argument.
Suppose you want the file foo
to load the file bar
.
While loading the source file foo.lisp
:
(current-pathname "bar")
=>
#P"C:/temp/bar.lisp"
While loading the binary file foo.ofasl
:
(current-pathname "bar")
=>
#P"C:/temp/bar.ofasl"
To load bar.lisp
or bar.ofasl
according to the value of *load-fasl-or-lisp-file*
, regardless of whether foo.lisp
or foo.ofasl
is being loaded, specify type nil
:
(load (current-pathname "bar" nil))
LispWorks User Guide and Reference Manual - 20 Sep 2017