bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default

classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default

Drew Adams
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':

(defun clone-frame (&optional frame)
  "Make a new frame with the same parameters as FRAME.
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)
  (let* ((default-frame-alist  (frame-parameters frame))
         (new-fr  (make-frame)))
    (unless (display-graphic-p) (select-frame new-fr))))

In GNU Emacs 26.1 (build 1, x86_64-w64-mingw32)
 of 2018-05-30
Repository revision: 07f8f9bc5a51f5aa94eb099f3e15fbe0c20ea1ea
Windowing system distributor `Microsoft Corp.', version 10.0.16299
Configured using:
 `configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''



Reply | Threaded
Open this post in threaded view
|

bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default

Robert Pluim
Drew Adams <[hidden email]> writes:

> 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.

> (defun clone-frame (&optional frame)
>   "Make a new frame with the same parameters as FRAME.
> 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)
>   (let* ((default-frame-alist  (frame-parameters frame))
>          (new-fr  (make-frame)))
>     (unless (display-graphic-p) (select-frame new-fr))))

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)?

Robert



Reply | Threaded
Open this post in threaded view
|

bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default

Drew Adams
> > 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)))))



Reply | Threaded
Open this post in threaded view
|

bug#32736: 26; Bind `C-x 5 2' to `clone-frame' by default

Phil Sainty
In reply to this post by Robert Pluim
On 15/09/18 06:57, Robert Pluim wrote:
> 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)?

I don't have an opinion on which behaviour should be the default,
but I like the idea of adding such prefix argument behaviour to the
C-x 5 2 binding so that users can choose between the two, so +1 to
that idea in general.

-Phil