T: Menggunakan Elisp, bagaimana saya bisa mereset variabel ke nilai defaultnya tanpa mengetahui nilai itu?
Saya mencoba mencari cara untuk melakukan ini dengan memunculkan antarmuka Customize untuk variabel yang saya atur ke nilai non-default dalam file init saya dan menekan C-h kdiikuti dengan klik pada tombol "Kembalikan ...". Itu memunculkan dokumentasi untuk widget-button-click
, yang jelas tidak banyak membantu. (Demikian pula, C-h k RETdengan titik pada tombol menunjukkan bantuan Custom-newline
, yang juga bukan yang saya cari.)
Jawaban:
C-hig
(elisp) Variable Definitions
Karenanya:
Perhatikan bahwa ini hanya berlaku untuk
defcustom
variabel (yaitu "opsi pengguna"). Emacs tidak menyimpan nilai awaldefvar
variabel di mana pun.sumber
(setq foo (eval (car (get 'foo 'standard-value))))
Bentuk nilai default yang dihasilkan olehdefcustom
adalah bentuk dengan fungsi dan penutupan (ini mungkin terjadi hanya ketika pengikatan leksikal diaktifkan)setq-default
daripadasetq
dalam kasus ini.Cara lain yang mungkin lebih bersih untuk mereset nilai variabel:
Jadi misalnya:
akan mengganti nilai sebelumnya dengan simbol itu
standard-value
.EDIT
Baca komentar @phils di bawah ini untuk detail yang sangat penting mengenai fungsi ini.
sumber
saved-value
, tidak nyastandard-value
.