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?

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"))

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.


1
Anda juga dapat melakukannya (advice-add 'risky-local-variable-p :override #'ignore), yang memiliki keuntungan karena tidak dapat dibatalkan melalui advice-remove.
npostavs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.