An Emacs front-end for fzf.
fzf.el can be installed through MELPA.
fzf.el comes with some example commands to try out
M-x fzfM-x fzf-directoryM-x fzf-switch-bufferM-x fzf-find-fileM-x fzf-find-file-in-dirM-x fzf-gitM-x fzf-git-filesM-x fzf-hgM-x fzf-projectileM-x fzf-git-grepM-x fzf-recentfM-x fzf-grep
But the real action is writing your own.
fzf.el exposes three functions:
fzf-with-entries (entries action &optional directory): run fzf, passing in an elisp list and running the function action with the user's selected resultsfzf-with-command (command action &optional directory): run a shell command and directly pass to fzf. An optimization on top offzf-with-entriesso that the output does not have to be stored in emacs before sending to fzf anyway.
Using these functions, it's easy to define your own commands that use fzf:
(defun fzf-example ()
(fzf-with-entries
(list "a" "b" "c")
'print))Or more exciting:
(defun fzf-find-file (&optional directory)
(interactive)
(let ((d (fzf/resolve-directory directory)))
(fzf
(lambda (x)
(let ((f (expand-file-name x d)))
(when (file-exists-p f)
(find-file f))))
d)))GPL3
