Elisp中绝对路径的相对路径

时间:2008-11-15 01:46:49

标签: emacs elisp

有一个相对路径,如何从我正在加载的elisp文件所在的位置将其转换为绝对路径。也就是说,我有一个我正在加载的elisp文件,它有一个相对路径,我需要一个绝对的。

3 个答案:

答案 0 :(得分:21)

'file-truename

来自文档:

  

返回FILENAME的名称,即   应该是绝对的。真正的一个   通过追逐符号来找到文件名   链接文件级别   并在目录的级别   包含它,直到没有链接   任何级别。

提供的另一个解决方案('expand-file-name)留下了符号链接,这可能是您想要的,也可能不是。 'file-truename使用'expand-file-name,因此它们都将确定缓冲区的路径相对默认目录(这就是你要求的)。

在看到不同答案的评论/问题之后,问题是default-directory是调用'load。

的缓冲区的目录。

幸运的是,有一个变量'负载集存储了正在加载的文件的路径。试试这段代码:

;; this is in the file being loaded
(let ((default-directory (file-name-directory load-file-name)))
   (file-truename "blih"))

答案 1 :(得分:13)

我最终使用了:

(expand-file-name "relative/path" (file-name-directory load-file-name))

答案 2 :(得分:8)

您可以使用expand-file-name函数将相对文件名或路径转换为绝对文件名/路径。查看here以获取更多信息。