changeset 40966:0eb891bb0d3e

(clone-indirect-buffer): Error if major mode symbol has a no-clone-indirect property. (clone-buffer): Check for obvious errors before reading clone name.
author Richard M. Stallman <rms@gnu.org>
date Tue, 13 Nov 2001 02:09:59 +0000
parents eac4b1ccb6b8
children ab0564ba441e
files lisp/simple.el
diffstat 1 files changed, 17 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/lisp/simple.el	Tue Nov 13 00:07:54 2001 +0000
+++ b/lisp/simple.el	Tue Nov 13 02:09:59 2001 +0000
@@ -3898,8 +3898,14 @@
 If DISPLAY-FLAG is non-nil, the new buffer is shown with `pop-to-buffer'.
 This runs the normal hook `clone-buffer-hook' in the new buffer
 after it has been set up properly in other respects."
-  (interactive (list (if current-prefix-arg (read-string "Name: "))
-		     t))
+  (interactive
+   (progn
+     (if buffer-file-name
+	 (error "Cannot clone a file-visiting buffer"))
+     (if (get major-mode 'no-clone)
+	 (error "Cannot clone a buffer in %s mode" mode-name))
+     (list (if current-prefix-arg (read-string "Name: "))
+	   t)))
   (if buffer-file-name
       (error "Cannot clone a file-visiting buffer"))
   (if (get major-mode 'no-clone)
@@ -3963,9 +3969,15 @@
 
 Optional last arg NORECORD non-nil means do not put this buffer at the
 front of the list of recently selected ones."
-  (interactive (list (if current-prefix-arg
-			 (read-string "BName of indirect buffer: "))
-		     t))
+  (interactive
+   (progn
+     (if (get major-mode 'no-clone-indirect)
+	 (error "Cannot indirectly clone a buffer in %s mode" mode-name))
+     (list (if current-prefix-arg
+	       (read-string "BName of indirect buffer: "))
+	   t)))
+  (if (get major-mode 'no-clone-indirect)
+      (error "Cannot indirectly clone a buffer in %s mode" mode-name))
   (setq newname (or newname (buffer-name)))
   (if (string-match "<[0-9]+>\\'" newname)
       (setq newname (substring newname 0 (match-beginning 0))))