There are several packages that offer fuzzy completion of one kind or another. I imagine that Helm does, for example (since you mention it).
If you use library Icicles then you can choose (on the fly) among several fuzzy-completion methods - more choice than I've seen offered elsewhere. (I am not particularly a fan of fuzzy completion, myself, but I offer it.)
Icicles completion (hence fuzzy completion, if you choose that) applies pretty much everywhere, but there are not a whole lot of Icicles-specific code-completion features. This page of the Icicles doc speaks about such buffer-text completion.
With Icicles, using Stefan's example of completing (wi-sy
in Emacs Lisp mode:
With Icicles vanilla
completion (what Emacs provides, respecting completion-styles
), you get the same symbols that Stefan mentions.
With Icicles Swank fuzzy symbol completion (from library el-swank-fuzzy.el
) as the current TAB-completion method, you get these completion candidates:
window-system
with-syntax-table
window-system-for-display
widget-coding-system-action
widget-symbol-prompt-internal
widget-coding-system-prompt-value
with-swfy-struct
widget-specify-doc
with-swfy-timedout
widget-specify-field
widget-specify-active
widget-specify-button
widget-specify-insert
widget-specify-sample
widget-specify-secret
widget-specify-inactive
window-safely-shrinkable-p
widget-types-copy
window-resize-apply
window--resize-root-window-vertically
window-display-table
window--display-buffer
window--resize-apply-p
window-resize-apply-total
widgetp-display-Completions
window-redisplay-end-trigger
with-displayed-buffer-window
widget-visibility-value-create
widget-emacs-library-link-action
widget-editable-list-entry-create
widget-emacs-commentary-link-action
The first 3 candidates are, again, those that Stefan mentions.
With plain fuzzy-match completion (library fuzzy-match.el
), the only candidate is with-syntax-table
.
With Icicles scatter fuzzy completion, you get all of the candidates that Swank fuzzy completion offers, plus the following:
ange-ftp-wait-not-busy
dired-into-dir-with-symlinks
ediff-choose-window-setup-function-automatically
ediff-make-wide-display
ediff-toggle-wide-display
ediff-window-display-p
ediff-window-ok-for-display
ediff-with-syntax-table
find-new-buffer-file-coding-system
gnus-frame-or-window-display-name
help-window-display-message
icicle-choose-window-for-buffer-display
revert-buffer-with-coding-system
set-w32-system-coding-system
set-window-display-table
set-window-redisplay-end-trigger
shell-write-history-on-exit
split-window-sensibly
tree-widget--locate-sub-directory
w32-find-file-not-found-set-buffer-file-coding-system
w32-initialize-window-system
- With Icicles Levenshtein (1) fuzzy substring completion (Levenshtein distance of 1), you get only these completions:
help-follow-symbol
message-check-news-syntax
w32-initialize-window-system window-system
window-system-for-display
With a Levenshtein distance of 2 instead of 1, there are more than 300 completion candidates.
With strict Levenshtein (1 or 2) completion there are no candidates. Likewise, for Icicles Jaro-Winkler fuzzy completion.