2013-08-30 20 views
6

W Emacs niektóre zmienne mają specjalne zachowania po ustawieniu przez dostosowywanie M-x, które nie są wyzwalane po ustawieniu tej samej zmiennej przez setq. Czy istnieje programowy sposób ustawiania takich zmiennych w taki sposób, że specjalne zachowanie będzie uruchamiane tak, jakby użytkownik ustawił zmienną poprzez dostosowanie?Jak programowo ustawić niestandardową zmienną w Emacs Lisp?

Czy istnieje funkcja programowego zapisania wartości do niestandardowego pliku użytkownika? Próbuję zaimplementować funkcję, aby ponownie dodać domyślne elementy do listy, bez usuwania także dodanych elementów użytkownika.

+1

Czy szuka 'zamówienie set-variables'? To jest dokładnie to, co zwykle masz w swoim pliku '.emacs'. – nickie

Odpowiedz

6

customize-set-variable to, czego chcesz, a nie custom-set-variables (nie ma potrzeby tutaj).

Ogólnie warto przyjrzeć się defcustom dla zmiennej (opcja użytkownika), aby zobaczyć, co robi jej automat :set. Nie jest to konieczne, ale dobrze wiedzieć, zanim spróbujesz ustawić wartość programowo.

To odpowiedź na pytanie [email protected] może również pomóc: http://lists.gnu.org/archive/html/help-gnu-emacs/2013-08/msg00544.html

+0

Tak, właśnie tego chciałem, właśnie dlatego, że używa właściwości ': set' do ustawienia zmiennej. –

+2

Notting for potomności: Jeśli chcesz programowo ustawić zmienną niestandardową, a także zapisać nową wartość dla przyszłych sesji, 'custom-save-variable' jest funkcją, którą chcesz; jego podpis jest identyczny jak w 'custom-set-variable', a jedyną różnicą w jego zachowaniu jest również zapisanie nowej wartości w postaci' custom-set-variables' w pliku dostosowywania użytkownika. –

0

Korzystanie z funkcji default-value, po której następuje wymieniona custom-set-variable, może to zrobić.

Powiązane problemy