Confie em .dir-locals.el

12

Eu quero colocar algumas configurações fora do meu init.elarquivo .dir-locals.el, ou seja, o seguinte:

((nil
  (let ((dirs '(".cask" "core" "packages" "modules" "snippets" "themes")))
   (mapc #'(lambda (path) (add-to-list 'projectile-globally-ignored-directories path)) dirs))))

Mas cada vez que estou tentando abrir qualquer arquivo na minha .emacs.dpasta, o emacs me pergunta se é salvar para aplicar esse código. Eu tentei silenciá-lo definindo arquivos locais vars:

;; -*- enable-local-variables: t; enable-local-eval: t -*-

e não ajudou em nada, pelo contrário, adiciona outra mensagem para confiar nessas configurações locais. Como posso confiar no meu .dir-locals.elcódigo?

4lex1v
fonte
Você ligada uma variável chamadalet
phils

Respostas:

8

Você pode personalizar safe-local-variable-valuesno seu arquivo init. Isso exigirá que você também especifique quais valores você considera seguros.

(add-to-list 'safe-local-variable-values '(var . value))

Tudo bem se você souber o conjunto de valores possíveis, como sua pergunta implica.

Se você deseja tornar uma variável segura para todos os valores que satisfazem um predicado, você pode:

(put 'var 'safe-local-variable #'stringp) 
InHarmsWay
fonte
Obrigado por esta abordagem, mas como eu escrevi, eu quero colocar esta configuração em.dir-locals.el
4lex1v 11/15/15
Você ainda definiria a configuração do projétil em .dir-locals.el. Mas você continuará recebendo avisos ao carregar esse arquivo, até executar uma dessas ações. Você já tentou o segundo? Esse código, no seu arquivo init, substituindo 'var por diretórios-projétil-globalmente-ignorados, deve evitar os avisos quando o arquivo .dir-locals.el for carregado.
InHarmsWay 11/11
Embora pense bem, você pode precisar de '#listp em vez de' #stringp, pois está definindo a barra como uma lista de strings.
InHarmsWay