Marquer une variable locale sûre pour toute valeur

13

La variable safe-local-variable-valuespeut stocker des paires nom / valeur qui sont sûres en tant que fichier local ou répertoire local. Cependant, je veux parfois dire que toute valeur est valide pour une variable donnée. La page de manuel à laquelle j'ai lié dit que toute valeur entière est considérée comme sûre fill-column. Existe-t-il un moyen de le faire pour mes propres variables?

Brendan
la source
Essayez d'utiliser identitycomme test.
wasamasa
1
@wasamasa Je pense que (lambda (_) t) est mieux, pour le cas nul.
lunaryorn

Réponses:

18

Définissez la safe-local-variablepropriété sur une fonction qui valide la valeur. Par exemple, fill-columna une safe-local-variablepropriété définie sur integerp. Utiliser (lambda (x) t)comme fonction de validation si une valeur est valide.

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

ou

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

Avoir une valeur valide est assez rare. Il est beaucoup plus fréquent de limiter à un type spécifique, par exemple integerp, stringpetc.

Gilles 'SO- arrête d'être méchant'
la source