A while ago I wrote about abo-abo’s application of Hydra to switching windows. It was an idea apparently inspired by Sacha Chua’s use of his def-rep-command to switch windows but went further to handle many chores involving windows and buffers. I had also recently written about John Kitchin’s use of Helm to do the same sort of thing, and remarked that I really liked both methods but couldn’t make up my mind as to which to implement.
Abo-abo’s method seemed easier to implement so I decided to try it on an experimental basis. If I didn’t like it, I could always try Kitchin’s method instead. My version is almost the same as abo-abo’s except I use x
and y
for vertical and horizontal splits and I added magit-status
.
I’ve been using it for a couple of weeks and really like it. It definitely gives Emacs a further Lisp Machine feel. The Lisp Machine had a SELECT key that was used to initiate window operations and hydra-window
has the same feel. It’s really convenient how I can perform several operations in a row with one hydra invocation. For example, I can switch to another window, load an existing buffer or bookmarked file and switch back to the original window almost instantaneously.
I find that I now use bookmarks all the time whereas before I seldom did. It’s so easy: invoke hydra-window
, press 【m】, and then one other letter to bring up the file. A lot of my work flow involves the same set of files so this really speeds things up. It’s faster, even, than just keeping the files open and switching to them with ido
. I made this work better by stealing another idea from abo-abo and upgrading to bookmark+ and arranging to have distinct starting letters (or in some case 2 letters) for the bookmark names. That, with headlong-bookmark-jump
means I can select a file with a single letter or two. I also added book marks to call Ibuffer
and open Irreal in my browser.
It’s startling what a different feel using this set up gives my Emacs workflow. Things just seem faster and smoother. The only problem I haven’t resolved is how to invoke hydra-window
. Currently【F1】, 【F10】, and【y y】 are all bound to hydra-window
. I’m trying to determine what the best sequence to simulate the SELECT
key is. I like【F1】 but dired+
steals it. I could probably remap that after dired+
is loaded but I’m finding 【F10】 more natural. I’ll probably keep experimenting with different bindings for a while.
A final benefit is completely unexpected. For some reason, I have stopped fretting so much over open buffers.