Hi,
I need the path of the source file from which a particular form is loaded (similar to __FILE__ in C). Currently I have the following macros in place:
(defmacro source-pathname () (let ((compile-file-pathname *compile-file-pathname*)) `(or ,compile-file-pathname (load-time-value *load-pathname*))))
(defmacro source-truename () (let ((compile-file-truename *compile-file-truename*)) `(or ,compile-file-truename (load-time-value *load-truename*))))
(defmacro source-directory () `(make-pathname :defaults (source-truename) :name nil :type nil))
This works fine when I use (LOAD ...), (LOAD (COMPILE-FILE ...)), slime-load-file or slime-compile-and-load-file.
However it fails when I use slime-compile-defun, slime-eval-defun or slime-eval-last-expression. Shouldn't slime bind *compile-file-pathname*, *load-pathname*, etc. when these functions are run?
Thanks, Chaitanya