microsoft / microsoft/vscode-cpptools-api

Improve UX if CustomConfigurationProvider is not ready yet

Ouverte
#43 6 commentaires 0 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
TypeScript
Étoiles
33
Forks
20
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

Hi,

Glad to discuss how could we improve PlatformIO's developer experience when using VSCode + "cpptools" extension. See scenarios below when is clear what to do for the end developer who faces the first time with VSCode/PlatformIO:

  1. Developer installs PlatformIO IDE for VSCode which depends on the "cpptools"
  2. Developer opens PlatformIO project downloaded from Git/Internet. At this stage, project dependencies (toolchains, frameworks, libraries) are not installed/ready.
  3. PlatformIO resolves all dependencies automatically by pulling packages from the PlatformIO Registry. It can take a few minutes depending on the project complexity.
  4. Developer tries to open any C/C++ files from the project AND!!! receives warnings about unresolved headers, broken syntax, etc. Of course, "cpptools" extension is right here because PlatformIO has not been provided configuration yet. It is still in progress, we download it...
  5. Developer STARTS filling c_cpp_properties.json because the "cpptools" extension forces him to do it. The developer does not understand what to do. No clue about toolchains, etc. Developer contacts PlatformIO forum or team and asks for help. Very often, developers even leave 1-star review as "it does not work".

So, how could we improve this API? The ideal scenario is to inform the "cpptools" that WE ARE ELIGIBLE to provide configuration but it can take us some time. See proposed workflow:

  1. PlatformIO extension starts and initiates api = getCppToolsApi
  2. At this moment, "cpptools" knows that there is someone responsible for the configuration and DOES NOT START its IntelliSense service waiting for the "command" when the provider is ready
  3. PlatformIO extension resolves all project dependencies, toolchains, and api.notifyReady(provider).
  4. Starting from this moment "cpptools" can complain about unresolved includes and syntax errors.

Your ideas?

P.S: As a workaround, I see that we can make a face configuration provider and provider "infinite sleep" to the provideConfigurations and other methods. Nevertheless, it is not useful from a technical perspective.


Related issue:

Guide de contribution

Aucun guide de contribution indexé pour ce dépôt

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez par le workflow proposé getCppToolsApi, notifyReady(provider) et provideConfigurations, puis examinez les issues PlatformIO liées pour avoir le contexte. Le travail sera considéré comme terminé lorsqu’un comportement de l’API permettant à un fournisseur d’indiquer qu’il n’est pas prêt pendant la résolution des dépendances sera défini, les signalements d’IntelliSense ne commençant qu’une fois le fournisseur prêt.

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

Évaluation

Stack technique
typescript, vscode
Domaine
developer-experience, tooling
Type d'issue
Fonctionnalité
Difficulté
5/5
Temps estimé
Plus d'une semaine
Activité
À l'abandon
Clarté
À clarifier
Accessibilité débutants
25/100

Recevez les nouvelles issues par e-mail

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