avy 0.5.0 is out
11 May 2019This release consists of 109 commits done over the course of the last 3 years by me and many
contributors. Similarly to the 0.4.0
release, the release notes are in
Changelog.org. I recommend
reading them inside Emacs.
Highlights
A lot of new code is just straight upgrades, you don't need to do anything extra to use them. Below, I'll describe the other part of the new code, which is new commands and custom vars.
New API functions
New functions have been added as drop-in replacements of double-dash (private) Avy functions that were used in other packages and configs. Please replace the references to the obsolete functions.
avy-jump
is a drop-in replacement ofavy--generic-jump
,avy-process
is a drop-in replacement ofavy--process
.
New dispatch actions
The concept of dispatch actions was introduced in 0.4.0. Suppose you have bound:
(global-set-key (kbd "M-t") 'avy-goto-word-1)
and a word that starts with a "w" and is select-able with "a". Here's what you can do now:
- M-t w a to jump there
- M-t w x a -
avy-action-kill-move
: kill the word and move there, - M-t w X a -
avy-action-kill-stay
: kill the word without moving the point, - M-t w i a -
avy-action-ispell
: use ispell/flyspell to correct the word, - M-t w y a -
avy-action-yank
: yank the word at point, - M-t w t a -
avy-action-teleport
: kill the word and yank it at point, - M-t w z a -
avy-action-zap-to-char
: kill from point up to selected point.
You can customize avy-dispatch-alist
to modify these actions, and also ensure that there's no
overlap with your avy-keys
, if you customized them.
New avy-style
setting: 'words
You can now customize:
(setq avy-style 'words)
And you'll see overlays like "by", "if", "is", "it", "my" for 2-letter sequences, and "can", "car",
"cog" for 3-letter sequences. You might find them easier to type than "hla", "lls" and "jhl". But
you will have to adjust your avy-dispatch-alist
, e.g. to use only upper case characters.
avy-linum-mode
This is feature is a mix of linum-mode
and ace-window-display-mode
. You'll see the overlays when
you enable this mode, so that there's less context switch when you call avy-goto-line
.
Restarting an avy
search
Suppose you jumped to a word that starts with "a". Now you want to jump to a different word that
also starts with "a". You can use avy-resume
for this.
Additionally, you can use avy-next
and avy-prev
to cycle between the last avy
candidates. Here's an example hydra to facilitate it:
(defhydra hydra-avy-cycle ()
("j" avy-next "next")
("k" avy-prev "prev")
("q" nil "quit"))
(global-set-key (kbd "C-M-'") 'hydra-avy-cycle/body)
Outro
Big thanks to all contributors, and I hope you enjoy the new release. Happy hacking!