-
-
Notifications
You must be signed in to change notification settings - Fork 338
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
An ivy-hydra using the default ivy minibuffer bindings #2021
Comments
I don't get it, you found doc/ivy-help.org confusing? Because that's the help text that you get when you press C-h m or The intention of C-h m ( The intention of C-o ( |
Part of it is that I think they should serve different purposes. The help text is something you read when you first use ivy to learn what it does. My hydra is a reference to use when trying to internalize the key bindings and quickly lookup uncommonly used ones over the following weeks or more. My hydra fits in 27 lines which all fits on the screen at once for me, the help text is 138 lines and in org format, which as a non-org user adds some visual noise with ~, = and :: and with keys, commands and descriptions. I wanted a quicker reference. The basics of C-n/C-p and RET I got immediately. The uses only slightly more advanced than that took me a bit. Entering a directory (C-j not TAB), choosing a name that wasn't in the list (C-M-j), understanding how a non-trivial pattern worked, (en/dis)abling calling, etc. Some of it was that there's a lot of new and unfamiliar terminology (pattern, input, candidate, action, done, alt-done, partial, call, dispatching). So even in the "Key bindings for navigation" section there's the key, the command name and the description. While all of these are for basic navigation in, what as a beginner I'd call "the ivy list" the command names use various terminology (next-line, scroll-up-command, beginning-of-buffer) and the descriptions use different terms (candidate, page) and it's the (to me more confusing) terms in the command names that were highlighted. My hydra above avoids all that and fits all of these on one line:
Part of it is that the help term action is necessarily abstract from the command that invoked it (open a file, select a buffer, run dired, etc.) Then adding the idea of "multiple actions" was a bit of a leap. If I got here via C-x C-f why do I want to do anything other than open a file? So instead of help text like "RET to open the file", I see "(=ivy done=) - exit with the current action" As an ivy beginner that was a (small) hurdle. And I found the (highlighted) command names confusing.
So in a sense I found, my hydra's short help text was a quick way to see the keys mapped to more explicit command names without having to scroll through five pages of help text. In the same vein it took me a long time to internalize that |
The visual noise is now less pronounced.
Maybe we can add this to
I agree that the names could be better, but we have to stick with them now, many packages and user configs depend on them.
The idea with the help text is not to scroll through it, but to search through it with I think your hydra is useful, and some ideas from it can be used to improve the existing hydra and ivy-help.org. But maybe it's a better idea to publish your hydra as a separate package from your own repository. It's already the case that |
Definitely an improvement.
Perhaps. Currently my config isn't on github and I've yet to create a package for distribution.
I played a little with using my hydra text as the basis for a Quick Reference section in ivy-help.org between Help and Basic Operations though I'm not completely happy with it. It feels like a duplication of stuff in the rest of the help buffer and Hydra's faces for keys are a big help in making them jump out and enables putting multiple bindings on a single line. I realized that unlike other |
I had a hard time learning the ivy minibuffer bindings. They weren't obvious to me and I found the help text confusing. I tried using
ivy-hydra
but that just confused me more. Then I realize that it used different bindings from theivy-minibuffer-map
defaults which explained my confusion. I created this hydra that used the default bindings. I've been using for well over a year. The help text really helped me learn the ivy defaults. May I suggest this as the default hydra for ivy or perhaps as inspiration for better help text in the default case.The text was updated successfully, but these errors were encountered: