记住执行“危险”局部变量的权限


15

在我的许多项目中,我都使用.dir-locals.el文件来设置项目特定的变量,例如编译命令。在包含此类文件的目录中打开文件后,会emacs抱怨“风险局部变量”,尤其是:

The local variables list in $DIR$/ contains variables that are risky (**)

Do you want to apply it? You can type
y  -- to apply the local variables list.
n  -- to ignore the local variables list.

** LaTeX-command : "lualatex -shell-escape"

我不想关闭此功能,但只想问一次(在emacs会话期间)特定.dir-locals.el文件的问题。

我正在使用一些想要解析整个sourcetree的插件,y仅解析所有内容就打了数百遍是很烦人的。

因此,实际问题是:

可以emacs配置/修改“局部变量加载机制”,以便允许/拒绝整个emacs会话中特定局部变量列表的加载吗?

Answers:


7

Emacs应该(通常会提供)提供选项,以接受并记住以后的会话选择。M-x report-emacs-bug对于您的情况,我建议您不要选择此选项。

同时,您可以将以下内容添加到您的~/.emacs

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))

4
没有别的选择不是错误,它是有风险的变量的有意选择。如果该变量不在安全列表中,则Emacs将报告该变量可能不安全,并使用y / n选项加提示!要记住。如果变量名称与某个正则表达式匹配,则认为它具有风险,并且只为您提供y / n选项。用于确定是否有危险的正则表达式位于github.com/emacs-mirror/emacs/blob/…上的files.el中
Dan Midwood

也许它是有意做的,但是我认为这是错误的,OP似乎也同意,因此我认为它值得一个错误报告。
斯特凡

2

您可以通过在您的计算机中放置以下内容来禁用此“不要记住危险的变量”功能~/.emacs

;; allow remembering risky variables
(defun risky-local-variable-p (sym &optional _ignored) nil)

然后,只有在编辑一个时,它才会重新确认。


1
您也可以这样做(advice-add 'risky-local-variable-p :override #'ignore),其优点是可以通过撤消advice-remove
npostavs
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.