emacs-devel
[Top][All Lists]
Advanced

[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 19:50:34 +0100
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

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

>> Where can I learn about that completion-styles API?
>
> In the emacs manual, but a lot in lisp/minibuffer.el.  Look at how the
> other styles are implemented.  Also ask Stefan on this list.

Thanks.

>>> 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.
>
> I wasn't talking about ído's flex, which is named
> 'ido-enable-flex-matching'.  So we don't lose ourselves, when I say
> 'flex' I am talking about:
>
>     (setq completion-styles '(flex))
>     (setq completion-category-defaults nil )

I'll try to experiment with emacs -Q and those settings as time permits.

>> 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 don't use the "cool kids" stuff, but I do use some completion boxes in
> some other applications with flex matching.  I don't see any big
> difference between 'flex' and those.

The likely reason is that those other applications use flex matching or
something that approximates it. On non-technical applications flx can be
problematic because using it without some knowledge about how it works
can bring puzzling results.

>> If you need autocorrection with flx, you are using it wrong.
>
> I don't use flx.  I gather it doesn't support autocorrection and neither
> does 'flex'.  Great.  Or not.  Autocorrection is an advanced feature in
> many systems, most prominently Google's.  The point there, I think, is
> precisely that you CAN use it wrong, as humans frequently do.

Autocorrection makes little sense when 1) your typical input is tiny
(less that 6 characters) and 2) effective use of the completion style
depends on *not* using words.

[snip]

> I'm looking for your feedback in term of these kinds of statements
>
>    "When I use 'flx' on the set X it gives me Y but 'flex' on the same
>    set gives me Z"
>
> If we find 'flx's result is more compelling, we can take steps to
> approximate 'flex' to it.

I don't think that's a good idea. Many users are utterly confused by flx
but are quite happy with flex. I'm more interested on adding flx as a
completion style (hence my previous question about the completion-styles
API).

>> 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
>
> Yes, but what kind of typos?  If I type "complwt", will it ever bring
> "completion" as a match?  'flex' won't.

Neither flx, because "completion" has no `w'. I already mentiond why flx
users do not care much about autocorrection. Now I'll add that flx is
not particularly good (read: superior to other methods) at completing
single words. It shines at completing strings made of multiple words,
tough, as your typical Elisp function/variable name, C++/Java qualified
method, pathname, etc.




reply via email to

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