[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default
From: |
Drew Adams |
Subject: |
bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default |
Date: |
Fri, 14 Sep 2018 12:35:58 -0700 (PDT) |
> > Possible enhancement: Change default binding of `C-x 5 2' to
> > `clone-frame'. Unlike `make-frame-command', `clone-frame' would use the
> > same frame-parameter values as the selected frame. Here's a possible
> > definition of `clone-frame':
>
> Hmm, how common is it to have a frame that doesnʼt have the same frame
> parameters as 'default-frame-alist', and you want to replicate them?
> Personally I quite like the current behaviour.
It's definitely the case for me. I use several kinds of special-display frames.
If I use it on a *Help* frame get a *Help* frame (same background etc.). If I
use it on an *info* frame I get an *info* frame, and so on.
If it's not the case for you then you should get pretty much the same behavior
as now. I don't think you'll notice a difference.
> How about you make it take a prefix argument to get back
> 'make-frame-command' semantics (or keep the current ones, and add
> 'clone-frame' semantics to the prefix arg)?
Fair enough.
(defun clone-frame (&optional frame no-clone)
"Make a new frame with the same parameters as FRAME.
With a prefix arg, don't clone - just call `make-frame-command'.
FRAME defaults to the selected frame. The frame is created on the
same terminal as FRAME. If the terminal is a text-only terminal then
also select the new frame."
(interactive "i\nP")
(if no-clone
(make-frame-command)
(let* ((default-frame-alist (frame-parameters frame))
(new-fr (make-frame)))
(unless (if (fboundp 'display-graphic-p) (display-graphic-p)
window-system)
(select-frame new-fr)))))