New on MELPA - avy08 May 2015
Yes, they used to depend on ace-jump-mode, hence the
ace in their names, but as I added features to my packages over time, it became harder to compose
features because of
Don't get me wrong,
ace-jump-mode is a fine standalone package, and if you're using it only for
jumping to chars, there are few reasons for you to make the switch. However, if you're interested in
the new and juicy features, such as:
- jumping to word starts
- jumping to sub-word starts
- jumping to line beginnings or endings
- copying and moving lines
with most of the features coming in
-2 flavor, or if you're interested in building
ace-jump-mode-based package, then you should consider avy.
The leading chars flavor
All of the commands provided are about jumping to visible characters, and possibly doing some stuff. Since usually there are a lot of these visible characters, it's advantageous to first narrow them somewhat. So each command can be divided into two phases: the narrowing phase and the decision phase.
There are 3 variations of the narrowing phase:
avy-goto-linedoesn't narrow at all. The advantage that there's minimum context switching (no narrowing phase, only decision phase). The disadvantage is that the number of candidates in the decision phase can be quite large.
avy-goto-charnarrows by the first character of the thing. The disadvantage is the context switch: first you call the command, then you switch context to scan and input the leading char, then you switch context to scan and input the decision chars. The advantage is less candidates in the decision phase.
-2flavor is my favorite
avy-goto-char-2: it reads two consecutive chars, instead of just one. This doesn't impact the narrowing phase too much, since inputting two consecutive chars isn't much more than just one. But it greatly decreases the number of candidates in the decision phase. The small amount of candidates allows me to use this setting for the decision:
(setq avy-keys '(?a ?s ?d ?f ?g ?h ?j ?k ?l))
That's only 9 decision chars, all of them on the home row.
The decision char overlay flavors
Once again, there are three, here are their corresponding
(defcustom avy-goto-char-style 'pre "Method of displaying the overlays for `avy-goto-char' and `avy-goto-char-2'." :type '(choice (const :tag "Pre" pre) (const :tag "At" at) (const :tag "Post" post))) (defcustom avy-goto-word-style 'pre "Method of displaying the overlays for `avy-goto-word-0' and `avy-goto-word-0'." :type '(choice (const :tag "Pre" pre) (const :tag "At" at) (const :tag "Post" post)))
If you're used to
ace-jump-mode, the corresponding style is
at, which displays the overlay at
the target position, one character at a time. I don't like this style most of the time, I prefer
pre which is more similar to
vim-easymotion: it will display the full char path at once, before
the target position. This results in less feedback and more efficiency, in my opinion.
Give the new package a try, it's already been pretty active the last few days, with bugs being fixed and new features appearing, thanks to all who contributed.
Finally, the package in on MELPA, so it's convenient to install. The only hassle is to decide where to bind all these commands.