From: "João Távora" <joaotavora@gmail.com>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: Stefan Monnier <monnier@iro.umontreal.ca>,
emacs-devel <emacs-devel@gnu.org>
Subject: Re: [Emacs-diffs] master b0e318d 2/2: Score flex-style completions according to match tightness
Date: Sun, 17 Mar 2019 21:46:00 +0000 [thread overview]
Message-ID: <CALDnm53WS=T4A1x-sMAwiEf3xYwza1v79YQ=nvp17o9c=VvpAw@mail.gmail.com> (raw)
In-Reply-To: <4f4e9ccd-b152-2b37-cad2-6c96b0a64d84@yandex.ru>
On Sun, Mar 17, 2019 at 8:32 PM Dmitry Gutov <dgutov@yandex.ru> wrote:
> I like for it to be clear what is affected by a variable, and what does
> not. Both from its name and its docstring.
Well, for now _nothing_ is affected by that variable. Let's change the
name when that changes.
> "Slow" had been my impression with flx (the third-party package), but
> didn't it come from scoring rather than matching?
No idea. The slow in flex almost surely _doesn't_ come from the scoring.
> As long as we're using the same approach for constructing the matching
> regexp as ido-flex does, speed should be okay for most uses.
I haven't checked. But I remember either you or Stefan saying that it uses
a regexp similar to pcm's.
> Another thing I'd like to note: with flex completion, RET doesn't select
> the current candidate anymore (working as intended, of course). But it's
> a bit disorienting.
In what situation exactly? Emacs -Q + (setq completion-styles '(flex)) + what?
> > I wonder
> > if ditching pcm's regexp based approach and coding something by
> > hand (perhaps in C) would be faster. I haven't done any
> > measurements but the thing feels slow to me: so I wish more
> > people could experiment with it (and with company, too)
>
> ...although it does feel a bit slower than the prefix matching. Maybe
> that's just to be expected.
You're right, more or less, at least judging from some benchmarks:
(benchmark-run-compiled 100
(let ((completion-styles '(flex)))
(completion-all-completions "kill" obarray nil 0))) ; => 4.76s
(benchmark-run-compiled 100
(let ((completion-styles '(basic)))
(completion-all-completions "kill" obarray nil 0))) ; => 3.7s
... and the first returns a much larger list.
I was expecting to see much larger differences, though, since my
icomplete and company-based experience is really sluggish. But
I wasn't using these much for the default completion style anyway.
Or maybe the sluggishness is coming from somewhere else.
Anyway, as I predicted, most of the work is the matching in
completion-pcm--all-completions. I'll try to hack something
there when the pattern has some simple flex-like form.
João
next prev parent reply other threads:[~2019-03-17 21:46 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190213212413.868.40960@vcs0.savannah.gnu.org>
[not found] ` <20190213212414.D6F4C209C6@vcs0.savannah.gnu.org>
2019-02-14 12:38 ` master e4896fc 1/2: Add a new 'flex' completion style Robert Pluim
2019-02-14 13:50 ` João Távora
2019-02-14 14:37 ` Eli Zaretskii
2019-02-14 14:40 ` João Távora
2019-02-14 14:47 ` Robert Pluim
2019-02-14 14:50 ` João Távora
2019-02-14 15:12 ` Robert Pluim
2019-02-14 15:22 ` Drew Adams
2019-02-14 14:29 ` Eli Zaretskii
2019-02-14 14:39 ` João Távora
[not found] ` <20190213212415.148B9209D7@vcs0.savannah.gnu.org>
2019-03-16 1:13 ` [Emacs-diffs] master b0e318d 2/2: Score flex-style completions according to match tightness Dmitry Gutov
2019-03-16 13:02 ` João Távora
2019-03-16 13:19 ` Stefan Monnier
2019-03-16 14:25 ` João Távora
2019-03-17 18:06 ` Dmitry Gutov
2019-03-17 19:22 ` João Távora
2019-03-17 20:32 ` Dmitry Gutov
2019-03-17 21:46 ` João Távora [this message]
2019-03-18 14:26 ` Dmitry Gutov
2019-03-18 14:42 ` Dmitry Gutov
2019-03-18 14:49 ` Stefan Monnier
2019-03-18 14:52 ` Dmitry Gutov
2019-03-18 16:20 ` Stefan Monnier
2019-03-18 15:13 ` Who uses Icomplete-mode? " João Távora
2019-03-18 16:44 ` Stefan Monnier
2019-03-18 21:08 ` Who uses Icomplete-mode? Juri Linkov
2019-03-18 14:54 ` [Emacs-diffs] master b0e318d 2/2: Score flex-style completions according to match tightness João Távora
2019-03-18 14:51 ` João Távora
2019-03-18 17:18 ` Dmitry Gutov
2019-03-20 9:59 ` João Távora
2019-03-20 12:09 ` Stefan Monnier
2019-03-20 21:00 ` João Távora
2019-03-20 21:58 ` Dmitry Gutov
2019-03-20 23:25 ` João Távora
2019-03-21 1:14 ` Stefan Monnier
2019-03-21 1:20 ` Dmitry Gutov
2019-03-21 1:08 ` Stefan Monnier
2019-03-17 17:51 ` Dmitry Gutov
2019-03-17 19:09 ` João Távora
2019-03-17 20:22 ` Dmitry Gutov
2019-03-17 21:27 ` João Távora
2019-03-18 0:38 ` Dmitry Gutov
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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CALDnm53WS=T4A1x-sMAwiEf3xYwza1v79YQ=nvp17o9c=VvpAw@mail.gmail.com' \
--to=joaotavora@gmail.com \
--cc=dgutov@yandex.ru \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.