Skip to content

Latest commit

 

History

History
498 lines (395 loc) · 19.4 KB

Changelog.org

File metadata and controls

498 lines (395 loc) · 19.4 KB

0.3.0

Fixes

Candidate window reversal

See #27.

Jumping to newlines with at-full style

See #5.

Stop at-full style from shifting text sometimes

See #5.

Fix at-full interaction with tabs

When at a tab, visualize it using tab-width spaces.

See #43.

Fix overlay issue when the same buffer is in two windows

See #47 and http://debbugs.gnu.org/cgi/bugreport.cgi?bug=20607.

Quote punctuation chars

See #63.

Update screenshot for avy-goto-char in README.md

Use C-: as the new suggested binding instead of the pi char.

See #64.

New Features

avy-goto-line can now break into goto-line

Just enter a digit and you’ll be transferred into goto-line prompt with that digit already entered. This means that you can just bind M-g g to avy-goto-line without losing anything.

See #29.

avy-goto-line now works with all kinds of overlay styles

Any of the following do something different now:

(setq avy-styles-alist
      '((avy-goto-line . post)))
(setq avy-styles-alist
      '((avy-goto-line . at)))
(setq avy-styles-alist
      '((avy-goto-line . at-full)))
(setq avy-styles-alist
      '((avy-goto-line . pre)))

See #17.

New defcustom avy-case-fold-search

Non-nil when searches should ignore case, so e.g. avy-goto-char “b” will match both “b” and “B”. On by default. Use this to turn off this behavior:

(setq avy-case-fold-search nil)

See #34.

New command avy-goto-word-or-subword-1

Enter one char, and select a visible word or subword that starts with it, depending on subword-mode. Move the point there.

See #33.

avy-move-line should remove empty line after original one is moved

See #40.

avy-move-line now takes a prefix arg

Use e.g. M-3 before avy-move-line to move 3 lines at once.

Most commands can be used non-interactively

Example:

(defun avy-goto-lp ()
  (interactive)
  (avy-goto-char ?\())

This command only goes to the “(” character. This is actually very similar to =lispy-ace-paren=, except the implementation is only one line.

See #44.

(almost) all defcustoms are explained on the wiki

See the defcustom wiki page.

Allow all operations to work across frames

You have to customize avy-all-windows for this. By default, it’s set to work on all windows on the current frame.

To make it work only on the current window, use:

(setq avy-all-windows nil)

To make it work on all frames, use:

(setq avy-all-windows 'all-frames)

New command avy-goto-char-in-line

This is avy-goto-char reduced only to the current line. Few candidates means very short decision chars path.

See #49.

New overlay style de-bruijn

How to use it:

(setq avy-style 'de-bruijn)

What it does: when your leading chars are clumped up together, it’s impossible to overlay the decision path without shifting the buffer text a bit. For example, with the word “buffer”, you avy-goto-char “b”, and:

  • the path for the first “f” is “aj”
  • the path for the second “f” is “ak”

It’s not possible to overlay 4 characters over “ff” in “buffer”. But to with de-bruijn style, which results in the path being “aj” and “jk”. It’s possible to overlay “ajk” just fine.

Pros and cons of de-bruijn over other styles:

  • a pro is that it’s possible to display the full decision path for clumped up chars, which is truncated for other styles
  • a con is that the decision path is of the same length (e.g. 2 or 3) for all candidates, while with other styles it’s possible to have a few candidates with a shorter path.

See #51 and #5.

New defcustom avy-ignored-modes

This is meant for visual modes like doc-view-mode or image-mode that can have a huge number of chars in a single window. Which results in a huge number of candidates even in other windows.

Current setting:

(setq avy-ignored-modes '(image-mode doc-view-mode pdf-view-mode))

See #57.

New tutorial on writing custom commands

See the the custom-commands wiki page and #55.

New face setup

New variable avy-lead-faces will determine the faces used to color the current decision depth you’re in. For example, if to select a particular candidate you need to press “abc”:

  • “a” will be highlighted with a face that corresponds to depth 3
  • “b” will be highlighted with a face that corresponds to depth 2
  • “c” will be highlighted with a face that corresponds to depth 1

But if another candidate needs “ef”:

  • “e” will be highlighted with a face that corresponds to depth 2
  • “f” will be highlighted with a face that corresponds to depth 1

See #53.

New variable avy-translate-char-function

You can use this, for example, to interpret one character as another in avy-keys.

Example:

(setq avy-translate-char-function
          (lambda (c) (if (= c 32) ?a c)))

This will translate SPC (32) into a. So you can press either a or SPC to mean “a”.

avy-isearch works for different styles

See #61.

Switch the default style from pre to at-full

I’ve come to like at-full more than pre over time. The difference is that pre hides no chars in your buffer, while at-full doesn’t shift text.

Use this to restore the previous default behavior:

(setq avy-style 'pre)

0.4.0

Fixes

avy-goto-char-timer obeys avy-styles-alist

See #67.

Add de-bruijn to the defcustom of avy-styles-alist

See #73.

Respect the current input method for target chars

See #76.

avy-goto-subword-0 shouldn’t offer invisible chars

See #90.

Better case-fold-search handling

See #87.

Add misc punctuation to subword commands

See #93.

Add padding for wide-width chars (ex. Japanese and Chinese)

See #96.

avy-goto-line

Push mark for numeric line

See #74.

Allow numeric prefix arg

The old behavior remains for ARG 1 or 4. For all other ARG, simply go to that line. See #86.

Work for visual-line-mode

See #91.

Don’t error on end of buffer

See #91.

Obey avy-background

See #94.

Fix for narrowed regions

See #122, #123.

Don’t modify avy-action

See #124.

avy-goto-char-timer

May read as many chars as you want

See #97.

Highlight matches while reading chars

See #98.

Highlight depending on avy-all-windows

See #104.

Make faster for org-mode

See #100.

Add case fold search

See #128.

avy-copy-region

Keep the same selectors for the second pass

See #120, #121.

Copy/move to initial window

See #131.

Search only in the visible region

See #108, #109.

Fix jumping to the last char of a folded Org outline

See #108.

Fix for both org-indent-mode and visual-line-mode

See #110.

Beep when there are no matches

See #111.

Simplify overlay code

Most functions reuse avy--overlay now.

Fix de-bruijn “no catch for tag”

See #116.

Fix overlays at point-max

See #125.

Improve case-fold-search condition

See #126.

Don’t shorten selector string for visual-line-mode and bolp

See #129.

Fix interaction with goto-address-mode

New Features

Allow non-printing keys in avy-keys

Now you can set avy-keys also to the arrow keys and page up/down, e.g.

(setq avy-keys '(left right up down prior next))

and those will be displayed as ▲, ▼, ◀, ▶, △, ▽ in the overlays. The display is controlled by the variable avy-key-to-char-alist.

See #77.

Allow to switch action midway from goto to kill/mark/copy

For example, suppose you have:

(global-set-key (kbd "M-t") 'avy-goto-word-1)
  • To jump to a certain word starting with “w” (e.g. first one on screen): M-t w a
  • To copy the word instead of jumping to it: M-t w na.
  • To mark the word after jumping to it: M-t w ma.
  • To kill the word after jumping to it: M-t w xa.

You can customize avy-dispatch-alist to modify these actions.

See #78.

New command avy-pop-mark

Goes back to the last location of push-mark:

  • has its own history,
  • handles multiple frames.

See #81 #88 #69.

New commands avy-goto-line-above and avy-goto-line-below

See #106.

New defcustom avy-line-insert-style

Allows to modify the behavior of avy-copy-line, avy-move-line, and avy-copy-region. See #117.

New defcustom avy-all-windows-alt

Allows to customize the behavior of universal-argument modifying avy-all-windows. See #118.

New defcustom avy-subword-extra-word-chars

Allows to customize the behavior of avy-goto-subword-0 and avy-goto-subword-1 by adding extra chars that should match as word constituents. See #116.

0.5.0

Fixes

el:avy-action-copy

Save selected window and frame. See #133.

Copy line for el:avy-goto-line. See #191.

el:avy-read

Make C-g and ESC fail silently when reading char. See #137.

Display error message on mouse clicks. See #226.

Update el:avy-current-path before returning. See #226.

Quit on ESC. See #249.

Fix for el:org-toggle-link-display. See #261.

Fix for el:buffer-invisibility-spec being t. See #264.

Allow “invisible” ‘org-link. See #269.

el:avy-goto-word-1

Works for “^A”-“^Z”, see #167.

el:avy-goto-subword-0

Add char at window start if empty, See #145.

Add option to limit scope. See #235.

el:avy-goto-subword-1

Check el:char-after. See #163.

el:avy-isearch

Escape regex. See #147.

el:avy-goto-char-2

Translate RET to C-j. See #153.

el:avy-action-goto

Add el:raise-frame.

el:avy-goto-char-timer

Allow C-h to delete. See #193.

Obey el:avy-background for the initial search. See #259.

el:avy-goto-line

Fix for empty buffer. See #238.

Add ability to display candidates from bottom to top. See #236.

el:avy–overlay-at-full

More consistent face order. See #270.

documentation

See #223, #226, #218, #245, #262.

New Features

API

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.

el:avy-jump

New API function to replace el:avy–generic-jump. See #265, #267.

el:avy-process

New API function to replace el:avy–process. See #266.

New actions

el:avy-action-kill-stay

Kill a word with el:avy-goto-char without moving there. Bound to X.

el:avy-action-ispell

Auto-correct word at point. See #142, #160, #161. Bound to i.

el:avy-action-yank

Yank sexp starting at selected point at the current point. See #183. Bound to y.

el:avy-action-teleport

Kill sexp starting on selected point and yank into the current location. See #207. Bound to t.

el:avy-action-zap-to-char

Kill from point up to selected point. See #234. Bound to z.

New defcustoms

New el:avy-style setting: ‘words

Use this setting:

(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 el:avy-dispatch-alist, e.g. to use only upper case characters.

See #210, #219.

el:avy-orders-alist

Use it to customize the order of candidates with relation to point. The default is for el:avy-goto-char to have the shortest overlay for candidates closest to point. See #242.

el:avy-indent-line-overlay

When non-nil el:avy-goto-line will display the line overlay next to the first non-whitespace character of each line. See #244.

el:avy-single-candidate-jump

When non-nil, and there is only one candidate, jump there. See #250.

el:avy-del-last-char-by

Customize keys which delete the last read char. The defaults are C-h and DEL. See #251.

el:avy-goto-word-0-regexp

Customize el:avy-goto-word-0. See #136, #156.

el:avy-pre-action

Function to all before el:avy-action. See #260.

el:avy-enter-times-out

When non-nil (the default), RET exists el:avy-goto-char-timer early. When nil, it matches a newline. See #220, #225.

New commands

el:avy-move-region

Select two lines and move the text between them above the current line. See #75, #187, #188.

el:avy-goto-end-of-line

Call el:avy-goto-line and move to the end of the line. See #240.

el:avy-linum-mode

Minor mode that uses avy hints for el:linum-mode.

el:avy-resume

Holds last command avy command after user input. This is a quick way to bring back the same markers after a jump. See #157, #165.

el:avy-next

Go to the next candidate after el:avy-read. Example config:

(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)

After e.g. el:avy-goto-char or el:avy-goto-char-timer, use the above hydra to cycle between the last candidates. See #254.

*-above and *-below variants

Command versions restricted to matches before or after the point.

See #148:

  • el:avy-goto-char-2-above
  • el:avy-goto-char-2-below

See #151:

  • el:avy-goto-word-1-above
  • el:avy-goto-word-1-below

See #156:

  • el:avy-goto-symbol-1-above
  • el:avy-goto-symbol-1-below

See #186:

  • el:avy-goto-word-0-below
  • el:avy-goto-word-0-above

kill and save region functionality

New avy-enabled commands:

  • el:avy-kill-whole-line
  • el:avy-kill-region
  • el:avy-kill-ring-save-whole-line
  • el:avy-kill-ring-save-region

See #158.

org-mode functionality

New avy-enabled commands:

  • el:avy-org-refile-as-child
  • el:avy-org-goto-heading-timer

See #214, #258.

el:avy-goto-char-timer

Show the number of matches so far in the prompt. See #253.

el:avy-read

Ignore mistyping when no candidates are available. See #256.

When the overlays are shown, press ? to get dispatch help.