[[!meta title="Re-imagining the Emacs User Experience with Casual Suite"]] [[!meta copyright="Copyright © 2024 Charles Choi"]] [[!inline pages="internal(2024/info/casual-nav)" raw="yes"]] # Re-imagining the Emacs User Experience with Casual Suite Charles Choi (he/him) - Pronunciation: Che, IRC: kickingvegas, , Mastodon: [[!inline pages="internal(2024/info/casual-before)" raw="yes"]] To date, the predominant interaction model for Emacs has been to use keybindings or the mini-buffer prompt to issue commands. These commands are drawn from a vast ecosystem of packages (both core and third party) designed to extend Emacs. When these commands are used in aggregate, the aforementioned interaction model places a high cognitive load on the user. It also sets a very steep learning curve for Emacs. The inclusion of the Transient model package in Emacs facilitates a different interaction model using keyboard-driven menu interfaces. Menu interfaces excel at discovery and recognition, neither of which are well supported with keybindings and a prompt. Menu interfaces also can be made contextual to allow the user to focus on a task at hand. Casual Suite is a personal effort to re-imagine the Emacs user experience by using keyboard-driven Transient menus as its primary interaction model. This talk describes Casual Suite, detailing its implementation and operation. About the speaker: Charles Choi has been an Emacs user since 1989 but did not get around to learning Elisp until 2022. He possesses formal knowledge of computers with a Ph.D. in Computer Engineering received from the University of Virginia in 1997. He is from and continues to live in San Francisco. # Discussion ## Questions and answers - Q: I wonder whether casual can only be used with the packages you mentioned or whether it can be used with whatever package you like? e.g., can I use causal with AUCTeX? - A: More the latter; can the questioner clarify the question? - People are free to fork and iterate over casual - transient.el already has mechanism for modifying an existing transient to redefine the bindings over the definition - Q: \[related to the previous\] Are there any patterns emerging, such that it would seem possible to 1) systematize 2) automate(?) the mapping of mode commands to keyboard-driven menus? Possibly even have an auto casual wrapper for an uncovered mode? - A:  - Q: Does Casual have a log where you can see what commands were invoked?  This is always available via M-x view-lossage or via command-log-mode, but I\'m wondering if it can do for Emacs commands what Magit\'s process buffer (\$) does for learning Git commands.  (Leo just spoke about this.) - A: That just works. (But try keycast-log-mode instead of view-lossage.) - Q: Is there a setting to close menu after executing command? - A: - Q: What modes are you working on at the moment for casual / are excited to explore? - A: - Q: Why not improve which-key (which seems to be included in Emacs 30 by default) to accommodate for your very slight differences instead of reinventing the same thing from scratch in an incompatible way? - \@majorgnu on YouTube: This is great! Emacs\'s plethora of powerful functionality really needs a better way to surface itself to users and this is a great step in that dirrection. I do have a few thoughts, though:  - Is there a convenient way for a user in a transient to get more information about a menu entries? Specifically: the normal keybindings (if available) and command documentation.  - It could be useful to gather and display statistics about menu usage. Imagine being able to generate a personalized keybinding cheat sheet with the menu items you use the most! [[!inline pages="internal(2024/info/casual-after)" raw="yes"]] [[!inline pages="internal(2024/info/casual-nav)" raw="yes"]]