gpt4 book ai didi

emacs - 如何在 emacs 目录变量文件中访问当前目录的路径?

转载 作者:行者123 更新时间:2023-12-03 12:15:31 24 4
gpt4 key购买 nike

根据 Emacs 文档,Directory Variables适用于包含 .dir-locals.el 的目录下的所有文件文件。

如何在该文件中将变量设置为包含该文件的完整路径?例如:

((nil . ((indent-tabs-mode . t)
(my-project-path **THIS_DIRECTORY**))))

最佳答案

我问了自己同样的问题,但在网上没有找到解决方案,所以我认为这个答案可能会有所帮助。实际上,事实证明我们可以重用 dir-locals-find-file获取包含 .dir-locals.el 的目录文件。所以这就是我发现的,例如,设置一个专用于整个目录的 aspell 个人字典:

((nil . ((eval . (setq ispell-personal-dictionary
(expand-file-name
".aspell_words"
(file-name-directory
(let ((d (dir-locals-find-file ".")))
(if (stringp d) d (car d))))))))))

此外,似乎条目是按照指定的顺序进行评估的,因此以下代码应该可以工作:
((nil . ((eval . (set (make-local-variable 'my-project-path)
(file-name-directory
(let ((d (dir-locals-find-file ".")))
(if (stringp d) d (car d))))))
(eval . (message "Project directory set to `%s'." my-project-path)))))

Emacs 会提示不安全的局部变量(由于 eval 构造),但仍然可以将其永久标记为安全。

更新:由于 Emacs ≥ 26.3(可能还有旧版本),看来需要使用 (dir-locals-find-file "./")而不是 (dir-locals-find-file ".") .

关于emacs - 如何在 emacs 目录变量文件中访问当前目录的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4012321/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com