如何引用当前正在Emacs Lisp中加载的文件?

时间:2009-08-28 02:34:05

标签: emacs elisp

我希望包含对非elisp文件(一个小型​​Python程序)的引用,并且希望能够说“它与当前文件位于同一目录中,但具有不同的文件名。 “在许多脚本语言中,有__FILE__(在PHP中)用于获取当前文件的绝对路径。

如果要包含的文件位于load-path中,那么我可以使用(locate-library "file.py" t)找到它,但如果文件不在加载路径中,我会陷入困境。

有没有办法让Emacs Lisp文件找到自己的绝对路径(加载时,不被访问)?

1 个答案:

答案 0 :(得分:25)

M-x describe-variable load-file-name

load-file-name is a variable defined in `C source code'.

Documentation:
Full name of file being loaded by `load'.

您可能也对symbol-file函数感兴趣,该函数将告诉您定义指定函数或变量的绝对文件名。

如果您想获得幻想,可以查看load-in-progress变量。如果那是nil,那么没有加载正在进行中(并且你可能在缓冲区中是eval')。在这种情况下,您可以尝试使用(buffer-file-name)来获取文件名。