Emacs-like command trees / multi-key hotkeys / user-defined sub-command menus

Use case or problem

Multi-plugin power users must remember and quickly access 100+ hotkeys. This quickly devolves into a “was that control-command W” or “shift-alt W”??

Proposed solution

Emacs manages key bindings for many many dozens of plugins by using Muti-key command trees. Where hot keys can be bound to a SEQUENCE of keystrokes. As long as no sequence is a prefix of any other sequence they can be distinguished at execution time.

How this is used:
The use GROUPS commands and binds all of them to sequences with the same first key stroke. Common commands are still assigned a single stroke hotkey, while complex commands are assigned two (or sometimes more key strokes).

This is far easier to remember since one can arrange to use a pneumonic letter like “T” for table related commands, then a pneumonic letter like “I” for insert, and “R” for row. So the command would be ^T-I-R for table-insert-row.

A valuable addition would be the ability to bind a special “sub-menu” indicator, to a keystroke prefix. This tells Obsidian to present the user with a dynamically constructed submenu of all possible next key strokes, this can greatly aid the user’s memory of all key strokes under the “Table commands” “^T” prefix. This submenu would popup after the user paused some number of milliseconds or perhaps when they typed a special “help key”

Using these submenus the user would only need to remember the keystroke that brings up the submenu of many related commands.

Current workaround (optional)

Some plugin already create a submenu (e.g. menu of all possible template). Judicious prefix naming of those menu items can approximate a command tree like experience. BUT:

one can only have the specific sub-menus that the plugin creator provided. Power users will want to fashion their own submenus. Also those menus have ALL templates, while the user will only want a related subset along with non-template commands in their submenu, but that is impossible. Finally these menus require hitting return at the end. this is a 50% increase in keystrokes required for two-keystroke commands.

Related feature requests (optional)

I could not find any related requests.


It seems better suited for plugin idea.

Thanks. I have not yet explored the APIs for plugins, so don’t really understand what aspects of obsidian can be changed using a plugin. If users have plug-in ideas, is it appropriate to post them to the forum? (if so, then where?)

Thanks much for the guidance!