swiper 0.6.0
0.6.0
Fixes
swiper-avy should use only the current window
Not all windows. See #117.
fix wrap-around for ivy-next-line
See #118.
swiper-avy should do nothing for empty input
See #50.
ivy-alt-done should require TRAMP if necessary
See #145.
swiper-query-replace shouldn't miss the first occurrence
See #144.
swiper should not deactivate mark
ivy-mode should not switch to TRAMP for certain input
See #145.
counsel-find-file should work better with TRAMP
"/ssh:foo" should not be cut off
See #145.
counsel-find-file supports Windows drive letters
See #155.
counsel-file-file should work better with files that contain "~"
See #157.
counsel-M-x should respect ivy-format-function
See #150.
counsel-git-grep should position better on exit
See #153.
ivy-mode should re-scale text to minibuffer height
See #151.
counsel-unicode-char should use action-style call
See #160.
ivy-read should allow % in prompt string
See #171.
ivy-call should execute in proper window
See #176.
New Features
ivy-mode
- Open an Info file on the file system
When in Info-mode, press g and select either "(./)" or "(../)" to
switch to file name completion. That file will be opened with Info.
2. Account for minibuffer-depth-indication-mode
If you have minibuffer-depth-indication-mode on, the minibuffer
prompt will indicate the current depth.
See #134.
3. Add fuzzy matching function
To enable fuzzy matching, set your ivy-re-builders-alist accordingly:
(setq ivy-re-builders-alist
'((t . ivy--regex-fuzzy)))
See #136.
See also #142 for toggling fuzzy matching with C-o m.
4. case-fold-search optimization
Bind case-fold-search to t when the input is all lower-case:
- input "the" matches both "the" and "The".
- input "The" matches only "The".
See #166.
5. Allow to see the candidate index a la anzu via ivy-count-format
To have this feature, use something like this:
(setq ivy-count-format "(%d/%d) ")
See #167.
You can also set this to nil, if you don't want any count, see #188.
6. Allow to add additional exit points for any command
Example for ivy-switch-to-buffer:
(ivy-set-actions
'ivy-switch-buffer
'(("k"
(lambda (x)
(kill-buffer x)
(ivy--reset-state ivy-last))
"kill")
("j"
ivy--switch-buffer-other-window-action
"other")))
After this:
- use
M-o kto kill a buffer - use
M-o jto switch to a buffer in other window
You can always use M-o o to access the default action. When there is
only one action, M-o does the same as C-m.
See #164.
counsel-describe-function and counsel-decribe-variable
- Add a binding to look up the symbol in info
Press C-, to look up the symbol in info, instead of the default
describe action.
See #121.
2. Handle symbol-at-point better in non-Elisp buffers
See #126.
ivy-switch-buffer
- New face
ivy-virtual
See #129.
2. Deal better with invisible buffers
See #135.
3. Add custom keymap
You can customize ivy-switch-buffer-map.
See #164.
4. Add extra actions
Add a kill-buffer action, and switch-to-buffer-other-window action.
counsel-git-grep
- Add Async
Make it fully async: the process git grep will be killed and
restarted on new input. This results in almost no keyboard delay.
2. Own history variable
swiper
- Own history variable
Having own history variable allows to get more use of M-p, M-n and C-r.
counsel-el
- Switch to action-style call
This allows to make use of C-M-n and C-M-p.
counsel-locate
- Add Async
- Add extra actions
In addition to the default action of opening a file add:
xdg-openactiondiredaction
Press M-o or C-o to access these actions.
3. Add own history
API
- Add :matcher
A matcher is a function that accepts a regexp and a list of candidates
and returns the filtered list of candidates.
The default matcher is basically cl-remove-if-not + string-match.
If you'd like to customize this, pass your own matcher.
See counsel-git-grep-matcher for an example.
2. Allow to customize the initial input for all commands
Customize ivy-initial-inputs-alist for this.
See #140.
3. ivy-sort-functions-alist should also examine this-command
4. :dynamic-collection is now a boolean
Pass the collection function as the second var instead.
New Commands
ivy-call
Execute the current action for the current candidate without exiting
the minibuffer. Bound to C-M-m or M-RET or C-o g.
counsel-find-file
Forward to find-file with Ivy completion.
ivy-next-line-and-call as well as ivy-resume should work for this command.
The variable counsel-find-file-ignore-regexp allows to ignore
certain files, like dot files. Input a leading dot to see all files.
The variable counsel-find-file-at-point allows to automatically use
ffap. You also can do it manually with M-n when the point is on a file name.
The variable counsel-find-file-map allows to customize the
minibuffer key bindings for this command.
Recommended binding:
(global-set-key (kbd "C-x C-f") 'counsel-find-file)
You can peek at files with C-M-n and C-M-p.
See #152 about M-n, M-p and M-i switching directories when necessary.
ivy-recentf
Find a file on recentf-list.
Note that if your set ivy-use-virtual-buffers, recentf-list is
merged into candidates list for ivy-switch-buffer. But if you want
it separately, you can use this command.
See #124.
ivy-yank-word
Add word at point to minibuffer input.
This is similar to what C-w does for isearch. However it's bound
to M-j instead of C-w, since C-w is bound to kill-region - a
useful command.
See #125.
counsel-M-x
Forward to execute-extended-command with Ivy completion.
The candidate list will also display the key binding for each bound command.
This command will piggyback on smex for sorting, if smex is installed.
Use counsel-M-x-initial-input to customize the initial input for
this command. By default, it's "^" - the regex character that
indicates beginning of string. This results in much faster matching,
since you usually type the command name from the start.
hydra-ivy
Press C-o to toggle the Hydra for Ivy.
It gives access to shorter bindings and many customizable options.
Use C-o > to grow the minibuffer.
Use C-o < to shrink the minibuffer.
See #151.
ivy-toggle-calling
Toggle executing the current action each time a new candidate is selected.
This command is bound to C-o c.
To explain how this is useful: C-M-m C-M-f C-M-f C-M-f is equivalent to C-o cjjj.
ivy-insert-current
Inserts the current candidate into the minibuffer.
Press M-i if you want something close to the current candidate. You
can follow up with an edit and select.
I find this very useful when creating new files with a similar name to
the existing file: C-x C-f M-i + a bit of editing is very fast.
See #141.
counsel-load-theme
Forward to load-theme with Ivy completion. Allows to rapidly try themes (e.g. with C-M-n).
ivy-reverse-i-search
Allow to recursively match history with C-r.
I like this command from bash shell. The usual way to search through
history is with M-p and M-n. Using ivy-reverse-i-search will
open a recursive completion session with the current history as the
candidates.
counsel-rhythmbox
ivy-dispatching-done
Select an action for the current candidate and execute it. Bound to M-o.
Some commands that support M-o:
counsel-rhythmboxcounsel-describe-functioncounsel-describe-variableivy-switch-buffercounsel-locate
counsel-org-tag
Forward to org-set-tags with Ivy completion.
Selecting any tag each time will toggle it on/off.
The current list of selected tags will be displayed in the prompt.
counsel-org-tag-agenda
Forward to org-agenda-set-tags with Ivy completion.
See #177.
counsel-ag
Interactively ag using Ivy completion.
counsel-recoll
Use recoll with Ivy completion.
See Using Recoll desktop search database with Emacs.
Install recoll with sudo apt-get install recoll.
swiper-from-isearch
Start swiper from the current isearch input.
ivy-immediate-done
Use this command to exit the minibuffer choosing not the current
candidate, but the current text. Bound to C-M-j or C-u C-j.
See #183.