unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Okamsn <okamsn@protonmail.com>
To: Philip Kaludercic <philipk@posteo.net>
Cc: emacs-devel@gnu.org
Subject: Re: Adding the `prescient` packages to NonGNU ELPA?
Date: Sun, 20 Nov 2022 17:42:45 +0000	[thread overview]
Message-ID: <4a52210d-3e39-ed34-a7c9-c3ee6e2a7a68@protonmail.com> (raw)
In-Reply-To: <871qpydllo.fsf@posteo.net>

On 2022-11-20 09:24 UTC, Philip Kaludercic wrote:
> Okamsn <okamsn@protonmail.com> writes:
>
>> Hello,
>
> Hi,
>
>> Would you be willing to add Prescient[1] and some of its related
>> packages to NonGNU ELPA, as in the attached file? I am one of the
>> maintainers of this package. The author of the package does not wish to
>> assign copyright or require others to do so, so it cannot be added to
>> GNU ELPA.
>>
>> Prescient is for sorting and filtering completion candidates. Its
>> filtering is similar to the package Orderless and it sorts by a
>> combination of the frequency and the recency of the candidates.
>
>  From what I recall, Vertico does that too, but Vertico is a completion
> front-end?  Intuitively I would have also guessed that the front-end is
> the right place to solve this problem.
>
> Or maybe to rephrase the question, what does this package provide over
> vertico + orderless?

With Vertico's default sorting, the recency is unique to each command.
Prescient remembers the selected candidates for all completion commands,
using their recency and frequency to create a ranking of that candidate
for all commands in which they're shown.

With Prescient, one can select a candidate in one command and have it be
suggested for another command, such as inserting a candidate with
Company and later having it suggested near the top of the list when
calling `describe-variable` in Vertico. Candidates that are used more
frequently are ranked higher. If candidates haven't been used recently,
they eventually have their rankings forgotten.

There are other smaller differences, such as that, because Prescient can
provide both sorting and filtering, it can sort fully matched candidates
before partially matched candidates.

>
>> These are the packages I am wondering if you would be willing to add:
>>
>> - `prescient`: The base package, which provides the sorting and
>>      filtering functions and a completion style
>>
>> - `company-prescient`: Use `prescient` sorting with Company
>>
>> - `corfu-prescient`: Use `prescient` sorting and filtering with Corfu
>>
>> - `vertico-prescient`: Use `prescient` sorting and filtering with Vertico
>
> Could you explain the need for these other packages?  If we are talking
> about a completion style, why do other packages require their own
> support?

Prescient does not provide a completion UI.  Instead, there are packages
to set it up for completion UIs. It is not just a completion style
(which was only added recently, years after the filtering functions). To
use the sorting, one must also configure their chosen UI and set up a
way to make Prescient remember the selected candidate. The packages set
up this sorting in addition to the filtering.

I tried using modification of the completion metadata for sorting,
similar to the `flex` style, but it was decided that it is better to
keep the filtering and sorting more separate.  For example, to still be
able to sort the candidates filtered by other completion styles.

Because the integrations are UI specific, they are kept as separate
packages.

>
>> All of these packages live in the same repository in the link below.
>
> Would it be possible to change this?  E.g. by making each project live
> on it's own branch.  That would make the :ignored-files rules below a
> lot simpler.

I wouldn't mind making new branches that hold the stable versions. Are
you OK with the README and CHANGELOG still being duplicated in that case?

For the development/main version in the "main" branch, I don't want to
change how the author has set up the repository, since they still use it.

In this setup, the `:branch` property would be "main" and the
`:release-branch` property would be something like
"nongnu-elpa/prescient", yes?

Is the GNU ELPA README stating that it wants the version number to be
updated during every commit in the development branch? In that case,
maybe I could find a way to make GitHub update the development version
number in a separate branch.

>> When I tried testing the installation of `prescient`, it installed
>> an older version of the file `prescient.el` than what is current in the
>> repository. This was the version that received an update to the version
>> number, but how does the system decide which is the most recent stable
>> version of a file? I might need to increase the number to make it
>> install a newer version.
>
> Yes, ELPA finds the last commit that changed the version header and uses
> that to prepare a release.

OK. I will try updating the version number to make sure that was the
problem.





  parent reply	other threads:[~2022-11-20 17:42 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-20  3:27 Adding the `prescient` packages to NonGNU ELPA? Okamsn
2022-11-20  9:24 ` Philip Kaludercic
2022-11-20 11:23   ` Stefan Kangas
2022-11-20 15:19     ` Stefan Monnier
2022-11-20 15:41       ` Philip Kaludercic
2022-11-21 21:17         ` Richard Stallman
2022-11-22 13:53           ` Akib Azmain Turja
2022-11-23 23:12             ` okamsn
2022-11-26  0:50               ` Richard Stallman
2022-11-20 17:10   ` Visuwesh
2022-11-20 18:39     ` Stefan Monnier
2022-12-16  9:41     ` North Year
2022-12-16 19:25       ` Philip Kaludercic
2022-12-17  3:28         ` Stefan Monnier
2022-12-17  9:17           ` Philip Kaludercic
2022-12-17 15:52             ` Stefan Monnier
2022-12-17 16:07               ` Philip Kaludercic
2022-12-17 16:24                 ` Philip Kaludercic
2022-12-17 18:01                   ` Okamsn
2022-12-17 18:08                     ` Philip Kaludercic
2022-12-17 18:39                     ` Stefan Monnier
2022-12-20  1:32                       ` Okamsn
2022-12-20  3:10                         ` Stefan Monnier
2022-11-20 17:42   ` Okamsn [this message]
2022-12-05  0:27     ` Okamsn
2022-12-05 15:21       ` Stefan Monnier
2022-12-09  3:58         ` Okamsn
2022-12-09 15:08           ` Stefan Monnier
2022-12-09 15:27             ` Philip Kaludercic
2022-12-10  4:10             ` Richard Kim
2022-12-10 15:12               ` Stefan Monnier
2022-12-10 16:38                 ` Richard Kim
2022-12-10 17:44                   ` Stefan Monnier
2022-12-05 17:21       ` Philip Kaludercic
2022-12-16  2:04         ` Okamsn
2022-12-16 19:26           ` Philip Kaludercic
2022-11-22 15:41   ` Jonas Bernoulli
2022-11-22 21:09     ` Stefan Monnier
2022-11-23  9:56       ` Jonas Bernoulli
2022-11-23 12:33         ` Stefan Monnier

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=4a52210d-3e39-ed34-a7c9-c3ee6e2a7a68@protonmail.com \
    --to=okamsn@protonmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=philipk@posteo.net \
    /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).