Function: viper-save-setting
viper-save-setting is a byte-compiled function defined in
viper-util.el.gz.
Signature
(viper-save-setting VAR MESSAGE FILE &optional ERASE-MSG)
Source Code
;; Defined in /usr/src/emacs/lisp/emulation/viper-util.el.gz
;;; Saving settings in custom file
;; Save the current setting of VAR in FILE.
;; If given, MESSAGE is a message to be displayed after that.
;; This message is erased after 2 secs, if erase-msg is non-nil.
;; Arguments: var message file &optional erase-message
(defun viper-save-setting (var message file &optional erase-msg)
(let* ((var-name (symbol-name var))
(var-val (if (boundp var) (symbol-value var)))
(regexp (format "^[^;]*%s[ \t\n]*[a-zA-Z0-9---_']*[ \t\n)]" var-name))
(buf (find-file-noselect (substitute-in-file-name file)))
)
(message "%s" (or message ""))
(with-current-buffer buf
(goto-char (point-min))
(if (re-search-forward regexp nil t)
(let ((reg-end (1- (match-end 0))))
(search-backward var-name)
(delete-region (match-beginning 0) reg-end)
(goto-char (match-beginning 0))
(insert (format "%s '%S" var-name var-val)))
(goto-char (point-max))
(if (not (bolp)) (insert "\n"))
(insert (format "(setq %s '%S)\n" var-name var-val)))
(save-buffer))
(kill-buffer buf)
(if erase-msg
(progn
(sit-for 2)
(message "")))
))