aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStefan Monnier2003-06-01 18:40:10 +0000
committerStefan Monnier2003-06-01 18:40:10 +0000
commita153acb7d6cb5f8c04d7ba67e32f22c0e31efc18 (patch)
treed6021c2fd52fab062ed9031e983c7cae1ba1bb03
parent6f8eafd15c3d912d942419dc4b982df5db913910 (diff)
downloademacs-a153acb7d6cb5f8c04d7ba67e32f22c0e31efc18.tar.gz
emacs-a153acb7d6cb5f8c04d7ba67e32f22c0e31efc18.zip
(custom-get-fresh-buffer): Be extra paranoid,
just in case some used a file of the wrong name.
-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 c7cb7d67ce4..51e4e5b1f3a 100644
--- a/lisp/cus-edit.el
+++ b/lisp/cus-edit.el
@@ -1208,12 +1208,21 @@ Called with one argument, the buffer to remove."
1208 1208
1209(defun custom-get-fresh-buffer (name) 1209(defun custom-get-fresh-buffer (name)
1210 "Get a fresh new buffer with name NAME. 1210 "Get a fresh new buffer with name NAME.
1211If the buffer already exist, clean it up to be like new." 1211If the buffer already exist, clean it up to be like new.
1212Beware: it's not quite like new. Good enough for custom, but maybe
1213not for everybody."
1214 ;; To be more complete, we should also kill all permanent-local variables,
1215 ;; but it's not needed for custom.
1212 (let ((buf (get-buffer name))) 1216 (let ((buf (get-buffer name)))
1217 (when (buffer-local-value 'buffer-file-name buf)
1218 ;; This will check if the file is not saved.
1219 (kill-buffer buf)
1220 (setq buf nil))
1213 (if (null buf) 1221 (if (null buf)
1214 (get-buffer-create name) 1222 (get-buffer-create name)
1215 (with-current-buffer buf 1223 (with-current-buffer buf
1216 (kill-all-local-variables) 1224 (kill-all-local-variables)
1225 (run-hooks 'kill-buffer-hook)
1217 (erase-buffer) 1226 (erase-buffer)
1218 (let ((ols (overlay-lists))) 1227 (let ((ols (overlay-lists)))
1219 (dolist (ol (nconc (car ols) (cdr ols))) 1228 (dolist (ol (nconc (car ols) (cdr ols)))