Доверие .dir-locals.el

12

Я хочу поместить некоторые настройки вне моего init.elфайла .dir-locals.el, то есть следующее:

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

Но каждый раз, когда я пытаюсь открыть какой-либо файл в своей .emacs.dпапке, emacs спрашивает меня, сохранить ли его, чтобы применить этот код. Я попытался заставить его замолчать, установив в файле локальные переменные:

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

и это не помогло, наоборот, добавляет еще одно сообщение, чтобы доверять этим локальным настройкам. Как я могу заставить его доверять моему .dir-locals.elкоду?

4lex1v
источник
Вы связали переменную с именемlet
phils

Ответы:

8

Вы можете настроить safe-local-variable-valuesв вашем файле инициализации. Это потребует от вас также указать, какие значения вы считаете безопасными.

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

Это нормально, если вы знаете набор возможных значений, как и предполагает ваш вопрос.

Если вы хотите сделать переменную безопасной для всех значений, которые удовлетворяют предикату, вы можете сделать:

(put 'var 'safe-local-variable #'stringp) 
InHarmsWay
источник
Спасибо за этот подход, но, как я уже писал, я хочу поместить этот .dir-locals.el
конфиг
Вы все равно настроите параметр снаряда в .dir-locals.el. Но вы продолжите получать предупреждения при загрузке этого файла, пока не выполните одно из этих действий. Вы пробовали 2-й? Этот код в вашем файле инициализации, заменив 'var на projectile-globally-ignored-directoryies, должен предотвращать предупреждения при загрузке .dir-locals.el.
InHarmsWay
Хотя, думая об этом, вам может потребоваться «#listp, а не» #stringp, поскольку вы устанавливаете панель в список строк.
InHarmsWay