variables emacs elisp

variables - En Emacs, ¿cómo puedo hacer que una variable local sea segura para establecerse en un archivo para todos los valores posibles?



elisp (3)

En Elisp, he introducido para un modo personalizado especial una variable como:

(defvar leo-special-var "") (make-variable-buffer-local ''leo-special-var)

Ahora configuro esta variable en los archivos I con las líneas ( en el archivo para editar ):

# Local Variables: # leo-special-var: "-d http://www.google.com.au" # End:

Y quiero considerar esta variable como "segura para todos sus valores . Es por eso que safe-local-variable-values no ayuda. En cambio, lo intenté ( en el código de lisp ):

# setting the symbol property of the variable (put ''leo-special-var ''safe-local-variable ''booleanp)

pero sin éxito. ¿Hago algo mal al configurar la propiedad del símbolo? ¿O hay otra manera?


Quieres usar

(put ''leo-special-var ''safe-local-variable #''stringp)

decir que es seguro siempre que sea una cadena.


Está en el manual: (elisp) File Local Variables

You can specify safe values for a variable with a `safe-local-variable'' property. The property has to be a function of one argument; any value is safe if the function returns non-`nil'' given that value. Many commonly-encountered file variables have `safe-local-variable'' properties; these include `fill-column'', `fill-prefix'', and `indent-tabs-mode''. For boolean-valued variables that are safe, use `booleanp'' as the property value. Lambda expressions should be quoted so that `describe-variable'' can display the predicate. When defining a user option using `defcustom'', you can set its `safe-local-variable'' property by adding the arguments `:safe FUNCTION'' to `defcustom'' (*note Variable Definitions::).


Si realmente quieres decir que es seguro para todos los valores, utiliza esto:

(put ''leo-special-var ''safe-local-variable (lambda (xx) t))

La función para probar la seguridad aquí devuelve un valor no nil .

(Editado para eliminar un paréntesis adicional).