Zaufaj .dir-locals.el

12

Chcę umieścić konfigurację poza moim init.elplikiem .dir-locals.el, tj. Następujące:

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

Ale za każdym razem, gdy próbuję otworzyć dowolny plik w moim .emacs.dfolderze, emacs pyta mnie, czy to możliwe, aby zapisać ten kod. Próbowałem go wyciszyć, ustawiając lokalne zmienne plików:

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

i wcale nie pomogło, wręcz przeciwnie dodaje kolejną wiadomość, aby zaufać tym lokalnym ustawieniom. Jak mogę sprawić, by zaufał mojemu .dir-locals.elkodowi?

4lex1v
źródło
let
Związałeś

Odpowiedzi:

8

Możesz dostosować safe-local-variable-valuesw swoim pliku inicjującym. Wymaga to również określenia, które wartości uważasz za bezpieczne.

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

Jest to OK, jeśli znasz zestaw możliwych wartości, jak sugeruje twoje pytanie.

Jeśli chcesz uczynić zmienną bezpieczną dla wszystkich wartości spełniających predykat, możesz:

(put 'var 'safe-local-variable #'stringp) 
InHarmsWay
źródło
Dziękuję za to podejście, ale jak napisałem, chcę wprowadzić tę konfigurację.dir-locals.el
4lex1v,
Nadal skonfigurowałbyś ustawienie pocisku w .dir-locals.el. Ale będziesz nadal otrzymywać ostrzeżenia po załadowaniu tego pliku, dopóki nie podejmiesz jednego z tych działań. Czy próbowałeś drugiego? Kod ten w twoim pliku init, zastępując 'var katalogami globalnie zignorowanymi pociskami, powinien zapobiegać ostrzeżeniom podczas ładowania pliku .dir-locals.el.
InHarmsWay,
Chociaż się nad tym zastanawiasz, możesz potrzebować „#listp” zamiast „#stringp, ponieważ ustawiasz pasek na listę ciągów znaków.
InHarmsWay,