Announcing Casual Info
03 Jun 2024 Charles Choi
Announcing Casual Info, an opinionated porcelain for the Emacs Info reader, now published on MELPA. For folks who find the Info reader barely tolerable, Casual Info might make you learn to love it.
Backstory
My history with the Emacs Info reader is a begrudging, complicated one. When I first started using Info, I’d often be negatively surprised by it, so much so that I’d routinely use the web instead. Upon reflection, I think the reasons for my surprise were:
- I didn’t want to RTFM for Info, I just wanted to focus on the content Info was providing. (Inertia is human.)
- I expected Info to behave like a web browser. (It kinda does, until it doesn’t.)
- Info’s default keybindings muddles in-buffer navigation with node (web analog: page) navigation. (Looking at you
n
for info-next andp
for info-prev.) - Info’s default keybindings for history navigation (
l
for left,r
for right) are unexpected given the typical keys Emacs uses for navigation (f
,b
,n
,p
,{
,}
,[
,]
). - Search in Info is very structured whereas my expectations for search is influenced from the web: I expect unstructured searches to work.
- I could never recall the bindings for Directory (d), much less History (L). Intermittently I could recall how to get to Top (t) and the Table of Contents (T).
Motivation
An indifferent reader might think, “well, just learn Info”, which for other tools I would sympathize. But for the Info reader, I think its ideal user experience (UX) should require no learning curve. As many Emacs users prefer keyboard-driven workflows, building a keyboard-based menu seemed ideal to organize Info commands for discovery and recall. So begat Casual Info.
Casual Info UX Design Notes
Navigation Bindings
The Info reader offers many different ways to navigate which is both a blessing and a curse. Info offers no less than six ways to navigate:
-
By reference (Info-prev-reference, Info-next-reference)
-
By peer node (Info-prev, Info-next)
-
By all nodes (Info-backward-node, Info-forward-node)
-
To first and last node (Info-top-node, Info-final-node)
-
Up to parent node (Info-up)
-
By history (Info-history-back, Info-history-forward)
Comprehending these choices, much less learning and recalling them is a steep curve for lay users of Info. Organizing the navigation commands into a menu can help ensure that the desired action is correctly taken. Note that if Unicode symbols are enabled via the Casual Info Settings, then audio/video playback glyphs are used as menu labels to express intent.
I’d assert that most users lay to Info are conditioned to web browser behavior and will expect node navigation to be primarily historical. As such, Casual Info uses the web browser keybinding convention of (M-[
, M-]
) for historical node navigation instead of the more arcane defaults of l
and r
.
Another assertion is that Emacs user expectations for p
and n
are for in-buffer navigation with that buffer’s existing content. I find it bewildering that the default Info behavior is to map p
and n
to node navigation where the buffer’s content is replaced. To avoid this, Casual Info remaps p
and n
to paragraph navigation optimized for browsing.
Finally reference (or link) navigation in Casual Info are bound to the vi-influenced bindings j
and k
.
Bookmarks and Buffers
When reading documentation, it is natural to want to set and jump to a bookmark. So, Casual Info provides these commands. If multiple Info buffers are cloned, then the need to manage them becomes natural as well. So is added support to call ibuffer
from the “List buffers” menu item.
Closing Thoughts
Casual Info endeavors to make the Info reader be a less surprising tool to use. Since its creation, I’ve found myself using Info far more frequently and have discovered some particular benefits for doing so:
-
Comfortable access to other tool documentation (primarily GNU).
If you rely on Bash, GNU Make, and the GNU coreutils, having access to their documentation from Emacs (especially with bookmarks!) is a capability you’ll never want to go without.
-
Offline (aka local-first) usage.
Viewed from the lens of the web, there is comfort in not having to rely on an internet connection to get reference documentation.
If you've made it to here, thanks for reading! I invite you to please try Casual Info out and provide your feedback on its discussion group.
Links
For readers interested in unifying the UX for the different documentation modes in Emacs, I recommend my post Personalizing Emacs Doc Navigation .