Markieren Sie eine lokale Variable als sicher für einen beliebigen Wert

13

Die Variable safe-local-variable-valueskann Name / Wert-Paare speichern, die als dateilokal oder verzeichnislokal sicher sind. Manchmal möchte ich jedoch sagen, dass jeder Wert für eine bestimmte Variable gültig ist. Die von mir verlinkte Handbuchseite besagt, dass jeder ganzzahlige Wert als sicher gilt fill-column. Gibt es eine Möglichkeit, dies für meine eigenen Variablen zu tun?

Brendan
quelle
Versuchen Sie es identityals Test.
Wasamasa
1
@wasamasa Ich denke, (Lambda (_) t) ist besser, für den Null-Fall.
Lunaryorn

Antworten:

18

Setzen Sie die safe-local-variableEigenschaft auf eine Funktion, die den Wert überprüft. Beispielsweise fill-columnhat eine safe-local-variableEigenschaft festgelegt auf integerp. Verwenden Sie (lambda (x) t)als Validierungsfunktion , wenn jeder Wert gültig ist.

(defvar my-variable-with-any-safe-value …)
(put 'my-variable-with-any-safe-value 'safe-local-variable
     (lambda (x) t))

oder

(defcustom my-variable-with-any-safe-value …
  :safe (lambda (x) t))

Mit jedem gültigen Wert ist ziemlich selten. Es ist weitaus häufiger auf eine bestimmte Art zu beschränken, zB integerp, stringpusw.

Gilles 'SO - hör auf böse zu sein'
quelle