microsoft / microsoft/vscode-cpptools-api

Improve UX if CustomConfigurationProvider is not ready yet

Aperta
#43 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Lingua principale
TypeScript
Stelle
33
Fork
20
Metriche di merge delle PR
Nessuna PR unita negli ultimi 30g

Descrizione

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:

Guida per i contributori

Nessuna guida per i contributori indicizzata per questo repository

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Inizia con il workflow proposto getCppToolsApi, notifyReady(provider) e provideConfigurations, quindi esamina le issue collegate di PlatformIO per il contesto. Il lavoro sarà completato quando sarà definito un comportamento dell’API che consenta a un provider di segnalare di non essere pronto mentre vengono risolte le dipendenze, facendo iniziare le segnalazioni di IntelliSense solo dopo che il provider è pronto.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
typescript, vscode
Ambito
developer-experience, tooling
Tipo di issue
Funzionalità
Difficoltà
5/5
Tempo stimato
Più di una settimana
Stato di attività
Ferma
Chiarezza
Da chiarire
Idoneità per principianti
25/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.