google / google/codeworld

Better parsing for extracting autocomplete/hint options from source code

Ouverte
#798 7 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
enhancement
Langage dominant
Haskell
Étoiles
1.3k
Forks
201
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

There's some existing code for finding type declarations in the current module, and augmenting the autocomplete list with them. @nixorn is extending that to his new doc-on-hover feature, as well. However, the extraction code isn't all that great right now. Specifically:

1. It only looks at one line at a time. This generates incorrect results when the type declaration is wrapped across lines.
2. It mis-parses some syntax. For example `pic1,pic2 :: Picture` will add a single item called `pic1,pic2`, when it should add separate items for both of the two pictures.
3. It would be nice to extend the parsing to recognize definition lines (like `f x = sqrt x + 1`). Type inference isn't needed here, but I think it would be great if that gave `f` an incomplete type in autocomplete and docs, like `f :: ? -> ?`. Of course, an explicit type signature should replace the incomplete definition with a complete one.
4. When extraction does succeed, it still leaves unnecessary formatting in place. So if the original source code says:

short :: Number
reallyReallyVeryVeryLong :: Number

the extracted doc for `short` will have all those spaces between `short` and `::`, even though those extra spaces aren't sensible in the new context.

One must probably resist the temptation to completely reimplement the Haskell parser in JavaScript, but I think enough special cases could go a long way.

Guide de contribution

Ouvrir le guide de contribution

Piste de recherche

Repérez le code existant d’extraction du code source pour les déclarations de types et suivez la manière dont ses résultats alimentent autocomplete et doc-on-hover. Reproduisez les cas multilignes, séparés par des virgules, de ligne de définition et d’espacement décrits dans l’issue, puis vérifiez que les placeholders inférés et les signatures explicites apparaissent correctement dans les deux consommateurs.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
haskell, javascript
Domaine
developer-experience, documentation
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.