From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?Q?=C3=93scar_Fuentes?= Newsgroups: gmane.emacs.devel Subject: Re: Why fido, icycles, ido, icomplete Date: Thu, 07 Nov 2019 19:50:34 +0100 Message-ID: <87sgmzcyh1.fsf@telefonica.net> References: <20191106212018.cnddqzlo5rpdhi6s.ref@Ergus> <20191106212018.cnddqzlo5rpdhi6s@Ergus> <877e4c1x3r.fsf@gmail.com> <87o8xoeik4.fsf@telefonica.net> <87k18ceh8w.fsf@telefonica.net> <87a7984j4p.fsf@gmail.com> <87bltoebpe.fsf@telefonica.net> <874kzg3sms.fsf@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="50160"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 07 19:51:56 2019 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([209.51.188.17]) by blaine.gmane.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.89) (envelope-from ) id 1iSmss-000CqB-Uq for ged-emacs-devel@m.gmane.org; Thu, 07 Nov 2019 19:51:55 +0100 Original-Received: from localhost ([::1]:47284 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iSmsr-0000bA-M2 for ged-emacs-devel@m.gmane.org; Thu, 07 Nov 2019 13:51:53 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:39523) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iSmrs-0000Ey-V3 for emacs-devel@gnu.org; Thu, 07 Nov 2019 13:50:54 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iSmrr-00013h-O1 for emacs-devel@gnu.org; Thu, 07 Nov 2019 13:50:52 -0500 Original-Received: from 195-159-176-226.customer.powertech.no ([195.159.176.226]:40988 helo=blaine.gmane.org) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1iSmrr-00011V-Gp for emacs-devel@gnu.org; Thu, 07 Nov 2019 13:50:51 -0500 Original-Received: from list by blaine.gmane.org with local (Exim 4.89) (envelope-from ) id 1iSmrj-000BV8-9n for emacs-devel@gnu.org; Thu, 07 Nov 2019 19:50:43 +0100 X-Injected-Via-Gmane: http://gmane.org/ Cancel-Lock: sha1:OJYGAEUBMrPNnznm5Ikgzkj+fSU= X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 195.159.176.226 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:241951 Archived-At: João Távora 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.