Q: En utilisant Elisp, comment puis-je réinitialiser une variable à sa valeur par défaut sans savoir quelle est cette valeur?
J'ai essayé de comprendre comment faire cela en ouvrant l' interface de personnalisation pour une variable que j'ai définie à une valeur non par défaut dans mon fichier init et en appuyant sur, C-h kpuis en cliquant sur le bouton "Revert ...". Cela a amené la documentation pour widget-button-click
, ce qui n'a évidemment pas beaucoup aidé. (De même, C-h k RETavec un point sur le bouton, l'aide s'affiche Custom-newline
, ce qui n'est pas non plus ce que je recherche.)
Réponses:
C-hig
(elisp) Variable Definitions
Par conséquent:
Notez que cela ne s'applique qu'aux
defcustom
variables (c'est-à-dire "options utilisateur"). Emacs n'enregistredefvar
nulle part la valeur initiale d'une variable.la source
(setq foo (eval (car (get 'foo 'standard-value))))
Le formulaire de valeur par défaut généré pardefcustom
est un formulaire avec un appel et une fermeture (cela ne se produit probablement que lorsque la liaison lexicale est activée)setq-default
plutôt quesetq
dans ce cas.Une autre façon, probablement plus propre, de réinitialiser la valeur d'une variable:
Ainsi, par exemple:
remplacera la valeur précédente par celle de ce symbole
standard-value
.MODIFIER
Lisez le commentaire @phils ci-dessous pour un détail très important concernant cette fonction.
la source
saved-value
, pas à la siennestandard-value
.