From 61acfe7f5d8bf84a1c002bae44009fa88879f3eb Mon Sep 17 00:00:00 2001 From: "Richard M. Stallman" Date: Tue, 13 Nov 2001 02:09:59 +0000 Subject: [PATCH] (clone-indirect-buffer): Error if major mode symbol has a no-clone-indirect property. (clone-buffer): Check for obvious errors before reading clone name. --- lisp/simple.el | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lisp/simple.el b/lisp/simple.el index 5af9a187091..4bf1edf801f 100644 --- a/lisp/simple.el +++ b/lisp/simple.el @@ -3898,8 +3898,14 @@ NEWNAME is modified by adding or incrementing at the end as necessary. 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 @@ This is always done when called interactively. 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)))) -- 2.39.2