Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Epic - Mejoras autocompletado #106

Merged
merged 30 commits into from
Oct 20, 2023
Merged

Epic - Mejoras autocompletado #106

merged 30 commits into from
Oct 20, 2023

Conversation

fdodino
Copy link
Contributor

@fdodino fdodino commented Oct 10, 2023

  • Autocomplete: darle formato (Autocomplete: darle formato #69)
  • Cuando estás al final del archivo o en el medio de dos elementos (Class / Object) piensa que estás dentro del elemento anterior. Es un problema del parser, reportado en wollok-ts El parser considera los espacios posteriores a la definición de un elemento wollok-ts#173
  • Cuando escribís no te filtra el autocompletado (el problema estaba en que cuando había un error defaulteaba el nodo al primer ancestro que no tuviera problems, entonces si escribís "m" de method eso da error al parsear y se rompe, y subía a nivel Package donde el "method" no es un autocompletado posible
  • Revisar el autocompletado por elementos: ahor\ son inteligentes
    • Clase
    • Singleton
    • [NO] Objeto anónimo
    • Mixin
    • Describe
    • Test
    • Package
    • Import
    • New
    • References (le agregué poder apuntar a clases además de las referencias y singletons)
  • Agregar testeo unitario de todos los nodos (los existentes y los nuevos) - falta reference y new
  • Agregar testeo unitario de mensajes
  • Agregar/corregir el autocompletado de literales que no funcionaba (ej: 2. tiene que traerte todo lo de number, [ ]. todo lo de lista, etc.). Ahora autocompleta dentro de la primera instrucción con error de parseo en el body.
  • Revisar qué pasa si un método tiene más de un error
  • Agregar el autocompletado de p.ej. new Date(). que tiene que traer todo lo de la clase a instanciar
  • También funciona para new de clases custom
  • Revisar el testeo de integración de Wollok LSP-IDE
  • Autocomplete con prioridad: Autocomplete con prioridad #53 , hay que ver si podemos ordenar por el elemento (quizás primero los que estén dentro del package, después los que son del environment que no son wollok y por último los de wollok)
  • Un detalle adicional del punto anterior es ordenar primero las clases concretas y después las abstractas
  • Que la sugerencia de mensajes no considere el punto si el mismo tiene chirimbolos: Las sugerencias de mensajes, cuando escribí un punto, no deben incluir los chirimbolos #85
  • Evitar el autocomplete de mensajes en el import: Evitar el autocomplete de mensajes en los imports #74
  • El original: No mostrar snippets en todas las situaciones #36, no mostrar los snippets en todas las situaciones
  • Ordenar los mensajes primero por las definiciones customs, luego las clases concretas, después las de la bilioteca Wollok y por último las de Object
  • Agregar métricas, mejorar la visualización y poner un relojito si una operación tarda más de 200 ms

De paso, renombramos el nombre del componente a wollok-lsp-ide.

@fdodino fdodino marked this pull request as draft October 10, 2023 03:03
@fdodino fdodino changed the title Epic #105 - Mejoras autocompletado Epic - Mejoras autocompletado Oct 12, 2023
@fdodino fdodino added the component: autocomplete Autocomplete / Code Assist component label Oct 12, 2023
@fdodino fdodino marked this pull request as ready for review October 15, 2023 23:48
@fdodino fdodino requested review from ivojawer and PalumboN October 15, 2023 23:48
@fdodino
Copy link
Contributor Author

fdodino commented Oct 16, 2023

Demo

Está hecha con screenkey en Linux Mint con la siguiente configuración:

screenkey -p center -s small -t 1

Después lo quiero migrar a la página que ya existe para la demo:

Autocompletado de clases

01-autocomplete-class

Autocompletado de wko/singletons

02-autocomplete-singleton

Autocompletado de describe/tests

03-autocomplete-describe

Autocompletado de Imports

04-autocomplete-import

Autocompletado de New + Initializers

05-autocomplete-new-initializers

Autocompletado de mensajes

Vemos cómo new o literales se comportan:

06-autocomplete-messages

07-autocomplete-messages-2

Es raro que acá no se muestre primero lo de Cebra y luego Animal porque internamente el sortText es '011' para Cebra y '015' para Animal, supongo que al colisionar el mismo label VSC se hace un poco de lío. Pero se podría tunear.

@fdodino fdodino requested a review from nscarcella October 16, 2023 22:50
Copy link
Contributor

@PalumboN PalumboN left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QUE GROSO FEEEERRRR!!!! 🏅 Alto laburazooooo 🥳

Dejé un par de comentarios, varios son para hacer en otra iteración.

Maravilloso todo 🤩

server/src/functionalities/autocomplete/autocomplete.ts Outdated Show resolved Hide resolved
server/src/functionalities/autocomplete/send-completion.ts Outdated Show resolved Hide resolved
server/src/test/autocomplete.test.ts Outdated Show resolved Hide resolved
client/src/test/completion.test.ts Outdated Show resolved Hide resolved
@fdodino fdodino merged commit ba3acc3 into master Oct 20, 2023
1 check passed
@fdodino fdodino deleted the fix-#36-snippets branch October 20, 2023 02:35
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
component: autocomplete Autocomplete / Code Assist component
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants