I wrote a cleaner patch to do a job like this, but I have not had time to test it, so I have not installed it. Can you test it?
Index: cus-edit.el =================================================================== RCS file: /cvsroot/emacs/emacs/lisp/cus-edit.el,v retrieving revision 1.230 diff -c -c -r1.230 cus-edit.el *** cus-edit.el 12 Aug 2005 11:17:57 -0000 1.230 --- cus-edit.el 27 Aug 2005 03:38:39 -0000 *************** *** 3836,3843 **** (setq magics (cdr magics))))) (widget-put widget :custom-state found))) (custom-magic-reset widget)) - ;;; The `custom-save-all' Function. ;;;###autoload (defcustom custom-file nil "File used for storing customization information. --- 3836,3844 ---- (setq magics (cdr magics))))) (widget-put widget :custom-state found))) (custom-magic-reset widget)) + + ;;; Reading and writing the custom file. ;;;###autoload (defcustom custom-file nil "File used for storing customization information. *************** *** 3898,3914 **** (setq user-init-file default-init-file)) user-init-file)))) (defun custom-save-delete (symbol) ! "Visit `custom-file' and delete all calls to SYMBOL from it. Leave point at the old location of the first such call, ! or (if there were none) at the end of the buffer." ! (let ((default-major-mode 'emacs-lisp-mode) ! (recentf-exclude (if recentf-mode ! (cons (concat "\\`" ! (regexp-quote (custom-file)) ! "\\'") ! recentf-exclude)))) ! (set-buffer (find-file-noselect (custom-file)))) (goto-char (point-min)) ;; Skip all whitespace and comments. (while (forward-comment 1)) --- 3899,3926 ---- (setq user-init-file default-init-file)) user-init-file)))) + ;;;###autoload + (defun custom-save-all () + "Save all customizations in `custom-file'." + (let* ((filename (custom-file)) + (old-buffer (find-buffer-visiting filename))) + (with-current-buffer (or old-buffer (find-file-noselect filename)) + (let ((inhibit-read-only t)) + (custom-save-variables) + (custom-save-faces)) + (let ((file-precious-flag t)) + (save-buffer)) + (unless old-buffer + (kill-buffer (current-buffer)))))) + + ;; Editing the custom file contents in a buffer. + (defun custom-save-delete (symbol) ! "Delete all calls to SYMBOL from the contents of the current buffer. Leave point at the old location of the first such call, ! or (if there were none) at the end of the buffer. ! ! This function does not save the buffer." (goto-char (point-min)) ;; Skip all whitespace and comments. (while (forward-comment 1)) *************** *** 4128,4151 **** (put symbol 'customized-face-comment nil))))) ;; We really should update all custom buffers here. (custom-save-all)) ! ! ;;;###autoload ! (defun custom-save-all () ! "Save all customizations in `custom-file'." ! (let ((inhibit-read-only t)) ! (custom-save-variables) ! (custom-save-faces) ! (save-excursion ! (let ((default-major-mode nil) ! (recentf-exclude (if recentf-mode ! (cons (concat "\\`" ! (regexp-quote (custom-file)) ! "\\'") ! recentf-exclude)))) ! (set-buffer (find-file-noselect (custom-file)))) ! (let ((file-precious-flag t)) ! (save-buffer))))) ! ;;; The Customize Menu. ;;; Menu support --- 4140,4146 ---- (put symbol 'customized-face-comment nil))))) ;; We really should update all custom buffers here. (custom-save-all)) ! ;;; The Customize Menu. ;;; Menu support _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel