[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Why fido, icycles, ido, icomplete

From: Óscar Fuentes
Subject: Re: Why fido, icycles, ido, icomplete
Date: Thu, 07 Nov 2019 02:07:09 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

João Távora <address@hidden> writes:

> Óscar Fuentes <address@hidden> writes:
>> João Távora <address@hidden> writes:
>>> It sounds like you're an ido-mode fan, so please try out
>>> fido-mode and tell me what you think is missing from it. I
>>> know a lot is, and I want to improve it.
>> Has fido-mode support for flx-ido? Can I plug it in? Any other
>> completion system that I know on Emacs is unbearably dumb IMAO.
> I don't know flx.  According to its github page flx is a "matching
> engine", what in Emacs is a "completion style", I believe.  Right?  A
> way to match a pattern to a universe/set of possible strings and to
> return a (possibly propertized/annotated) subset of those strings.

It takes a set of candidates and a string as inputs. The algorithm
associates a score to each candidate based on the string and outputs a
list of matching candidates sorted by the score.

> If so, and if flx adheres to the completion-styles API, then it's very
> easy to plug in.  If it doesn't, maybe the author can find a way to
> adapt it, just like Thierry did recently in Helm.

Where can I learn about that completion-styles API?

> You can also try 'flex' and tell me what you think you are missing from
> flx.  I don't find flex "unbearably dumb" :-)

I have experience with ido's flex and can't compare. flx requires some
training but then it is extremely effective. I no longer bother to
memorize most keyboard shorcuts, because by just remembering *some* part
of the command's name it can be easily invoked through M-x, often with
less keypresses (and with much less chording). It is quite effective at
discovering new commands, once you have an idea of the naming convention
that a package uses. Last, but not least, it is the matching system used
by some of the "cool kids" that competes with Emacs (Sublime Text, to
name one).

> I like to type mispelled fragments of words I vaguely remember and it
> almost always pops my intended thing to the top of the list.  But it
> doesn't autocorrect like google, for example, that's much harder.  (does
> flx?)

If you need autocorrection with flx, you are using it wrong. For
instance, with M-x and 20000+ candidates, four letters are almost always
enough to put the target on the first 10 candidates. Said that, flx is
somewhat forgiving about typos but explaining the reason without first
explaining how the algorithm works is difficult.

The weak point of flx is that it can be a bit slow. The author put a lot
of effort on optimizations and it works reasonably well by using caching
techniques, but the first invocation takes a bit too long even on fast
machines and the cache uses lots of memory. Implementing the algorithm
in C is on my to-do list. Then it could be used even for incremental
search on a buffer.

reply via email to

[Prev in Thread] Current Thread [Next in Thread]