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