Better parsing for extracting autocomplete/hint options from source code
- 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