Ingatlah izin untuk mengeksekusi variabel lokal "berisiko"

15

Dalam banyak proyek saya, saya menggunakan .dir-locals.elfile untuk mengatur variabel spesifik proyek seperti mengkompilasi perintah. Setelah membuka file dalam direktori yang berisi file seperti itu, emacsmengeluh tentang "variabel lokal berisiko" , khususnya:

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"

Saya tidak ingin mematikan fitur ini tetapi saya ingin ditanya hanya sekali (selama sesi emacs) untuk .dir-locals.elfile tertentu .

Saya menggunakan beberapa plugin yang ingin mengurai seluruh sumber daya dan cukup menjengkelkan untuk menekan yratusan kali hanya untuk mengurai semuanya.

Jadi, pertanyaan sebenarnya:

Dapatkah emacs'mekanisme pemuatan variabel lokal dikonfigurasikan / dimodifikasi sedemikian sehingga memungkinkan untuk mengizinkan / menolak pemuatan daftar variabel lokal tertentu untuk keseluruhan emacssesi?

elemakil
sumber

Jawaban:

7

Emacs harus menawarkan (dan biasanya menawarkan) opsi untuk menerima dan mengingat pilihan untuk sesi selanjutnya. Saya menyarankan Anda M-x report-emacs-bugtentang pilihan yang hilang ini dalam kasus Anda.

Sementara itu, Anda dapat menambahkan yang berikut ke ~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))
Stefan
sumber
4
Tidak ada pilihan untuk diingat bukan bug, itu disengaja untuk variabel berisiko. Jika variabel tidak ada dalam daftar aman maka Emacs akan melaporkan bahwa itu mungkin tidak aman dan cepat dengan opsi y / n plus! untuk mengingat. Jika nama variabel cocok dengan regex tertentu maka dianggap berisiko dan Anda hanya diberi opsi y / n. Regex untuk menentukan apakah sesuatu beresiko ada di files.el di github.com/emacs-mirror/emacs/blob/…
Dan Midwood
Mungkin itu dilakukan dengan sengaja, tapi saya pikir itu keliru dan OP tampaknya setuju, jadi saya pikir itu layak mendapat laporan bug.
Stefan
2

Anda dapat menonaktifkan fitur "jangan ingat variabel berisiko" ini dengan memasukkan yang berikut ini di ~/.emacs:

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

Maka itu hanya akan mengkonfirmasi ulang ketika Anda mengedit satu.

Tommy Jollyboat
sumber
1
Anda juga dapat melakukannya (advice-add 'risky-local-variable-p :override #'ignore), yang memiliki keuntungan karena tidak dapat dibatalkan melalui advice-remove.
npostavs