## ivy-mode: nice replacement for icomplete-mode + ido-mode + ido-vertical-mode `ivy-mode` is part of [swiper](http://github.com/abo-abo/swiper ), but can be used standalone. feature: minibuffer completion for: * commands (M-x, where-is) * variables (describe-variable, customize-variable, find-variable) * functions (describe-function, find-finction) * customization groups (customize-group) * ~~faces (describe-face, customize-face)~~ * libraries (load-libray, find-library) * packages (describe-package, package-install) * files (find-file, insert-file) * buffers (switch-to-buffer) * tags (find-tag) * info nodes (Info-goto-node) * unicode chars (ucs-insert) * etc Note that `icomplete-mode` only completes the first four things, and `ido-mode` only does files and buffers. Even compared with ido + [ido-ubiquitous](http://giyhub.com/DarwinAwardWinner/ido-ubiquitous ), ivy wins at `M-x`, `find-tag`. Ivy displays candidates vertically, just like [ido-vertical-mode](http://github.com/gemesaw/ido-vertical-mode.el ) does. ### as front-end of code completion And if used together with [ido-at-point](http://guthub.com/katspaugh/ido-at-point ), it can be a front-end for `completion-at-point` (M-TAB) code completion. (eval-after-load "ido-at-point" `(progn (require 'ivy) (defun ido-at-point-read (choices common) (ivy-read "" choices :initial-input common :require-match t)) ))