From: Dmitry Gutov <dgutov@yandex.ru>
To: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
Subject: Re: [Emacs-diffs] scratch/new-flex-completion-style 2c75775 2/2: Score, sort and annotate flex-style completions according to match tightness
Date: Wed, 13 Feb 2019 01:55:01 +0300 [thread overview]
Message-ID: <c3f7782f-1a08-6a1f-9a95-2cbe42d90b46@yandex.ru> (raw)
In-Reply-To: <jwvo97hqhpu.fsf-monnier+emacs@gnu.org>
On 12.02.2019 16:19, Stefan Monnier wrote:
>> See completion--metadata and completion-extra-properties.
>
> But a completion style like `flex` can't affect either of those.
> And I expect some people will want to put in their `completion-styles`,
> so `flex` should work well for all/most completion tables and all/most
> completion-at-point-functions (and calls to completing-read).
On the one hand, yes, but it's the abstraction we already have, and it
will allow flex to work properly at least with certain completion
tables. Which is a win.
On the other hand, a search for display-sort-function through Emacs's
sources seems to indicate that the design is kind of a failure: there
are only a couple places that set it to something, and in both cases
it's #'identity, meaning "do not re-sort".
So minibuffer.el might want to take a cue from Company and
company-transformers, to make this universal, we could add sorting as a
feature of completion styles, or as a separate user option, for maximum
flexibility. I'd simply like to avoid hardcoding extra sorting behavior,
like the patch proposes.
> I think I agree here: the stability of the `flex` sort is likely to make
> little difference in practice (more specifically, the sets of matches
> which share the same flex-score will be sufficiently numerous and small
> that the sorting within them is not significant).
Yep.
> Not sure how that can be done in a modular way: how can we specify an
> API where `flex` can provide its scores, `sort-by-occurrence` can
> specify its scores, they don't know about each other, and yet the two
> sets of scores get mixed in a useful way?
Conveying information via text properties seems like a viable approach.
We already use them to indicate matching characters, for instance.
Now, I wouldn't say it's terrible that sort-by-occurrence-and-score
would know specifically about flex (I don't think there's going to be a
lot of different styles in this flavor), but sure, like you proposed in
another email, the property can have a neutral name like completion-score.
To emphasize: there won't be a sort-by-occurrence whatever, but a
function called, say, sort-by-occurrence-and-score could take both
occurrences and flex scores into account.
next prev parent reply other threads:[~2019-02-12 22:55 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <20190202232827.27331.87300@vcs0.savannah.gnu.org>
[not found] ` <20190202232828.4AE452159A@vcs0.savannah.gnu.org>
2019-02-06 3:11 ` [Emacs-diffs] scratch/new-flex-completion-style 2c75775 2/2: Score, sort and annotate flex-style completions according to match tightness Dmitry Gutov
2019-02-06 10:09 ` João Távora
2019-02-06 18:54 ` Dmitry Gutov
2019-02-06 19:47 ` João Távora
2019-02-12 0:25 ` Dmitry Gutov
2019-02-12 13:19 ` Stefan Monnier
2019-02-12 22:55 ` Dmitry Gutov [this message]
2019-02-13 16:00 ` Stefan Monnier
2019-02-14 1:33 ` Dmitry Gutov
2019-02-19 16:10 ` Stefan Monnier
2019-02-24 0:03 ` Dmitry Gutov
2019-02-27 17:12 ` Stefan Monnier
2019-03-11 0:17 ` Dmitry Gutov
2019-03-11 1:15 ` Stefan Monnier
2019-03-11 22:54 ` Dmitry Gutov
2019-03-12 1:10 ` Drew Adams
2019-03-12 22:25 ` Dmitry Gutov
2019-03-12 23:12 ` Drew Adams
2019-03-11 8:47 ` João Távora
2019-03-11 22:57 ` Dmitry Gutov
2019-02-12 17:21 ` João Távora
2019-02-12 23:47 ` Dmitry Gutov
2019-02-11 21:10 ` new-flex-completion-style (was: [Emacs-diffs] scratch/ 2c75775 2/2: Score, sort and annotate flex-style completions according to match tightness) Stefan Monnier
2019-02-11 22:16 ` new-flex-completion-style João Távora
2019-02-11 23:02 ` new-flex-completion-style Dmitry Gutov
2019-02-11 23:11 ` new-flex-completion-style João Távora
2019-02-12 0:10 ` new-flex-completion-style Dmitry Gutov
2019-02-12 0:16 ` new-flex-completion-style Óscar Fuentes
2019-02-12 22:04 ` new-flex-completion-style João Távora
2019-02-13 0:28 ` new-flex-completion-style Óscar Fuentes
2019-02-13 11:20 ` new-flex-completion-style João Távora
2019-02-13 14:23 ` new-flex-completion-style Óscar Fuentes
2019-02-13 14:38 ` new-flex-completion-style Drew Adams
2019-02-13 15:24 ` new-flex-completion-style Stefan Monnier
2019-02-13 15:33 ` new-flex-completion-style Drew Adams
2019-02-13 15:40 ` new-flex-completion-style Óscar Fuentes
2019-02-13 17:34 ` new-flex-completion-style Daniel Pittman
2019-02-12 14:08 ` new-flex-completion-style Stefan Monnier
2019-02-12 22:17 ` new-flex-completion-style João Távora
2019-02-13 17:29 ` new-flex-completion-style João Távora
2019-02-13 18:54 ` new-flex-completion-style Stefan Monnier
2019-02-13 19:13 ` new-flex-completion-style João Távora
2019-02-14 13:36 ` new-flex-completion-style Stefan Monnier
2019-02-14 13:55 ` new-flex-completion-style João Távora
2019-02-14 14:59 ` new-flex-completion-style João Távora
2019-02-14 15:28 ` new-flex-completion-style Óscar Fuentes
2019-02-14 15:44 ` new-flex-completion-style Drew Adams
2019-02-14 16:21 ` new-flex-completion-style João Távora
2019-02-14 15:35 ` new-flex-completion-style Daniel Pittman
2019-02-14 16:12 ` new-flex-completion-style João Távora
2019-02-14 16:16 ` new-flex-completion-style João Távora
2019-02-14 16:34 ` new-flex-completion-style Drew Adams
2019-02-14 17:03 ` new-flex-completion-style João Távora
2019-02-14 17:49 ` new-flex-completion-style Drew Adams
2019-02-14 18:30 ` new-flex-completion-style João Távora
2019-02-14 19:20 ` new-flex-completion-style Drew Adams
2019-02-14 20:54 ` new-flex-completion-style João Távora
2019-02-14 22:03 ` new-flex-completion-style Drew Adams
2019-02-14 22:06 ` new-flex-completion-style João Távora
2019-02-14 22:22 ` new-flex-completion-style Stefan Monnier
2019-02-15 0:54 ` new-flex-completion-style Drew Adams
2019-02-15 4:50 ` new-flex-completion-style Stefan Monnier
2019-02-15 5:52 ` new-flex-completion-style Dmitry Gutov
2019-02-15 6:32 ` new-flex-completion-style Drew Adams
2019-02-18 20:46 ` new-flex-completion-style João Távora
2019-02-18 23:35 ` new-flex-completion-style Stefan Monnier
2019-02-19 9:16 ` new-flex-completion-style João Távora
2019-02-19 12:54 ` new-flex-completion-style Stefan Monnier
2019-02-19 13:01 ` new-flex-completion-style João Távora
2019-02-19 13:32 ` new-flex-completion-style Stefan Monnier
2019-02-11 22:57 ` new-flex-completion-style (was: [Emacs-diffs] scratch/ 2c75775 2/2: Score, sort and annotate flex-style completions according to match tightness) Drew Adams
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=c3f7782f-1a08-6a1f-9a95-2cbe42d90b46@yandex.ru \
--to=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.