我正在使用TRAMP连接到远程服务器,我想使用一些目录本地变量。我有什么选择?我应该使用emacs-server并以这种方式执行,还是应该将目录本地变量添加到我的.emacs文件中?有没有办法强制TRAMP查找.dir-locals.el文件?
答案 0 :(得分:5)
如果您使用的是Emacs 24.3或更高版本,请将enable-remote-dir-locals
设置为t。
答案 1 :(得分:4)
对于Emacs 24.3或更高版本,请参阅legoscia的回答。
对于早期版本,您可以使用EmacsWiki中的以下解决方法:
如果您愿意,我们可以建议
‘hack-dir-local-variables’
解决此问题 愿意承担相关的性能成本(可以 在某些情况下相对最小。);; Enable directory local variables with remote files. This facilitates both ;; the (dir-locals-set-class-variables ...)(dir-locals-set-directory-class ...) ;; and the .dir-locals.el approaches. (defadvice hack-dir-local-variables (around my-remote-dir-local-variables) "Allow directory local variables with remote files, by temporarily redefining `file-remote-p' to return nil unconditionally." (flet ((file-remote-p (&rest) nil)) ad-do-it)) (ad-activate 'hack-dir-local-variables)
如果使用目录类而不是.dir-locals.el
文件,则可以使用普通的tramp路径设置类。 e.g:
(dir-locals-set-class-variables
'read-only
'((nil . ((buffer-read-only . t)))))
(dir-locals-set-directory-class
"/ssh:(user)@(host):/path/to/dir" 'read-only)