Lembre-se da permissão para executar variáveis ​​locais "arriscadas"

15

Em muitos dos meus projetos, uso .dir-locals.elarquivos para configurar variáveis ​​específicas do projeto, como comandos de compilação. Ao abrir um arquivo em um diretório que contém esse arquivo, emacsreclama sobre "variáveis ​​locais de risco" , especificamente:

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"

Não quero desativar esse recurso, mas gostaria de ser solicitado apenas uma vez (durante uma sessão do emacs) para um .dir-locals.elarquivo específico .

Estou usando alguns plugins que desejam analisar todo o código fonte e é muito chato acertar ycentenas de vezes apenas para analisar tudo.

Então, a pergunta real:

O emacsmecanismo de carregamento de variáveis ​​locais pode ser configurado / modificado de forma a permitir / negar o carregamento de uma lista de variáveis ​​locais específicas durante toda a emacssessão?

elemakil
fonte

Respostas:

7

O Emacs deve oferecer (e normalmente oferece) a opção de aceitar e lembrar a escolha para sessões posteriores. Eu sugiro você M-x report-emacs-bugsobre essa escolha que falta no seu caso.

Enquanto isso, você pode adicionar o seguinte ao seu ~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))
Stefan
fonte
4
Nenhuma opção para lembrar não é um bug, é intencional para variáveis ​​de risco. Se a variável não estiver na lista segura, o Emacs informará que pode ser inseguro e solicitará as opções y / n plus! lembrar. Se o nome da variável corresponder a um determinado regex, ele será considerado arriscado e você terá apenas as opções y / n. A regex para determinar se algo é arriscado é em files.el em github.com/emacs-mirror/emacs/blob/...
Dan Midwood
Talvez tenha sido feito intencionalmente, mas acho que foi enganado e o OP parece concordar, por isso acho que merece um relatório de erro.
Stefan
2

Você pode desativar o recurso "não se lembra de variáveis ​​de risco" colocando o seguinte no seu ~/.emacs:

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

Em seguida, ele só reafirma quando você edita um.

Tommy Jollyboat
fonte
1
Você também pode fazer (advice-add 'risky-local-variable-p :override #'ignore), que tem a vantagem de ser desfeita via advice-remove.
npostavs 6/09/18