Function: customize-push-and-save
customize-push-and-save is an autoloaded and byte-compiled function
defined in cus-edit.el.gz.
Signature
(customize-push-and-save LIST-VAR ELTS)
Documentation
Add ELTS to LIST-VAR and save for future sessions, safely.
ELTS should be a list. This function adds each entry to the
value of LIST-VAR using add-to-list.
If Emacs is initialized, call customize-save-variable to save
the resulting list value now. Otherwise, add an entry to
after-init-hook to save it after initialization.
Source Code
;; Defined in /usr/src/emacs/lisp/cus-edit.el.gz
;; Some parts of Emacs might prompt the user to save customizations,
;; during startup before customizations are loaded. This function
;; handles this corner case by avoiding calling `custom-save-variable'
;; too early, which could wipe out existing customizations.
;;;###autoload
(defun customize-push-and-save (list-var elts)
"Add ELTS to LIST-VAR and save for future sessions, safely.
ELTS should be a list. This function adds each entry to the
value of LIST-VAR using `add-to-list'.
If Emacs is initialized, call `customize-save-variable' to save
the resulting list value now. Otherwise, add an entry to
`after-init-hook' to save it after initialization."
(dolist (entry elts)
(add-to-list list-var entry))
(if after-init-time
(let ((coding-system-for-read nil))
(customize-save-variable list-var (eval list-var)))
(add-hook 'after-init-hook
(lambda ()
(customize-push-and-save list-var elts)))))