Emacs 如何从Eval:in.dir-local.el设置缓冲区局部变量?

Emacs 如何从Eval:in.dir-local.el设置缓冲区局部变量?,emacs,elisp,emacs23,Emacs,Elisp,Emacs23,为什么会这样 ((nil . ((compilation-directory . "/home/vava/code_directory/") (compilation-command . "rake")) )) 这不是吗 ((nil . ((Eval . (setq compilation-directory "/home/vava/code_directory")) (compilation-command . "rake")) )) 我做错了什么 我在

为什么会这样

((nil . ((compilation-directory . "/home/vava/code_directory/")
         (compilation-command . "rake"))
))
这不是吗

((nil . ((Eval . (setq compilation-directory "/home/vava/code_directory"))
         (compilation-command . "rake"))
))
我做错了什么


我在.emacs中设置了
启用本地eval

显然,您假设“eval”在目录本地变量中具有与在文件本地变量中相同的特殊含义;然而文件似乎并没有证实这一点。所以我的猜测是:你根本无法做到这一点。

Emacs Lisp区分大小写:尝试小写的“eval”:


此外,目录局部变量的文件名是.dir-locals.el,而不是问题标题中的.dir-local.el。

我正试图对您做类似的事情……在读取.dir-local.el时动态设置一些变量:很遗憾,现在似乎不可能做到这一点。
((nil . ((eval . (setq compilation-directory "/home/vava/code_directory"))
         (compilation-command . "rake"))))