Pamiętaj o pozwoleniu na wykonywanie „ryzykownych” zmiennych lokalnych

15

W wielu moich projektach używam .dir-locals.elplików do konfigurowania zmiennych specyficznych dla projektu, takich jak polecenia kompilacji. Po otwarciu pliku w katalogu zawierającym taki plik emacsnarzeka na „ryzykowne zmienne lokalne” , w szczególności:

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"

Nie chcę wyłączać tej funkcji, ale chciałbym zostać poproszony tylko raz (podczas sesji emacs) o konkretny .dir-locals.elplik.

Korzystam z niektórych wtyczek, które chcą parsować cały kod źródłowy, i ysetki razy uderzanie setek razy jest dość denerwujące, aby parsować wszystko.

Właściwe pytanie:

Czy emacsmechanizm ładowania zmiennych lokalnych można skonfigurować / zmodyfikować w taki sposób, aby umożliwiał / odmawiał ładowania określonej listy zmiennych lokalnych przez całą emacssesję?

elemakil
źródło

Odpowiedzi:

7

Emacs powinien zaoferować (i zwykle oferuje) opcję zaakceptowania i zapamiętania wyboru na późniejsze sesje. Proponuję ci M-x report-emacs-bugo tym brakującym wyborze w twoim przypadku.

W międzyczasie możesz dodać następujące elementy do ~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))
Stefan
źródło
4
Żadna opcja do zapamiętania nie jest błędem, jest celowa w przypadku ryzykownych zmiennych. Jeśli zmiennej nie ma na liście bezpiecznych, Emacs zgłosi, że może być niebezpieczny i wyświetli monit z opcją t / n plus! zapamiętać. Jeśli nazwa zmiennej pasuje do określonego wyrażenia regularnego, jest to uważane za ryzykowne i masz tylko opcje r / n. Wyrażenie określające, czy coś jest ryzykowne, znajduje się w plikach.el na github.com/emacs-mirror/emacs/blob/…
Dan Midwood
Może zostało to zrobione celowo, ale myślę, że to pomyłka, a OP wydaje się zgadzać, więc uważam, że zasługuje na zgłoszenie błędu.
Stefan
2

Możesz wyłączyć tę funkcję „nie pamiętam ryzykownych zmiennych” , umieszczając w swoim ~/.emacs:

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

Następnie potwierdzi to ponownie tylko podczas edycji.

Tommy Jollyboat
źródło
1
Możesz także zrobić (advice-add 'risky-local-variable-p :override #'ignore), co ma tę zaletę, że można go cofnąć advice-remove.
npostavs