在Emacs中,當通過M-x自定義設置時,某些變量具有特殊行爲,當您通過setq
設置相同變量時不會觸發。有沒有一種編程方式來設置這樣的變量,使得特殊行爲將被觸發,就好像用戶通過自定義來設置變量一樣?如何在Emacs Lisp中以編程方式設置自定義變量?
此外,是否有一個函數以編程方式將值保存到用戶的自定義文件?我試圖實現一個功能,將缺省元素重新添加到列表中,而不會刪除用戶添加的元素。
在Emacs中,當通過M-x自定義設置時,某些變量具有特殊行爲,當您通過setq
設置相同變量時不會觸發。有沒有一種編程方式來設置這樣的變量,使得特殊行爲將被觸發,就好像用戶通過自定義來設置變量一樣?如何在Emacs Lisp中以編程方式設置自定義變量?
此外,是否有一個函數以編程方式將值保存到用戶的自定義文件?我試圖實現一個功能,將缺省元素重新添加到列表中,而不會刪除用戶添加的元素。
customize-set-variable
是你想要的,而不是custom-set-variables
(這裏沒有必要)。
一般來說,也可以看一下defcustom
的變量(用戶選項),看看它的:set
插槽的功能是什麼等。不需要,但很好知道你嘗試設置值以編程方式。
這回答一個問題[email protected]
也可能有幫助: http://lists.gnu.org/archive/html/help-gnu-emacs/2013-08/msg00544.html
是的,這就是我想要的,正是因爲它使用':set'屬性來設置變量。 –
注意後人:如果您想以編程方式設置自定義變量併爲將來的會話保存新值,則「custom-save-variable」是您想要的功能;它的簽名和'custom-set-variable'的簽名是一樣的,它的行爲唯一的區別是在用戶自定義文件中將新的值作爲'custom-set-variables'形式寫入。 –
使用功能default-value
後面提到的custom-set-variable
可能會這樣做。
你會尋找'自定義設置variables'?這正是您通常在'.emacs'文件中所具有的。 – nickie