Transient Menus Galore

I just wanted to take a short minute to shout out to two transient.el based packages I discovered this week.


One is org-menu, and bound to C-c m, it shows a transient menu of, well, transient keybindings to navigate around, move outline items, and do a lot of other things.

This was the first time I’ve seen a transient menu stay on-screen until it’s manually dismissed. Didn’t know it could do that, and it makes a lot of sense to group key bindings that you usually repeat or use in succession to make access to them easier without having to repeat the prefixes.

For example, C-n m n n n n to open org-menu and then interactively go down 4 headings, one by one, can considered to be be simpler than hitting C-c C-n four times.

For text editing tasks this can be useful, too, like doing sentence-level manipulations. Invoke the sentence manipulation transient menu, then move a sentence to the right a couple of times; things like that, maybe.

I’m underselling what org-menu can do; there’s a special menu for table editing that is much appreciated because I just can’t get the default key bindings for “add row” and “delete row” right.


The other transient package I found is tray by Jonas Bernoulli, creator of transient, himself.

It describes itself as “Transient menus for a wide variety of things.”

So I looked at the source and found tray-mml that defines a quick menu for common email tasks. Like attaching a file into an email buffer from the email buffer, for which I always forget the key bindings (C-c RET f, by the way).

Usually, I browse a directory and then figure I want to send the file from there to someone. I use an Embark action for that, which is like a transient contextual menu: go to a file in a dired listing, hit C-, a to open Embark and attach the file-at-point. It then opens a new email draft, or uses an open email buffer, if any exists.

Attaching files is pretty boring, but making signing email easier or quoting the selected text? Yes please! Requires fewer key bindings for these commands.

Receive new .