Function: clone-indirect-buffer
clone-indirect-buffer is an interactive and byte-compiled function
defined in simple.el.gz.
Signature
(clone-indirect-buffer NEWNAME DISPLAY-FLAG &optional NORECORD)
Documentation
Create an indirect buffer that is a twin copy of the current buffer.
Give the indirect buffer name NEWNAME. Interactively, read NEWNAME
from the minibuffer when invoked with a prefix arg. If NEWNAME is nil
or if not called with a prefix arg, NEWNAME defaults to the current
buffer's name. The name is modified by adding a <N> suffix to it
or by incrementing the N in an existing suffix. Trying to clone a
buffer whose major mode symbol has a non-nil no-clone-indirect
property results in an error.
DISPLAY-FLAG non-nil means show the new buffer with pop-to-buffer.
This is always done when called interactively.
Optional third arg NORECORD non-nil means do not put this buffer at the front of the list of recently selected ones.
Returns the newly created indirect buffer.
Probably introduced at or before Emacs version 21.1.
Key Bindings
Source Code
;; Defined in /usr/src/emacs/lisp/simple.el.gz
(defun clone-indirect-buffer (newname display-flag &optional norecord)
"Create an indirect buffer that is a twin copy of the current buffer.
Give the indirect buffer name NEWNAME. Interactively, read NEWNAME
from the minibuffer when invoked with a prefix arg. If NEWNAME is nil
or if not called with a prefix arg, NEWNAME defaults to the current
buffer's name. The name is modified by adding a `<N>' suffix to it
or by incrementing the N in an existing suffix. Trying to clone a
buffer whose major mode symbol has a non-nil `no-clone-indirect'
property results in an error.
DISPLAY-FLAG non-nil means show the new buffer with `pop-to-buffer'.
This is always done when called interactively.
Optional third arg NORECORD non-nil means do not put this buffer at the
front of the list of recently selected ones.
Returns the newly created indirect buffer."
(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-buffer "Name of indirect buffer: " (current-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))))
(let* ((name (generate-new-buffer-name newname))
(buffer (make-indirect-buffer (current-buffer) name t)))
(when display-flag
(pop-to-buffer buffer nil norecord))
buffer))