2013-08-30 18 views
6

In Emacs haben einige Variablen ein spezielles Verhalten, wenn sie über M-x angepasst werden, die nicht ausgelöst werden, wenn Sie die gleiche Variable über setq setzen. Gibt es eine programmatische Möglichkeit, solche Variablen so zu setzen, dass das spezielle Verhalten ausgelöst wird, als ob der Benutzer die Variable über customize gesetzt hätte?Wie programmiere ich programmatisch eine benutzerdefinierte Variable in Emacs Lisp?

Gibt es auch eine Funktion, um den Wert programmgesteuert in der benutzerdefinierten Datei des Benutzers zu speichern? Ich versuche, eine Funktionalität zu implementieren, um die Standardelemente zu einer Liste hinzuzufügen, ohne die hinzugefügten Elemente des Benutzers zu entfernen.

+1

Möchten Sie für 'custom-Set-variables' suchen? Dies ist genau das, was Sie normalerweise in Ihrer '.emacs' Datei haben. – nickie

Antwort

6

customize-set-variable ist was Sie wollen, nicht custom-set-variables (keine Notwendigkeit dafür hier).

Und im Allgemeinen ist es eine gute Idee, auch einen Blick auf den defcustom für die Variable (Benutzeroption) zu nehmen, um zu sehen, was seine :set Schlitz tun etc. Nicht notwendig, aber gut zu wissen, bevor Sie versuchen, die festlegen Wert programmgesteuert.

Diese Antwort auf eine Frage [email protected] helfen könnten auch: http://lists.gnu.org/archive/html/help-gnu-emacs/2013-08/msg00544.html

+0

Ja, das ist die eine, die ich wollte, gerade weil sie die Variable ': set' verwendet, um die Variable zu setzen. –

+2

Hinweis für die Nachwelt: Wenn Sie eine benutzerdefinierte Variable programmgesteuert festlegen und auch den neuen Wert für zukünftige Sitzungen speichern möchten, ist 'custom-save-variable' die gewünschte Funktion; Seine Signatur ist identisch mit der von 'custom-set-variable', und der einzige Unterschied in ihrem Verhalten besteht darin, den neuen Wert auch als 'custom-set-variables'-Formular in der Anpassungsdatei des Benutzers zu schreiben. –

0

Verwenden Sie die Funktion default-value gefolgt von custom-set-variable könnte es tun.

Verwandte Themen