unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: "João Távora" <joaotavora@gmail.com>
To: "Óscar Fuentes" <ofv@wanadoo.es>
Cc: emacs-devel@gnu.org
Subject: Re: Why fido, icycles, ido, icomplete
Date: Thu, 07 Nov 2019 10:09:15 +0000	[thread overview]
Message-ID: <874kzg3sms.fsf@gmail.com> (raw)
In-Reply-To: <87bltoebpe.fsf@telefonica.net> ("Óscar Fuentes"'s message of "Thu, 07 Nov 2019 02:07:09 +0100")

Óscar Fuentes <ofv@wanadoo.es> writes:

> João Távora <joaotavora@gmail.com> 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 í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 )

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ão



  parent reply	other threads:[~2019-11-07 10:09 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20191106212018.cnddqzlo5rpdhi6s.ref@Ergus>
2019-11-06 21:20 ` Why fido, icycles, ido, icomplete Ergus
2019-11-06 21:30   ` Daniele Nicolodi
2019-11-06 22:27     ` Ergus
2019-11-06 22:03   ` João Távora
2019-11-06 22:39     ` Óscar Fuentes
2019-11-06 22:57       ` João Távora
2019-11-06 23:07         ` Óscar Fuentes
2019-11-07  0:36           ` João Távora
2019-11-07  1:07             ` Óscar Fuentes
2019-11-07  1:21               ` Ergus
2019-11-07  1:51                 ` Óscar Fuentes
2019-11-07 10:09               ` João Távora [this message]
2019-11-07 18:50                 ` Óscar Fuentes
2019-11-06 23:21     ` Ergus
2019-11-06 23:59       ` Óscar Fuentes
2019-11-07  0:47         ` Ergus
2019-11-07  2:20           ` Óscar Fuentes
2019-11-07  4:59             ` Ergus
2019-11-07 18:26               ` Óscar Fuentes
2019-11-07 14:09             ` Stefan Monnier
2019-11-07 20:35               ` Óscar Fuentes
2019-11-07 21:11                 ` Stefan Monnier
2019-11-07 22:18                   ` Óscar Fuentes
2019-11-07 22:30                     ` Stefan Monnier
2019-11-07 22:34                     ` João Távora
2019-11-07  0:27       ` João Távora
2019-11-07  1:09         ` Ergus
2019-11-07 10:39           ` João Távora
2019-11-07 15:00             ` Ergus
2019-11-08 17:54     ` Filipp Gunbin
2019-11-08 18:10       ` Óscar Fuentes
2019-11-08 18:45       ` Nicolas Semrau
2019-11-08 19:12       ` Eli Zaretskii
2019-11-08 21:31         ` Juanma Barranquero
2019-11-08 22:54           ` João Távora
2019-11-08 23:11             ` Ergus

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=874kzg3sms.fsf@gmail.com \
    --to=joaotavora@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=ofv@wanadoo.es \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).