Erinnern Sie sich an die Erlaubnis, "riskante" lokale Variablen auszuführen

15

In vielen meiner Projekte verwende ich .dir-locals.elDateien, um projektspezifische Variablen wie Kompilierbefehle einzurichten. emacsBeschwert sich beim Öffnen einer Datei in einem Verzeichnis, das eine solche Datei enthält, über "riskante lokale Variablen" , insbesondere:

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"

Ich möchte diese Funktion nicht deaktivieren, möchte aber nur einmal (während einer Emacs-Sitzung) nach einer bestimmten .dir-locals.elDatei gefragt werden.

Ich verwende einige Plugins, die den gesamten Quellenbaum analysieren wollen, und es ist ziemlich ärgerlich, yhunderte Male zu schlagen, nur um alles zu analysieren.

Also die eigentliche Frage:

Kann emacsder Lademechanismus für lokale Variablen so konfiguriert / geändert werden, dass das Laden einer bestimmten Liste lokaler Variablen für die gesamte emacsSitzung zugelassen / verweigert wird ?

elemakil
quelle

Antworten:

7

Emacs sollte die Option anbieten (und bietet sie normalerweise auch an), die Auswahl für spätere Sitzungen zu akzeptieren und zu speichern. Ich schlage Ihnen M-x report-emacs-bugdiese fehlende Wahl in Ihrem Fall vor.

In der Zwischenzeit können Sie Folgendes hinzufügen ~/.emacs:

(add-to-list 'safe-local-variable-values
             '(LaTeX-command . "lualatex -shell-escape"))
Stefan
quelle
4
Keine Option, an die Sie sich erinnern müssen, ist kein Fehler. Sie ist für riskante Variablen gedacht. Befindet sich die Variable nicht in der sicheren Liste, meldet Emacs, dass sie möglicherweise unsicher ist, und fordert Sie mit den Optionen y / n plus! erinnern. Wenn der Variablenname mit einem bestimmten regulären Ausdruck übereinstimmt, wird er als riskant eingestuft, und Sie erhalten nur die J / N-Optionen. Der reguläre Ausdruck für die Bestimmung, ob etwas riskant ist, befindet sich in files.el unter github.com/emacs-mirror/emacs/blob/…
Dan Midwood
Vielleicht wurde es absichtlich gemacht, aber ich denke, es war falsch und das OP scheint zuzustimmen, also denke ich, dass es einen Fehlerbericht verdient.
Stefan
2

Sie können diese Funktion "Riskante Variablen nicht merken" deaktivieren, indem Sie Folgendes in Ihre Einstellungen einfügen ~/.emacs:

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

Dann wird es nur noch einmal bestätigt, wenn Sie eine bearbeiten.

Tommy Jollyboat
quelle
1
Sie können dies auch tun (advice-add 'risky-local-variable-p :override #'ignore), was den Vorteil hat, dass es über rückgängig gemacht werden kann advice-remove.
Npostavs