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)))))