#+OPTIONS: toc:nil
* 0.6.0
** Fixes
*** =swiper-avy= should use only the current window
Not all windows. See [[https://github.com/abo-abo/swiper/issues/117][#117]].
*** fix wrap-around for =ivy-next-line=
See [[https://github.com/abo-abo/swiper/issues/118][#118]].
*** =swiper-avy= should do nothing for empty input
See [[https://github.com/abo-abo/avy/issues/50][#50]].
*** =ivy-alt-done= should require TRAMP if necessary
See [[https://github.com/abo-abo/swiper/pull/145][#145]].
*** =swiper-query-replace= shouldn't miss the first occurrence
See [[https://github.com/abo-abo/swiper/pull/144][#144]].
*** =swiper= should not deactivate mark
*** =ivy-mode= should not switch to TRAMP for certain input
See [[https://github.com/abo-abo/swiper/pull/145][#145]].
*** =counsel-find-file= should work better with TRAMP
"/ssh:foo" should not be cut off
See [[https://github.com/abo-abo/swiper/pull/145][#145]].
*** =counsel-find-file= supports Windows drive letters
See [[https://github.com/abo-abo/swiper/pull/155][#155]].
*** =counsel-file-file= should work better with files that contain "~"
See [[https://github.com/abo-abo/swiper/pull/157][#157]].
*** =counsel-M-x= should respect =ivy-format-function=
See [[https://github.com/abo-abo/swiper/pull/150][#150]].
*** =counsel-git-grep= should position better on exit
See [[https://github.com/abo-abo/swiper/pull/153][#153]].
*** =ivy-mode= should re-scale text to minibuffer height
See [[https://github.com/abo-abo/swiper/pull/151][#151]].
*** =counsel-unicode-char= should use action-style call
See [[https://github.com/abo-abo/swiper/pull/160][#160]].
*** =ivy-read= should allow % in prompt string
See [[https://github.com/abo-abo/swiper/pull/171][#171]].
*** =ivy-call= should execute in proper window
See [[https://github.com/abo-abo/swiper/pull/176][#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.
**** Account for =minibuffer-depth-indication-mode=
If you have =minibuffer-depth-indication-mode= on, the minibuffer
prompt will indicate the current depth.
See [[https://github.com/abo-abo/swiper/pull/134][#134]].
**** Add fuzzy matching function
To enable fuzzy matching, set your =ivy-re-builders-alist= accordingly:
#+begin_src elisp
(setq ivy-re-builders-alist
      '((t . ivy--regex-fuzzy)))
#+end_src
See [[https://github.com/abo-abo/swiper/pull/136][#136]].

See also [[https://github.com/abo-abo/swiper/pull/142][#142]] for toggling fuzzy matching with ~C-o m~.
**** =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 [[https://github.com/abo-abo/swiper/pull/166][#166]].
**** Allow to see the candidate index a la =anzu= via =ivy-count-format=
To have this feature, use something like this:
#+begin_src elisp
(setq ivy-count-format "(%d/%d) ")
#+end_src
See [[https://github.com/abo-abo/swiper/pull/167][#167]].

You can also set this to "", if you don't want any count, see [[https://github.com/abo-abo/swiper/pull/188][#188]].
**** Allow to add additional exit points for any command
Example for =ivy-switch-to-buffer=:
#+begin_src elisp
(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")))
#+end_src

After this:

- use ~M-o k~ to kill a buffer
- use ~M-o j~ to 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 [[https://github.com/abo-abo/swiper/pull/164][#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 [[https://github.com/abo-abo/swiper/pull/121][#121]].
**** Handle symbol-at-point better in non-Elisp buffers
See [[https://github.com/abo-abo/swiper/pull/126][#126]].
*** =ivy-switch-buffer=
**** New face =ivy-virtual=
See [[https://github.com/abo-abo/swiper/pull/129][#129]].
**** Deal better with invisible buffers
See [[https://github.com/abo-abo/swiper/pull/135][#135]].
**** Add custom keymap
You can customize =ivy-switch-buffer-map=.

See [[https://github.com/abo-abo/swiper/pull/164][#164]].
**** 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.
**** 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-open= action
- =dired= action

Press ~M-o~ or ~C-o~ to access these actions.
**** 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.
**** Allow to customize the initial input for all commands
Customize =ivy-initial-inputs-alist= for this.
See [[https://github.com/abo-abo/swiper/pull/140][#140]].
**** =ivy-sort-functions-alist= should also examine =this-command=
**** :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:

#+begin_src elisp
(global-set-key (kbd "C-x C-f") 'counsel-find-file)
#+end_src

You can peek at files with ~C-M-n~ and ~C-M-p~.

See [[https://github.com/abo-abo/swiper/issues/122][#122]] and [[https://github.com/abo-abo/swiper/issues/123][#123]].

See [[https://github.com/abo-abo/swiper/pull/152][#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 [[https://github.com/abo-abo/swiper/issues/124][#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 [[https://github.com/abo-abo/swiper/issues/125][#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.

See [[https://github.com/abo-abo/swiper/pull/136][#136]] and [[https://github.com/abo-abo/swiper/pull/138][#138]].

*** =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 [[https://github.com/abo-abo/swiper/pull/151][#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 [[https://github.com/abo-abo/swiper/pull/141][#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=
[[http://oremacs.com/2015/07/09/counsel-rhythmbox/][Control Rhythmbox from Emacs.]]
*** =ivy-dispatching-done=
Select an action for the current candidate and execute it. Bound to ~M-o~.

Some commands that support ~M-o~:

- =counsel-rhythmbox=
- =counsel-describe-function=
- =counsel-describe-variable=
- =ivy-switch-buffer=
- =counsel-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.

See [[https://github.com/abo-abo/swiper/pull/177][#177]] and [[https://github.com/abo-abo/swiper/pull/91][#91]].

*** =counsel-org-tag-agenda=
Forward to =org-agenda-set-tags= with Ivy completion.
See [[https://github.com/abo-abo/swiper/pull/177][#177]].

*** =counsel-ag=
Interactively =ag= using Ivy completion.

*** =counsel-recoll=
Use =recoll= with Ivy completion.
See [[http://oremacs.com/2015/07/27/counsel-recoll/][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 [[https://github.com/abo-abo/swiper/pull/183][#183]].

* 0.7.0
** Fixes
*** Fix :dynamic-collection not being sorted
*** When :initial-input contains a plus, escape it
See [[https://github.com/abo-abo/swiper/issues/195][#195]].
*** Set line-spacing to 0 in the minibuffer
See [[https://github.com/abo-abo/swiper/issues/198][#198]].
*** Enlarge the minibuffer window if the candidate list doesn't fit
See [[https://github.com/abo-abo/swiper/issues/198][#198]] and [[https://github.com/abo-abo/swiper/issues/161][#161]] and [[https://github.com/abo-abo/swiper/issues/220][#220]].
*** Fix minibuffer collapsing to one line
See [[https://github.com/abo-abo/swiper/issues/237][#237]], [[https://github.com/abo-abo/swiper/issues/229][#229]] and [[https://github.com/abo-abo/swiper/issues/77][#77]].
*** Use minibuffer-allow-text-properties
Allows =ivy-read= to return a propertized string.
*** Improve ~C-g~ out of a long-running async process
Use =counsel-delete-process= as =:unwind=.
*** Don't regexp-quote :preselect
See [[https://github.com/abo-abo/swiper/issues/245][#245]].
*** Fix ivy-partial for fuzzy completion
See [[https://github.com/abo-abo/swiper/issues/266][#266]].
*** ivy-resume should pass :caller
See [[https://github.com/abo-abo/swiper/issues/245][#245]].
*** Fix the regression in perfect match logic
See [[https://github.com/abo-abo/swiper/issues/270][#270]].
*** Fix pasting file paths on Windows
*** ~C-j~ should no stop completion for a pasted file path
*** ~C-M-j~ should use =ivy--directory=
When completing file names, expand the file name properly.
See [[https://github.com/abo-abo/swiper/issues/275][#275]].
*** Use a specific blend method for dark themes
See [[https://github.com/abo-abo/swiper/issues/278][#278]].
*** Fix one-off bug in =ivy-scroll-up-command= and =ivy-scroll-down-command=
*** ~M-o~ shouldn't set the action permanently
So now it's possible to e.g. =counsel-describe-function= -> ~M-o d~ ->
=ivy-resume= -> ~M-o o~ -> =ivy-resume= -> ~M-o i~.
*** Fix swiper preselect issue with similar or identical lines
See [[https://github.com/abo-abo/swiper/issues/290][#290]].
*** Make ivy-completing-read handle history as cons
See [[https://github.com/abo-abo/swiper/issues/295][#295]].
*** Perform string-match in the original buffer
The syntax for whitespace, separators etc. is different for modes.  See [[https://github.com/abo-abo/swiper/issues/298][#298]].
** New Features
*** =swiper=
**** Make line numbers into display properties
Each candidate is now a single space plus the original string.  The
display property of the single space holds the line number. This means
that it's no longer possible to match line numbers in queries, which
is a good thing if you're searching for numbers.
**** Extend =swiper-font-lock-ensure=
Add =mu4e-view-mode=, =mu4e-headers-mode=, =help-mode=,
=elfeed-show-mode=, =emms-stream-mode=, =debbugs-gnu-mode=,
=occur-mode=, =occur-edit-mode=, =bongo-mode=, =eww-mode=, =vc-dir-mode=.
**** Add support for =evil-jumper/backward=
See [[https://github.com/abo-abo/swiper/issues/268][#268]].
**** Make compatible with =visual-line-mode=
=swiper= will split the lines when =visual-line-mode= is on.  This is
convenient for small buffers. For large buffers, it can be very slow,
since =visual-line-mode= is slow.
See [[https://github.com/abo-abo/swiper/issues/227][#227]].
**** Add =swiper-toggle-face-matching=
Bound to ~C-c C-f~.
At each start of =swiper=, the face at point will be stored.
Use this command to toggle matching only the candidates with that face.
See [[https://github.com/abo-abo/swiper/issues/288][#288]].
**** =push-mark= only if exited the minibuffer
~C-M-n~ and ~C-M-p~ will no longer push mark and annoy with messages.
**** =ivy-resume= should restore the buffer for =swiper=
See [[https://github.com/abo-abo/swiper/issues/302][#302]].
**** Enable recursive =swiper= calls
While you =swiper= buffer-1, you can switch out of the minibuffer into
buffer-2 and call =swiper= again.  Exiting the second minibuffer will
restore the first minibuffer.

To use this, you need to enable recursive minibuffers.
#+begin_src elisp
(setq enable-recursive-minibuffers t)
#+end_src

It's also useful to indicate the current depth:

#+begin_src elisp
(minibuffer-depth-indicate-mode 1)
#+end_src

See [[https://github.com/abo-abo/swiper/issues/309][#309]].
**** Fix for =twittering-mode=
The =field= text property is now removed before inserting text into
the minibuffer. This fixes the =swiper= problems with
=twittering-mode=. See [[https://github.com/abo-abo/swiper/issues/310][#310]].




*** =ivy=
**** Add manual
In the current state, the manual covers the most basic topics, like
the minibuffer key bindings and the regexp builders.
**** Make <left> and <right> behave as in fundamental-mode
**** Truncate minibuffer prompts longer than window-width
See [[https://github.com/abo-abo/swiper/issues/240][#240]].
**** ~C-M-n~ should not leave the minibuffer
Make sure that the minibuffer window remains selected as long as the
completion hasn't finished.  For example, ~<f1> f~ to call
=counsel-describe-function=, input "forward" and spam ~C-M-n~ to read
the doc for each function that starts with "forward". The =*Help*=
window popup would move the window focus, but this change moves it
back to the minibuffer.
**** Add =flx= sorting
See [[https://github.com/abo-abo/swiper/issues/207][#207]].
Since flx is costly, move the caching to an earlier point. This means
immediate return for when the input hasn't changed, i.e. for ~C-n~ or
~C-p~. When =flx= is installed, and =(eq ivy--regex-function 'ivy--regex-fuzzy)=
for current function (through =ivy-re-builders-alist=), then sort the final candidates with
=ivy--flx-sort=.

In the worst case, when some error pops up, return the same list. In
the best case sort the =cands= that all match =name= by closeness to
=name=.

How to use:
1. Have =flx= installed - =(require 'flx)= should succeed.
2. Configure =ivy-re-builders-alist= appropriately to use =ivy--regex-fuzzy=.

For example:

#+begin_src elisp
(setq ivy-re-builders-alist
      '((t . ivy--regex-fuzzy)))
#+end_src
**** Support hash tables
Since =all-completions= also works for hash tables, no reason not to support them.
**** Improve documentation of =ivy-count-format=
Now possible to set it with Customize.
**** Add =ivy-index-functions-alist=
Customize this to decide how the index, i.e. the currently selected
candidate, is updated with new input.
For example, one strategy is not reset it to 0 after each change.

Another strategy, used for =swiper=, is to try to select the first
appropriate candidate after (inclusive) the first previously selected
candidate. This way, if you're typing something that matches what is
currently selected, the selection won't change.

See [[https://github.com/abo-abo/swiper/issues/253][#253]].
**** Add =ivy-virtual-abbreviate=
The mode of abbreviation for virtual buffer names.
**** Add =ivy-case-fold-search=
Used to override =case-fold-search=. See [[https://github.com/abo-abo/swiper/issues/259][#259]].
**** Add feedback for long-running async processes
Each time 0.5s pass after the last input, if the external process
hasn't finished yet, update minibuffer with the amount of candidates
collected so far. This is useful to see that long running commands
like =counsel-locate= or =counsel-ag= (when in a very large directory)
aren't stuck.
**** Promote =ivy-extra-directories= to defcustom
**** Promote =ivy-sort-function-alist= to defcustom
**** ~M-n~ should prefer url at point to symbol at point
**** ~C-x C-f M-n~ calls =ffap-url-fetcher= when at URL
**** Highlight modified file buffers with =ivy-modified-buffer= face
This new face is blank by default, but you can use e.g.:
#+begin_src elisp
(custom-set-faces
 '(ivy-modified-buffer ((t (:background "#ff7777")))))
#+end_src
**** Work with =enable-recursive-minibuffers=
Store the old =ivy-last= in case =ivy-read= is called while inside the
minibuffer.  Restore it after =ivy-call=.
**** Allow user-specified matched candidate sorting
New defcustom =ivy-sort-matches-functions-alist=.
See [[https://github.com/abo-abo/swiper/issues/269][#269]] [[https://github.com/abo-abo/swiper/issues/265][#265]] [[https://github.com/abo-abo/swiper/issues/213][#213]].

By default, Ivy doesn't sort the matched candidates, they remain in
the same order as in the original collection. This option is the
default, since it's fast and simple.

A small problem with this approach is that we usually want prefix
matches to be displayed first. One solution to this is to input "^" to
see only the prefix matches.

Now, another solution is to can set:
#+begin_src elisp
(setq ivy-sort-matches-functions-alist
      '((t . ivy--prefix-sort)))
#+end_src

Here's another example of using this defcustom:
#+begin_src elisp
(add-to-list
     'ivy-sort-matches-functions-alist
     '(read-file-name-internal . ivy--sort-files-by-date))
#+end_src

After this, during file name completion, most recently changed files
will be ahead.
**** =ivy-display-style=
Adds fancy highlighting to the minibuffer.
See [[https://github.com/abo-abo/swiper/issues/212][#212]], [[https://github.com/abo-abo/swiper/issues/217][#217]], .
*** =ivy-hydra=
**** Bind ~t~ to =toggle-truncate-lines=
See [[https://github.com/abo-abo/swiper/issues/214][#214]].
**** Bind ~a~ to =ivy-read-action=
*** =ivy-switch-buffer=
**** Make ~M-o r~ rename the buffer instead of switching.
See [[https://github.com/abo-abo/swiper/issues/233][#233]].
*** =counsel-locate=
**** Allow customizing locate options
See =counsel-locate-options=.
The current setting is:
#+begin_src elisp
(setq counsel-locate-options '("-i" "--regex"))
#+end_src
**** Support OSX
Use =open= instead of =xdg-open=.  Modify =counsel-locate-options= for
OSX, since there =locate= doesn't support =--regex=.
**** Use single quotes for the regex
See [[https://github.com/abo-abo/swiper/issues/194][#194]].
**** Add initial-input argument
See [[https://github.com/abo-abo/swiper/issues/289][#289]].
*** =counsel-org-tag=
**** Now works in agenda
See [[https://github.com/abo-abo/swiper/issues/200][#200]].
*** =counsel-unicode-char=
**** Add own history
*** =counsel-M-x=
**** Add "definition" action
Use ~M-o d~ to jump to definition.
**** Show =current-prefix-arg= in the prompt
See [[https://github.com/abo-abo/swiper/issues/287][#287]].
*** =counsel-find-file=
**** Input '/sudo::' goes to current directory instead of root's home
See [[https://github.com/abo-abo/swiper/issues/283][#283]].
**** Fix directory validity check
See [[https://github.com/abo-abo/swiper/issues/283][#283]] [[https://github.com/abo-abo/swiper/issues/284][#284]].
**** Improve TRAMP support
Selecting items after ~//~ now works properly.
*** =counsel-git-grep=
**** Use prefix arg to specify the shell command.
Remember to use ~M-i~ to insert the current candidate into the
minibuffer.

See [[https://github.com/abo-abo/swiper/issues/244][#244]].
**** Allow =counsel-git-grep= -> =ivy-occur= -> =wgrep=
Using ~C-c C-o~ (=ivy-occur=) while in =counsel-git-grep= will produce
a =wgrep=-compatible buffer.
**** =ivy-occur= gives full candidates
This means that the =" | head -n 200"= speed-up isn't used and full
candidates are returned.
*** =counsel--find-symbol=
**** Allow to jump back with pop-tag-mark
Using ~C-.~ in:

- =counsel-describe-function=
- =counsel-describe-variable=
- =counsel-load-library=

will change the current buffer. The buffer and point can be restored
with ~M-*~ (=pop-tag-mark=).

I also recommend this binding:

#+begin_src elisp
(global-set-key (kbd "M-,") 'pop-tag-mark)
#+end_src
**** Resolve the name clash better
When the symbol is both bound and fbound, prefer the fbound one,
unless the =:caller= is =counsel-describe-variable=.
*** =counsel-ag=
**** Add =initial-directory=
Support alternative initial directory which helps other packages call
this function with their unique starting directory.
**** Fix on Windows
Using the "--vimgrep" argument improves things.
** New Commands
*** =ivy-occur=
Bound to ~C-c C-o~. Store the current completion session to its own
buffer.  You can have an unlimited amount of these buffers.
*** =ivy-avy=
Bound to ~C-'~.

Speeds up selecting a candidate that's currently visible in the minibuffer.
*** =ivy-kill-ring-save=
Bound to ~M-w~.

When the region is active, call =kill-ring-save=.  Otherwise, store
all selected candidates to the kill ring.
*** =ivy-dispatching-call=
Bound to ~C-M-o~.

This is a non-exiting version of ~M-o~ (=ivy-dispatching-done=).
*** =ivy-read-action=
Bound to ~C-M-a~. Select the current action. Don't call it yet.
*** =swiper-multi=
Use =swiper= in multiple buffers.
See [[https://github.com/abo-abo/swiper/issues/182][#182]].

Basic usage tips for selecting multiple buffers:

- Use ~C-M-m~ (=ivy-call=) to add or remove one more buffer without exiting.
- Use ~C-m~ (=ivy-done=) to add one last buffer.
- Or use ~C-M-j~ (=ivy-immediate-done=) to finish without adding more buffers.
- Hold ~C-M-n~ (=ivy-next-line-and-call=) to add a lot of buffers at once.
*** =swiper-mc=
Open multiple cursors at all selected candidates.
*** =swiper-all=
New command to launch =swiper= for all open file buffers.  Note that
this can be excruciatingly slow if you don't clean up your buffer list
often.
*** =counsel-grep=
This is essentially =swiper= for huge files. It's not as smooth as
=swiper= for small files, but has a faster startup and faster matching
for files that measure in megabytes.
*** =counsel-git-grep-query-replace=
Bound to ~M-q~. Perform =query-replace= on all matches in all buffers.
*** =counsel-jedi=
Complete Python symbols using Jedi.
*** =counsel-cl=
Complete Common Lisp symbols using SLIME.
*** =counsel-yank-pop=
Give completion for inserting from the kill ring.
See =counsel-yank-pop-truncate= defcustom and [[https://github.com/abo-abo/swiper/issues/218][#218]].
