Запомните разрешение выполнять «рискованные» локальные переменные

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файле.

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

Итак, актуальный вопрос:

Может ли emacsмеханизм загрузки локальных переменных быть сконфигурирован / модифицирован таким образом, чтобы он позволял / запрещал загрузку определенного списка локальных переменных в течение всего emacsсеанса?

elemakil
источник

Ответы:

7

Emacs должен предложить (и обычно предлагает) возможность принять и запомнить выбор для последующих сессий. Я предлагаю вам M-x report-emacs-bugоб этом недостающем выборе в вашем случае.

В то же время, вы можете добавить следующее к вашему ~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))
Стефан
источник
4
Запоминание не является ошибкой, это преднамеренно для рискованных переменных. Если переменная отсутствует в безопасном списке, Emacs сообщит, что она может быть небезопасной, и предложит опции y / n plus! помнить. Если имя переменной соответствует определенному регулярному выражению, то это считается рискованным, и вам даются только опции y / n. Регулярное выражение для определения того, является ли что-то рискованным, находится в файле files.el по адресу github.com/emacs-mirror/emacs/blob/…
Дэн Мидвуд
Может быть, это было сделано намеренно, но я думаю, что это было ошибкой, и ОП, похоже, согласен, поэтому я думаю, что это заслуживает сообщения об ошибке.
Стефан
2

Вы можете отключить эту функцию «не помнить рискованные переменные» , добавив в ваш файл следующее ~/.emacs:

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

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

Tommy Jollyboat
источник
1
Вы также можете сделать (advice-add 'risky-local-variable-p :override #'ignore), что имеет преимущество быть отменяемым через advice-remove.
npostavs