From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED.blaine.gmane.org!not-for-mail From: =?utf-8?B?Sm/Do28gVMOhdm9yYQ==?= Newsgroups: gmane.emacs.devel Subject: Re: Why fido, icycles, ido, icomplete Date: Thu, 07 Nov 2019 10:09:15 +0000 Message-ID: <874kzg3sms.fsf@gmail.com> 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> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Injection-Info: blaine.gmane.org; posting-host="blaine.gmane.org:195.159.176.226"; logging-data="197991"; mail-complaints-to="usenet@blaine.gmane.org" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: =?utf-8?Q?=C3=93scar?= Fuentes Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Nov 07 11:09:41 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 1iSejV-000pOz-JI for ged-emacs-devel@m.gmane.org; Thu, 07 Nov 2019 11:09:41 +0100 Original-Received: from localhost ([::1]:40378 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iSejU-0003HB-Dj for ged-emacs-devel@m.gmane.org; Thu, 07 Nov 2019 05:09:40 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:34241) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iSejO-0003H2-64 for emacs-devel@gnu.org; Thu, 07 Nov 2019 05:09:35 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iSejN-000247-0W for emacs-devel@gnu.org; Thu, 07 Nov 2019 05:09:34 -0500 Original-Received: from mail-wm1-x333.google.com ([2a00:1450:4864:20::333]:33057) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1iSejM-00020T-QC for emacs-devel@gnu.org; Thu, 07 Nov 2019 05:09:32 -0500 Original-Received: by mail-wm1-x333.google.com with SMTP id a17so3706187wmb.0 for ; Thu, 07 Nov 2019 02:09:32 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-transfer-encoding; bh=BulbOKD7GGroJA9BsJzkA3DTaF7enKWMp5w4YZaMQYM=; b=Uw1fM/K3QzAzLE6G4MFuiZ4PXuzZ4ynLJMzqw6Ug/WSaU+vgnAIkVNjUCuoowevi7s 6ay+mffItbTeMKrETDhbdZt2qr7L67AjScfuk/aM2b71gbRE5eykfijlPaxtzqe637St lAUWVaTJBfnvsIRTk2qLb9pMK1iMeA1nGFI4J9qSWjTbcwO8NxTME4YXJ98ieskY8XcX op3lw1vZsBucHZ7u/JXjbXX+PhqDs4lIhWCDe/9QutEQW/kB0+4SCtls7PiF/x/Cw3eC rYpbA1xPx9U9+fIJPn4jxo7AZ1HQ9se2jwuM9otbXiU9NZyF/Lkm1HvI4v3utoZAn2lw QU3Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version:content-transfer-encoding; bh=BulbOKD7GGroJA9BsJzkA3DTaF7enKWMp5w4YZaMQYM=; b=udfI+tcBrsFU1tRHMuJOBxHTv0E9Gxr5GeSwWbd+ZfG/qz5YLbN/mSpJdyn99pnyYX Doy+d7MhvGB97vKjn409KRzYyeus4yeQaot9i8pXU9gx/y24MZNge36r5WDdmEHS7fY4 eTE0+jg/WIvQhucoN5n55Ed6PyHuCocttpPFwnl1Rey5LB80vzEzL0PwWTGk9ncBp3zh Z8PKnEI3WBMvO8zgRaloLcpadvcX7qL9Eg7rpoKJibiZDUAzncx77Re9VDXL5QaDLTiO /2SP60vuF4iUuf3xcjyc5seZIvdov9GaRnBZqGDNPV3hQU9qo5qSFqLb+M6bwK4UP0nU JfUg== X-Gm-Message-State: APjAAAVArTCW7y+y/5KQeHcq7jsrSS5zVUgYznZwT0KY8GTgvbGYdl/A tUHF/pFz+sxwFGxYqFwzPmnsKLMl X-Google-Smtp-Source: APXvYqyV1azAJOXiUDHQuBAFW35Ci/Hds49tcoNMLlI+8HsZ6gik/l6ebH4RYyzzA5h0nAuXbdtTtA== X-Received: by 2002:a1c:9a88:: with SMTP id c130mr2104231wme.164.1573121371070; Thu, 07 Nov 2019 02:09:31 -0800 (PST) Original-Received: from lolita.yourcompany.com ([2001:818:d820:9500:1ebb:afd8:ab26:f0f6]) by smtp.gmail.com with ESMTPSA id l4sm2741135wrf.46.2019.11.07.02.09.29 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 07 Nov 2019 02:09:30 -0800 (PST) In-Reply-To: <87bltoebpe.fsf@telefonica.net> (=?utf-8?Q?=22=C3=93scar?= Fuentes"'s message of "Thu, 07 Nov 2019 02:07:09 +0100") X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::333 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:241909 Archived-At: =C3=93scar Fuentes writes: > Jo=C3=A3o T=C3=A1vora writes: >> 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? 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. >> 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 =C3=ADdo'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 ) When I say 'flx', I am talking about "your" system (or the little I know about it.) > 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. >> 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. 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. Your description of your usage of flx matches exactly my usage of 'flex'. However, the 'flex' scoring implementation is about 20 lines in actual implementation, is controlled by a single variable (flex-score-match-tightness). 'flx' seems like it's much much larger in length, and considerably more sophisticated (I read warm-up cache, heatmap, special-cases for certain characters, etc.). 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. > 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. Jo=C3=A3o