diff lisp/cus-edit.el @ 51362:0b5cb555fd17

(custom-get-fresh-buffer): New fun. (custom-buffer-create, custom-buffer-create-other-window) (customize-browse): Use it instead of killing buffers. (custom-bury-buffer): Obey the argument. (custom-variable-reset-saved, custom-variable-reset-standard): Remove unused var `comment-widget'. (custom-face-edit-deactivate): Remove unused var `to'. (custom-save-variables): Remove unused var `sep'.
author Stefan Monnier <monnier@iro.umontreal.ca>
date Sat, 31 May 2003 15:23:00 +0000
parents caaa4fda6808
children a2b5bb57e1c9
line wrap: on
line diff
--- a/lisp/cus-edit.el	Sat May 31 08:05:27 2003 +0000
+++ b/lisp/cus-edit.el	Sat May 31 15:23:00 2003 +0000
@@ -1,6 +1,6 @@
 ;;; cus-edit.el --- tools for customizing Emacs and Lisp packages
 ;;
-;; Copyright (C) 1996, 1997, 1999, 2000, 2001, 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1996,97,1999,2000,01,02,2003  Free Software Foundation, Inc.
 ;;
 ;; Author: Per Abrahamsen <abraham@dina.kvl.dk>
 ;; Maintainer: FSF
@@ -1189,7 +1189,8 @@
 ;; If we pass BUFFER to `bury-buffer', the buffer isn't removed from
 ;; the window.
 (defun custom-bury-buffer (buffer)
-  (bury-buffer))
+  (with-current-buffer buffer
+    (bury-buffer)))
 
 (defcustom custom-buffer-done-function 'custom-bury-buffer
   "*Function called to remove a Custom buffer when the user is done with it.
@@ -1205,6 +1206,20 @@
   :type 'integer
   :group 'custom-buffer)
 
+(defun custom-get-fresh-buffer (name)
+  "Get a fresh new buffer with name NAME.
+If the buffer already exist, clean it up to be like new."
+  (let ((buf (get-buffer name)))
+    (if (null buf)
+	(get-buffer-create name)
+      (with-current-buffer buf
+	(kill-all-local-variables)
+	(erase-buffer)
+	(let ((ols (overlay-lists)))
+	  (dolist (ol (nconc (car ols) (cdr ols)))
+	    (delete-overlay ol)))
+	buf))))
+
 ;;;###autoload
 (defun custom-buffer-create (options &optional name description)
   "Create a buffer containing OPTIONS.
@@ -1212,9 +1227,7 @@
 OPTIONS should be an alist of the form ((SYMBOL WIDGET)...), where
 SYMBOL is a customization option, and WIDGET is a widget for editing
 that option."
-  (unless name (setq name "*Customization*"))
-  (kill-buffer (get-buffer-create name))
-  (pop-to-buffer (get-buffer-create name))
+  (pop-to-buffer (custom-get-fresh-buffer (or name "*Customization*")))
   (custom-buffer-create-internal options description))
 
 ;;;###autoload
@@ -1225,14 +1238,13 @@
 SYMBOL is a customization option, and WIDGET is a widget for editing
 that option."
   (unless name (setq name "*Customization*"))
-  (kill-buffer (get-buffer-create name))
   (let ((window (selected-window))
 	(pop-up-windows t)
 	(special-display-buffer-names nil)
 	(special-display-regexps nil)
 	(same-window-buffer-names nil)
 	(same-window-regexps nil))
-    (pop-to-buffer (get-buffer-create name))
+    (pop-to-buffer (custom-get-fresh-buffer name))
     (custom-buffer-create-internal options description)
     (select-window window)))
 
@@ -1392,8 +1404,7 @@
   (unless group
     (setq group 'emacs))
   (let ((name "*Customize Browser*"))
-    (kill-buffer (get-buffer-create name))
-    (pop-to-buffer (get-buffer-create name)))
+    (pop-to-buffer (custom-get-fresh-buffer name)))
   (custom-mode)
   (widget-insert "\
 Square brackets show active fields; type RET or click mouse-1
@@ -2440,7 +2451,6 @@
 becomes the backup value, so you can get it again."
   (let* ((symbol (widget-value widget))
 	 (set (or (get symbol 'custom-set) 'set-default))
-	 (comment-widget (widget-get widget :comment-widget))
 	 (value (get symbol 'saved-value))
 	 (comment (get symbol 'saved-variable-comment)))
     (cond ((or value comment)
@@ -2464,8 +2474,7 @@
 The value that was current before this operation
 becomes the backup value, so you can get it again."
   (let* ((symbol (widget-value widget))
-	 (set (or (get symbol 'custom-set) 'set-default))
-	 (comment-widget (widget-get widget :comment-widget)))
+	 (set (or (get symbol 'custom-set) 'set-default)))
     (if (get symbol 'standard-value)
 	(progn
 	  (custom-variable-backup-value widget)
@@ -2586,7 +2595,6 @@
   (unless (widget-get widget :inactive)
     (let ((tag (custom-face-edit-attribute-tag widget))
 	  (from (copy-marker (widget-get widget :from)))
-	  (to (widget-get widget :to))
 	  (value (widget-value widget))
 	  (inhibit-read-only t)
 	  (inhibit-modification-hooks t))
@@ -3727,8 +3735,7 @@
 			    (and (not (boundp symbol))
 				 (not (eq (get symbol 'force-value)
 					  'rogue))))))
-	      (comment (get symbol 'saved-variable-comment))
-	      sep)
+	      (comment (get symbol 'saved-variable-comment)))
 	  ;; Check `requests'.
 	  (dolist (request requests)
 	    (when (and (symbolp request) (not (featurep request)))