[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: "grouping" buffers

From: Jean-Christophe Helary
Subject: Re: "grouping" buffers
Date: Sun, 31 May 2020 14:02:39 +0900

Thank you Drew.

> On May 31, 2020, at 12:49, Drew Adams <> wrote:
>> The utilities for manipulating frames and buffers within frames
>> are extremely limited.  There does not seem to be a way to "name" a
>> given frame, 
> In `frame-cmds.el' you have command `rename-frame'.  Doc:

Sorry. The "default" utilities... I was only looking at the Emacs manual and at 
some command names I found with C-h.

Also, which-key shows that there are only very few C-x 5 prefixed commands. 
From a basic Emacs user’s point of view *that* is extremely limited.

Now that you mention the elisp manual, I checked it and found a few interesting 

> Frame Titles

> Every frame has a name parameter; this serves as the default for the frame 
> title which window systems typically display at the top of the frame. You can 
> specify a name explicitly by setting the name frame property.

I don't know how to "set the name frame property". But there is probably a 
place in the elisp manual that says how to do that.

I think there should be a command that does that in frame.el.

> Normally you don’t specify the name explicitly,

That's quite a statement...

Maybe that should be "Normally Emacs computes..."

> and Emacs computes the frame name automatically based on a template stored in 
> the variable frame-title-format. Emacs recomputes the name each time the 
> frame is redisplayed.

>> or to call a frame to the front for example, like I'd call
>> a buffer to the front. 
> By "call to the front", do you mean select the frame,
> giving it focus?  That's standard command `select-frame' or
> `select-frame-by-name' (or function `select-frame-set-focus').

When I call select-frame I get "command-execute: select-frame must be bound to 
an event with parameters" I don't know what that means.

Thanks to autocompletion I found about select-frame-by-name, and well, that 
worked fine, but as far as I can tell it's documented neither in the elisp 
manual nor in the emacs manual.

>> I can call it to the front or to the back, I can modify its
>> contents, I can rearrange the size and placement of each frame, etc.
> Dunno what you mean by modify its contents.

Since in macos 1 frame = 1 window = 1 buffer, I can write something like "set 
contents of document (read "buffer") of front window (read "frame") to 

But that was just an example of how frames are easy to manipulate and access 
out of the box in macos/applescript.

>> I can't seem to be able to do that in emacs for emacs frames.
> Most frame changes are done ultimately with
> `modify-frame-parameters'.

I see. Maybe the section I quoted above could have an explicit link to that 
section. I mean, *all* sections in the Emacs manual should have a link to the 
relevant part of the Elisp manual...

> The Elisp manual is
> pretty good on this subject.  Start with node
> `Frames'.


Now it occurs to me that the tab feature that has been recently included in 
Emacs is easier to use out of the box than frames. For ex, by default I can 
call a menu where all the tabs are listed and I can select any one of them.

Although it is a different "menu", I just checked and F10 menu does have a 
frame item but it's buried inside the Buffer item.

In conclusion, I think there could be the following modifications to the system 
to improve usability:

Short term:
1) Assign a C-x 5 default keybinding to "select-frame-by-name"
2) Add a C-x 5 bound command for renaming a frame
3) Document select-frame-by-name in the 2 manuals
4) Move the F10 "Frames" menu item to the menu root

Medium term:
4) Systematically add links to the Elisp manual in the Emacs manual. To make 
sure that new users get a habit to checking the two.

I also need to understand why "select-frame" spits that error message...

Thank you again for the references.

Jean-Christophe Helary @brandelune

reply via email to

[Prev in Thread] Current Thread [Next in Thread]