Subject: bug#34715: 26.1; (1) Add `clone-frame', (2) bind it to `C-x 5 2'

From: Eli Zaretskii <[email-masked]>
Date: Mon, 04 Mar 2019 20:14:20 +0200

> Date: Mon, 4 Mar 2019 09:25:20 -0800 (PST)
> From: Drew Adams <[email-masked]>
> Cc: [email-masked]
> 
> > >    Why change the default behavior of `C-x 5 2'?  If I want the
> > >    buffer of the selected window shown in another frame then I
> > >    typically want that frame to have the same parameters.
> > 
> > That's what default-frame-alist is for.
> 
> I already have what I need for my own use.  Here
> I'm proposing something for Emacs - that's the
> point of this enhancement.

default-frame-alist is for everyone, i.e. "for Emacs".  Not just for
you and me.

> > If you are used to change the
> > parameters of your frames a lot during their lifetime, which
> > presumably means each of your frames might look and work differently,
> > it is not entirely clear to me that "C-x 5 2" should produce a clone
> > of the random frame where you just happened to type the command.
> 
> Sorry, I don't understand your point there.
> 
> I don't just "happen to type the command" in "random
> frames".  I hit its key (`C-x 5 2', for me) with a
> frame selected that I want to clone.

That's you.  Me, I type "C-x 5 2" whenever I need another frame,
regardless of the frame that happens to be selected at that time.
With your suggestion, I'll need to think which frame I want to select
before making a new one.  That's a disadvantage for me.

> > It could even cause trouble/unexpected behavior,
> > with some exotic parameters, at least in principle.
> 
> I don't see that either.  Could you give an example?

A frame parameter can be anything at all.  Cloning all of them
sometimes makes little sense.  You yourself gave an example: the
position of the frame.

> > > 3. BTW, I think it would be good to add this to the doc string of
> > >    `make-frame-command':
> > >
> > >    Return the new frame.
> > 
> > "When called from Lisp, return the new frame."
> 
> It returns the frame no matter how it's called.

But it makes no sense to talk about the return value in interactive
use, does it?