Запам’ятайте дозвіл на виконання «ризикованих» локальних змінних


15

У багатьох своїх проектах я використовую .dir-locals.elфайли для установки певних змінних проектів, таких як команди компіляції. Після відкриття файлу в каталозі, що містить такий файл, emacsскаржиться на "ризикові локальні змінні" , зокрема:

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"

Я не хочу вимикати цю функцію, але хотілося б, щоб мене запитали лише один раз (під час сесії emacs) щодо конкретного .dir-locals.elфайлу.

Я використовую кілька плагінів, які хочуть проаналізувати все sourcetree, і це досить прикро, щоб потрапити в yсотні разів, щоб просто проаналізувати все.

Отже, власне питання:

Чи може emacsмеханізм завантаження локальної змінної бути налаштований / модифікований таким чином, що дозволяє дозволити / заборонити завантаження певного списку локальних змінних протягом усього emacsсеансу?

Відповіді:


7

Emacs повинен запропонувати (і зазвичай пропонує) можливість прийняти і запам'ятати вибір для наступних сесій. Я пропоную вам M-x report-emacs-bugпро цей відсутній вибір у вашому випадку.

Тим часом ви можете додати до свого ~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))

4
Жоден варіант пам'ятати не є помилкою, це навмисно для ризикових змінних. Якщо змінної немає в безпечному списку, то Emacs повідомить, що вона може бути небезпечною та підкаже з опціями y / n плюс! пам'ятати. Якщо ім'я змінної відповідає певному регулярному вираженню, то це вважається ризиковим, і вам надаються лише параметри y / n. Регекс для визначення того, чи є щось ризикованим, є у файлах.el за адресою github.com/emacs-mirror/emacs/blob/…
Ден Мідвуд

Можливо, це було зроблено навмисно, але я думаю, що він помилився, і ОП, здається, погодилася, тому я думаю, що він заслуговує на повідомлення про помилку.
Стефан

2

Ви можете відключити цю функцію "не запам'ятовувати ризиковані змінні" , додавши в своє ~/.emacs:

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

Тоді воно буде підтверджене лише після редагування.


1
Ви також можете зробити це (advice-add 'risky-local-variable-p :override #'ignore), що має перевагу бути незамінним через advice-remove.
npostavs
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.