aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/cus-edit.el
diff options
context:
space:
mode:
authorStefan Monnier <[email protected]>2003-06-01 18:40:10 +0000
committerStefan Monnier <[email protected]>2003-06-01 18:40:10 +0000
commita153acb7d6cb5f8c04d7ba67e32f22c0e31efc18 (patch)
treed6021c2fd52fab062ed9031e983c7cae1ba1bb03 /lisp/cus-edit.el
parent6f8eafd15c3d912d942419dc4b982df5db913910 (diff)
(custom-get-fresh-buffer): Be extra paranoid,
just in case some used a file of the wrong name.
Diffstat (limited to 'lisp/cus-edit.el')
-rw-r--r--lisp/cus-edit.el11
1 files changed, 10 insertions, 1 deletions
diff --git a/lisp/cus-edit.el b/lisp/cus-edit.el
index c7cb7d67ce..51e4e5b1f3 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1208,12 +1208,21 @@ Called with one argument, the buffer to remove."
(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."
+If the buffer already exist, clean it up to be like new.
+Beware: it's not quite like new. Good enough for custom, but maybe
+not for everybody."
+ ;; To be more complete, we should also kill all permanent-local variables,
+ ;; but it's not needed for custom.
(let ((buf (get-buffer name)))
+ (when (buffer-local-value 'buffer-file-name buf)
+ ;; This will check if the file is not saved.
+ (kill-buffer buf)
+ (setq buf nil))
(if (null buf)
(get-buffer-create name)
(with-current-buffer buf
(kill-all-local-variables)
+ (run-hooks 'kill-buffer-hook)
(erase-buffer)
(let ((ols (overlay-lists)))
(dolist (ol (nconc (car ols) (cdr ols)))