我正在尝试编写.dir-locals.el文件。我想动态找到文件所在的目录,并将其与“TAGS”连接。这是我的第一次尝试:

((nil . ((tags-file-name . (concat default-directory "TAGS")))))

这是行不通的。我不是Emacs Lisp专家。怎么了

最佳答案

从技术上讲,您需要执行以下操作来获取代码形式以便在.dir-locals.el中进行评估:

((nil . ((eval . (setq tags-file-name (concat default-directory "TAGS"))))))

但是,我尝试了此操作,并且在执行default-directory中的代码时nil似乎是dir-locals,因此您尝试执行的操作看起来似乎是不可能的。

就是说,tags-file-name看起来不是应该手动设置的。相反,它是在您首次访问标签文件时由标签代码设置的。

那么,为什么不将其保留为未设置状态,而仅使用标记功能呢?毕竟,TAGS是默认的标记文件名。

编辑:您也可以考虑使用附加的project-local-variables库,该库使用类似的每个项目的.el文件,但是对于可放入其中的代码更为灵活。这就是我亲自解决您的问题的方式。

10-07 19:29
查看更多