Emacs: beframe version 1.1.0

beframe enables a frame-oriented Emacs workflow where each frame has access only to the list of buffers visited therein. In the interest of brevity, we call buffers that belong to frames “beframed”.

Below are the release notes

This is a small release that adds some quality-of-life refinements to a stable package.

The beframe-global-buffers is more flexible

This is a user option to specify which buffers should appear in all frames. These “global” buffers are thus not associated only with the frame in which they where displayed in.

Before, the value of this user option was a list of strings that were matching buffer names literally. Now it is a list of strings which are understood as regular expressions as well as a list of symbols representing major modes.

Consider this example:

(setq beframe-global-buffers '("\\*scratch\\*" ".*notmuch.*" emacs-lisp-mode))

It matches a buffer with the literal name *scratch*, all buffers that include notmuch in their name, and all buffers whose major mode is emacs-lisp-mode or derived therefrom.

You can now more easily put all buffers in the global list, such as for email or IRC.

The beframe-prefix-map is now a command

Before, this symbol was defined as a variable, which held the value of the key bindings. Users where expected to bind this variable to a key, such as:

(define-key global-map (kbd "C-c b") beframe-prefix-map)

This would set up C-c b as a prefix for all the key bindings inside of beframe-prefix-map. However, any changes to that map would not be automatically included in the prefix. The above binding had to be evaluated again (because we were binding a fixed value directly, instead of having the indirection of a symbol that points to a value).

Now the beframe-prefix-map is implemented as a variable and a command. The variable holds the value of the key bindings, while the command is meant to be assigned to a key. For users, the change is trivial:

(define-key global-map (kbd "C-c b") 'beframe-prefix-map)

Notice the added single quote before beframe-prefix-map. While only an extra character in the user’s configuration, this is a major change because any changes made to the key map will now be automatically available under the defined prefix. No need to evaluate the key binding again.