P: Usando Elisp, ¿cómo puedo restablecer una variable a su valor predeterminado sin saber cuál es ese valor?
Intenté descubrir cómo hacer esto al abrir la interfaz Personalizar para una variable que configuré en un valor no predeterminado en mi archivo de inicio y presionar C-h kseguido de un clic en el botón "Revertir ...". Eso trajo la documentación para widget-button-click
, que obviamente no ayudó mucho. (Del mismo modo, C-h k RETcon el punto en el botón muestra ayuda para Custom-newline
, que tampoco es lo que estoy buscando).
Respuestas:
C-hig
(elisp) Variable Definitions
Por lo tanto:
Tenga en cuenta que esto solo se aplica a las
defcustom
variables (es decir, "opciones de usuario"). Emacs no guarda el valor inicial de unadefvar
variable en ninguna parte.fuente
(setq foo (eval (car (get 'foo 'standard-value))))
El formulario de valor predeterminado generado pordefcustom
es un formulario con un funcall y un cierre (esto posiblemente solo ocurre cuando el enlace léxico está habilitado)setq-default
lugar desetq
en este caso.Otra forma, probablemente más limpia, de restablecer el valor de una variable:
Así por ejemplo:
reemplazará el valor anterior con ese símbolo
standard-value
.EDITAR
Lea el comentario de @phils a continuación para obtener detalles muy importantes sobre esta función.
fuente
saved-value
, no a su valorstandard-value
.