Sorter in Completion Engine in Pharo 13

OA
Omar Abedelkader
Thu, Apr 3, 2025 6:42 PM

Hello,

I hope this message finds you well.

This is to inform you about the available sorter options in our code completion engine and how to change them as needed. Currently, there are four different sorter configurations you can choose from:

1. 

AlphabeticSorter – Sorts suggestions in alphabetical order.
2.

ReverseAlphabeticSorter – Sorts suggestions in reverse alphabetical order.
3.

NoSorter – Displays suggestions in the original order as provided by the completion engine.
4.

SizeSorter – Modifies the suggestion list to prioritize and return the closest match based on what you are currently typing.

If you would like to change the sorter, please follow these steps:
Open Settings → Code Browsing → Code Completion → Sorter , then select SizeSorter (or any other preferred sorter).

Default Sorter : NoSorter

Best regards,

Omar ABEDELKADER
Doctorant, Équipe EVREF
[ https://www.inria.fr/fr/evref | inria.fr/fr/evref ]
[ https://www.cristal.univ-lille.fr/profil/omarabedelkader/ | cristal.univ-lille.fr/omarabedelkader ] /
Institut National de Recherche en Sciences et Technologies du Numérique

Parc Scientifique de la Haute Borne
Park Plaza - Bâtiment A - 40 avenue Halley
59650 Villeneuve d'Ascq - France
Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne le traiter qu’en cas d’urgence avérée.
Si ce courriel ne vous est pas destiné, merci de ne pas en prendre connaissance, le détruire et en informer l’expéditeur.
Merci de n’imprimer ce courriel qu’en cas de nécessité.

Hello, I hope this message finds you well. This is to inform you about the available sorter options in our code completion engine and how to change them as needed. Currently, there are four different sorter configurations you can choose from: 1. AlphabeticSorter – Sorts suggestions in alphabetical order. 2. ReverseAlphabeticSorter – Sorts suggestions in reverse alphabetical order. 3. NoSorter – Displays suggestions in the original order as provided by the completion engine. 4. SizeSorter – Modifies the suggestion list to prioritize and return the closest match based on what you are currently typing. If you would like to change the sorter, please follow these steps: Open Settings → Code Browsing → Code Completion → Sorter , then select SizeSorter (or any other preferred sorter). Default Sorter : NoSorter Best regards, -- Omar ABEDELKADER Doctorant, Équipe EVREF [ https://www.inria.fr/fr/evref | inria.fr/fr/evref ] [ https://www.cristal.univ-lille.fr/profil/omarabedelkader/ | cristal.univ-lille.fr/omarabedelkader ] / Institut National de Recherche en Sciences et Technologies du Numérique Parc Scientifique de la Haute Borne Park Plaza - Bâtiment A - 40 avenue Halley 59650 Villeneuve d'Ascq - France Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne le traiter qu’en cas d’urgence avérée. Si ce courriel ne vous est pas destiné, merci de ne pas en prendre connaissance, le détruire et en informer l’expéditeur. Merci de n’imprimer ce courriel qu’en cas de nécessité.
S
sducasseatwork@mailo.com
Fri, Apr 4, 2025 6:19 AM

But pay attention that we will remove the sorter because it often contradicts the semantics sorting implemented
by default. I often put the sorter on NoSorter.

S

On 3 Apr 2025, at 21:42, Omar Abedelkader omar.abedelkader@inria.fr wrote:

Hello,

I hope this message finds you well.

This is to inform you about the available sorter options in our code completion engine and how to change them as needed. Currently, there are four different sorter configurations you can choose from:
AlphabeticSorter – Sorts suggestions in alphabetical order.
ReverseAlphabeticSorter – Sorts suggestions in reverse alphabetical order.
NoSorter – Displays suggestions in the original order as provided by the completion engine.
SizeSorter – Modifies the suggestion list to prioritize and return the closest match based on what you are currently typing.
If you would like to change the sorter, please follow these steps:
Open Settings → Code Browsing → Code Completion → Sorter, then select SizeSorter (or any other preferred sorter).

Default Sorter : NoSorter

Best regards,

Omar ABEDELKADER
Doctorant, Équipe EVREF
inria.fr/fr/evref https://www.inria.fr/fr/evref
cristal.univ-lille.fr/omarabedelkader https://www.cristal.univ-lille.fr/profil/omarabedelkader//
Institut National de Recherche en Sciences et Technologies du Numérique

Parc Scientifique de la Haute Borne
Park Plaza - Bâtiment A - 40 avenue Halley
59650 Villeneuve d'Ascq - France
<rf-inria.png>
Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne le traiter qu’en cas d’urgence avérée.
Si ce courriel ne vous est pas destiné, merci de ne pas en prendre connaissance, le détruire et en informer l’expéditeur.
Merci de n’imprimer ce courriel qu’en cas de nécessité.

But pay attention that we will remove the sorter because it often contradicts the semantics sorting implemented by default. I often put the sorter on NoSorter. S > On 3 Apr 2025, at 21:42, Omar Abedelkader <omar.abedelkader@inria.fr> wrote: > > Hello, > > I hope this message finds you well. > > This is to inform you about the available sorter options in our code completion engine and how to change them as needed. Currently, there are four different sorter configurations you can choose from: > AlphabeticSorter – Sorts suggestions in alphabetical order. > ReverseAlphabeticSorter – Sorts suggestions in reverse alphabetical order. > NoSorter – Displays suggestions in the original order as provided by the completion engine. > SizeSorter – Modifies the suggestion list to prioritize and return the closest match based on what you are currently typing. > If you would like to change the sorter, please follow these steps: > Open Settings → Code Browsing → Code Completion → Sorter, then select SizeSorter (or any other preferred sorter). > > Default Sorter : NoSorter > > Best regards, > -- > Omar ABEDELKADER > Doctorant, Équipe EVREF > inria.fr/fr/evref <https://www.inria.fr/fr/evref> > cristal.univ-lille.fr/omarabedelkader <https://www.cristal.univ-lille.fr/profil/omarabedelkader/>/ > Institut National de Recherche en Sciences et Technologies du Numérique > > Parc Scientifique de la Haute Borne > Park Plaza - Bâtiment A - 40 avenue Halley > 59650 Villeneuve d'Ascq - France > <rf-inria.png> > Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne le traiter qu’en cas d’urgence avérée. > Si ce courriel ne vous est pas destiné, merci de ne pas en prendre connaissance, le détruire et en informer l’expéditeur. > Merci de n’imprimer ce courriel qu’en cas de nécessité. >
DS
Daniel Slomovits
Sat, Apr 5, 2025 7:44 PM

Is there documentation of the intended behavior/reasoning behind the
semantic sort somewhere? I feel like I might often prefer the SizeSorter
behavior (if I'm understanding it correctly), but if that's going to be
removed, maybe I would take a look at the semantic sorter and see if I can
add some refinement options there.

On Fri, Apr 4, 2025 at 2:20 AM sducasseatwork--- via Pharo-dev <
pharo-dev@lists.pharo.org> wrote:

But pay attention that we will remove the sorter because it often
contradicts the semantics sorting implemented
by default. I often put the sorter on NoSorter.

S

On 3 Apr 2025, at 21:42, Omar Abedelkader omar.abedelkader@inria.fr
wrote:

Hello,

I hope this message finds you well.

This is to inform you about the available sorter options in our code
completion engine and how to change them as needed. Currently, there are
four different sorter configurations you can choose from:

1. *AlphabeticSorter* – Sorts suggestions in alphabetical order.
2. *ReverseAlphabeticSorter* – Sorts suggestions in reverse
alphabetical order.
3. *NoSorter* – Displays suggestions in the original order as provided
by the completion engine.
4. *SizeSorter* – Modifies the suggestion list to prioritize and
return the closest match based on what you are currently typing.

If you would like to change the sorter, please follow these steps:
Open Settings → Code Browsing → Code Completion → Sorter, then select
SizeSorter (or any other preferred sorter).

Default Sorter : NoSorter

Best regards,

Omar ABEDELKADER
Doctorant, Équipe EVREF
inria.fr/fr/evref https://www.inria.fr/fr/evref
cristal.univ-lille.fr/omarabedelkader
https://www.cristal.univ-lille.fr/profil/omarabedelkader//
Institut National de Recherche en Sciences et Technologies du Numérique

Parc Scientifique de la Haute Borne
Park Plaza - Bâtiment A - 40 avenue Halley
59650 Villeneuve d'Ascq - France
<rf-inria.png>

Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne
le traiter qu’en cas d’urgence avérée.

Si ce courriel ne vous est pas destiné, merci de ne pas en prendre
connaissance, le détruire et en informer l’expéditeur.

Merci de n’imprimer ce courriel qu’en cas de nécessité.

Is there documentation of the intended behavior/reasoning behind the semantic sort somewhere? I feel like I might often prefer the SizeSorter behavior (if I'm understanding it correctly), but if that's going to be removed, maybe I would take a look at the semantic sorter and see if I can add some refinement options there. On Fri, Apr 4, 2025 at 2:20 AM sducasseatwork--- via Pharo-dev < pharo-dev@lists.pharo.org> wrote: > But pay attention that we will remove the sorter because it often > contradicts the semantics sorting implemented > by default. I often put the sorter on NoSorter. > > S > > On 3 Apr 2025, at 21:42, Omar Abedelkader <omar.abedelkader@inria.fr> > wrote: > > Hello, > > I hope this message finds you well. > > This is to inform you about the available sorter options in our code > completion engine and how to change them as needed. Currently, there are > four different sorter configurations you can choose from: > > 1. *AlphabeticSorter* – Sorts suggestions in alphabetical order. > 2. *ReverseAlphabeticSorter* – Sorts suggestions in reverse > alphabetical order. > 3. *NoSorter* – Displays suggestions in the original order as provided > by the completion engine. > 4. *SizeSorter* – Modifies the suggestion list to prioritize and > return the closest match based on what you are currently typing. > > If you would like to change the sorter, please follow these steps: > *Open Settings → Code Browsing → Code Completion → Sorter*, then select > *SizeSorter* (or any other preferred sorter). > > *Default Sorter : NoSorter* > > Best regards, > -- > Omar ABEDELKADER > Doctorant, Équipe EVREF > inria.fr/fr/evref <https://www.inria.fr/fr/evref> > cristal.univ-lille.fr/omarabedelkader > <https://www.cristal.univ-lille.fr/profil/omarabedelkader/>/ > Institut National de Recherche en Sciences et Technologies du Numérique > > Parc Scientifique de la Haute Borne > Park Plaza - Bâtiment A - 40 avenue Halley > 59650 Villeneuve d'Ascq - France > <rf-inria.png> > > *Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne > le traiter qu’en cas d’urgence avérée.* > *Si ce courriel ne vous est pas destiné, merci de ne pas en prendre > connaissance, le détruire et en informer l’expéditeur.* > *Merci de n’imprimer ce courriel qu’en cas de nécessité.* > > >
SD
stephane ducasse
Sun, Apr 6, 2025 5:20 AM

You can check the heuristic class but in essence

tmp > local variables> superclass variables

self message -> method in the class then in superclass

super message -> the right one

ClassName -> shared var > sharedVar of superclass > global environment

The problem of size is that often it proposes you something that is just out of scope just because it is smaller
and globally sorting breaks all the rest.
So if we keep it we should just through away all the rest because why bothering if this is just to break everythinng after

We are working on better heuristics for class names:
H1 we look in repository level package (all the packages within the project)
So this is local package > package in the same project > global
H2 we look in the dependent packages and the results are promising.
So this is local to package > dependent packages > global

Now I’m thinking that we could also have a way to declare preference per project.
For example with Copiy Domenico could simple look first in his package and extensions.

The current heuristics also takes into account playground variables.

We are also working on taking into account the past method defined.

So as you see this is not just sorting.

On 5 Apr 2025, at 22:44, Daniel Slomovits daniels220@gmail.com wrote:

Is there documentation of the intended behavior/reasoning behind the semantic sort somewhere? I feel like I might often prefer the SizeSorter behavior (if I'm understanding it correctly), but if that's going to be removed, maybe I would take a look at the semantic sorter and see if I can add some refinement options there.

On Fri, Apr 4, 2025 at 2:20 AM sducasseatwork--- via Pharo-dev <pharo-dev@lists.pharo.org mailto:pharo-dev@lists.pharo.org> wrote:

But pay attention that we will remove the sorter because it often contradicts the semantics sorting implemented
by default. I often put the sorter on NoSorter.

S

On 3 Apr 2025, at 21:42, Omar Abedelkader <omar.abedelkader@inria.fr mailto:omar.abedelkader@inria.fr> wrote:

Hello,

I hope this message finds you well.

This is to inform you about the available sorter options in our code completion engine and how to change them as needed. Currently, there are four different sorter configurations you can choose from:
AlphabeticSorter – Sorts suggestions in alphabetical order.
ReverseAlphabeticSorter – Sorts suggestions in reverse alphabetical order.
NoSorter – Displays suggestions in the original order as provided by the completion engine.
SizeSorter – Modifies the suggestion list to prioritize and return the closest match based on what you are currently typing.
If you would like to change the sorter, please follow these steps:
Open Settings → Code Browsing → Code Completion → Sorter, then select SizeSorter (or any other preferred sorter).

Default Sorter : NoSorter

Best regards,

Omar ABEDELKADER
Doctorant, Équipe EVREF
inria.fr/fr/evref https://www.inria.fr/fr/evref
cristal.univ-lille.fr/omarabedelkader https://www.cristal.univ-lille.fr/profil/omarabedelkader//
Institut National de Recherche en Sciences et Technologies du Numérique

Parc Scientifique de la Haute Borne
Park Plaza - Bâtiment A - 40 avenue Halley
59650 Villeneuve d'Ascq - France
<rf-inria.png>
Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne le traiter qu’en cas d’urgence avérée.
Si ce courriel ne vous est pas destiné, merci de ne pas en prendre connaissance, le détruire et en informer l’expéditeur.
Merci de n’imprimer ce courriel qu’en cas de nécessité.

Stéphane Ducasse
http://stephane.ducasse.free.fr
06 30 93 66 73

"If you knew today was your last day on earth, what would you do differently? ....ESPECIALLY if, by doing something different, today might not be your last day on earth.” Calvin & Hobbes

You can check the heuristic class but in essence tmp > local variables> superclass variables self message -> method in the class then in superclass super message -> the right one ClassName -> shared var > sharedVar of superclass > global environment The problem of size is that often it proposes you something that is just out of scope just because it is smaller and globally sorting breaks all the rest. So if we keep it we should just through away all the rest because why bothering if this is just to break everythinng after We are working on better heuristics for class names: H1 we look in repository level package (all the packages within the project) So this is local package > package in the same project > global H2 we look in the dependent packages and the results are promising. So this is local to package > dependent packages > global Now I’m thinking that we could also have a way to declare preference per project. For example with Copiy Domenico could simple look first in his package and extensions. The current heuristics also takes into account playground variables. We are also working on taking into account the past method defined. So as you see this is not just sorting. > On 5 Apr 2025, at 22:44, Daniel Slomovits <daniels220@gmail.com> wrote: > > Is there documentation of the intended behavior/reasoning behind the semantic sort somewhere? I feel like I might often prefer the SizeSorter behavior (if I'm understanding it correctly), but if that's going to be removed, maybe I would take a look at the semantic sorter and see if I can add some refinement options there. > > On Fri, Apr 4, 2025 at 2:20 AM sducasseatwork--- via Pharo-dev <pharo-dev@lists.pharo.org <mailto:pharo-dev@lists.pharo.org>> wrote: >> But pay attention that we will remove the sorter because it often contradicts the semantics sorting implemented >> by default. I often put the sorter on NoSorter. >> >> S >> >>> On 3 Apr 2025, at 21:42, Omar Abedelkader <omar.abedelkader@inria.fr <mailto:omar.abedelkader@inria.fr>> wrote: >>> >>> Hello, >>> >>> I hope this message finds you well. >>> >>> This is to inform you about the available sorter options in our code completion engine and how to change them as needed. Currently, there are four different sorter configurations you can choose from: >>> AlphabeticSorter – Sorts suggestions in alphabetical order. >>> ReverseAlphabeticSorter – Sorts suggestions in reverse alphabetical order. >>> NoSorter – Displays suggestions in the original order as provided by the completion engine. >>> SizeSorter – Modifies the suggestion list to prioritize and return the closest match based on what you are currently typing. >>> If you would like to change the sorter, please follow these steps: >>> Open Settings → Code Browsing → Code Completion → Sorter, then select SizeSorter (or any other preferred sorter). >>> >>> Default Sorter : NoSorter >>> >>> Best regards, >>> -- >>> Omar ABEDELKADER >>> Doctorant, Équipe EVREF >>> inria.fr/fr/evref <https://www.inria.fr/fr/evref> >>> cristal.univ-lille.fr/omarabedelkader <https://www.cristal.univ-lille.fr/profil/omarabedelkader/>/ >>> Institut National de Recherche en Sciences et Technologies du Numérique >>> >>> Parc Scientifique de la Haute Borne >>> Park Plaza - Bâtiment A - 40 avenue Halley >>> 59650 Villeneuve d'Ascq - France >>> <rf-inria.png> >>> Si vous lisez ce courriel en dehors de vos heures de travail, merci de ne le traiter qu’en cas d’urgence avérée. >>> Si ce courriel ne vous est pas destiné, merci de ne pas en prendre connaissance, le détruire et en informer l’expéditeur. >>> Merci de n’imprimer ce courriel qu’en cas de nécessité. >>> >> Stéphane Ducasse http://stephane.ducasse.free.fr 06 30 93 66 73 "If you knew today was your last day on earth, what would you do differently? ....ESPECIALLY if, by doing something different, today might not be your last day on earth.” Calvin & Hobbes