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.