F: Wie kann ich mit Elisp eine Variable auf ihren Standardwert zurücksetzen, ohne zu wissen, um welchen Wert es sich handelt?
Ich habe versucht, herauszufinden, wie das geht, indem ich die Customize-Oberfläche für eine Variable aufgerufen habe , die ich in meiner Init-Datei auf einen anderen Wert als den Standardwert gesetzt habe, und C-h kdann auf "Zurücksetzen ..." geklickt habe. Das brachte die Dokumentation für widget-button-click
, was offensichtlich nicht viel half. (Ebenso wird C-h k RETmit Punkt auf dem Button Hilfe angezeigt Custom-newline
, was auch nicht das ist, wonach ich suche.)
Antworten:
C-hig
(elisp) Variable Definitions
Daher:
Beachten Sie, dass dies nur für
defcustom
Variablen gilt (dh "Benutzeroptionen"). Emacs speichert den Anfangswert einerdefvar
Variablen nirgendwo.quelle
(setq foo (eval (car (get 'foo 'standard-value))))
Das von generierte Standardwertformulardefcustom
ist ein Formular mit einem Funktionsaufruf und einem Abschluss (dies geschieht möglicherweise nur, wenn die lexikalische Bindung aktiviert ist)setq-default
eher alssetq
in diesem Fall verwenden.Eine andere, wahrscheinlich sauberere Möglichkeit, den Wert einer Variablen zurückzusetzen:
Also zum Beispiel:
ersetzt den vorherigen Wert durch das Symbol
standard-value
.BEARBEITEN
Lesen Sie den @phils-Kommentar unten, um ein sehr wichtiges Detail zu dieser Funktion zu erfahren.
quelle
saved-value
, nicht auf seinenstandard-value
.