flx

Homepage: https://github.com/lewang/flx

Author: Le Wang

Updated:

Summary

Fuzzy matching with good sorting

Commentary

This package provides fuzzy completion matching with good sorting.

The sorting algorithm is a balance between word beginnings
(abbreviation) and contiguous matches (substring).

The longer the substring match, the higher it scores.  This maps
well to how we think about matching.

In general, it's better form queries with only lowercase characters
so the sorting algorithm can do something smart.

Implementation notes

Use defsubst instead of defun.

* Using bitmaps to check for matches worked out to be SLOWER than
  just scanning the string and using `flx-get-matches'.

* Consing causes GC, which can often slowdown Emacs more than the
  benefits of an optimization.

Acknowledgments

Scott Frazer's blog entry http://scottfrazersblog.blogspot.com.au/2009/12/emacs-better-ido-flex-matching.html
provided a lot of inspiration.
ido-hacks was helpful for ido optimization.

Dependencies

Reverse dependencies