Oznacz zmienną lokalną jako bezpieczną dla dowolnej wartości

13

Zmienna safe-local-variable-valuesmoże przechowywać pary nazwa / wartość, które są bezpieczne jako plik lokalny lub katalog lokalny. Czasami jednak chcę powiedzieć, że dowolna wartość jest poprawna dla danej zmiennej. Strona podręcznika, do której odsyłam, mówi, że każda wartość całkowita jest uważana za bezpieczną fill-column. Czy istnieje sposób, aby to zrobić dla moich własnych zmiennych?

Brendan
źródło
Spróbuj użyć identityjako testu.
wasamasa,
1
@wasamasa Myślę, że (lambda (_) t) jest lepszy, w przypadku braku.
lunaryorn 12.04.16

Odpowiedzi:

18

Ustaw safe-local-variablewłaściwość na funkcję, która sprawdza poprawność wartości. Na przykład fill-columnma safe-local-variablewłaściwość ustawioną na integerp. Użyj (lambda (x) t)jako funkcji sprawdzania poprawności, jeśli jakakolwiek wartość jest poprawna.

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

lub

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

Posiadanie jakiejkolwiek prawidłowej wartości jest dość rzadkie. To znacznie bardziej powszechne, aby ograniczyć do konkretnego typu, na przykład integerp, stringpitd

Gilles „SO- przestań być zły”
źródło