typescript - Hva er den riktige tilnærmingen for å lage en tilpasset GoTo Definition-funksjon i en VS Code-utvidelse?
Jeg lager en VS Code-utvidelse som støtter et lite proprietært språk. Et av de minimale kravene for den er å ha en «Gå til definisjon»-funksjonalitet kun for prosedyrer. Som en nybegynner i JavaScript/TypeScript sliter jeg med å bruke VSCode sitt API for å faktisk løse problemet.
Jeg har en forståelse av hva som kreves for å lage en VS Code-utvidelse, altså formålet med package.json, activate-funksjonen i extension.ts og en generell forståelse av TypeScript (jeg kommer fra Python). Jeg har prøvd å se på noe åpen kildekode som implementerer en mye mer avansert versjon av min utvidelse (vscode-go), men koden der er overveldende å gå gjennom som en nybegynner i TS.
I hovedsak koker spørsmålet mitt ned til: Finnes det en enkel måte (kanskje et abstrakt sett med trinn?) å implementere en veldig grunnleggende «gå til funksjonsdefinisjon i samme fil»-funksjon, uten å ty til å lage en egendefinert språkserver?
Svar #1
For å tilby en Gå til definisjon-funksjon, akkurat som andre utvidelser, trenger du bare å registrere og implementere en DefinitionProvider.
Du trenger ikke en språkserver for det, heller ikke noe komplekst verktøy. En enkel lat parser ville fungere helt fint :-).
Jeg har laget en Pascal (https://github.com/alefragnani/vscode-language-pascal) utvidelse som gir noen av disse funksjonene, og bruker ikke en Language Server. Jeg bruker global/ctags for å analysere og generere tagger for kildene. Deretter laster jeg og analyserer utdataene for å identifisere symbolene.
Du står fritt til å ta en titt (https://github.com/alefragnani/vscode-language-pascal/blob/master/src/providers/definitionProvider.ts). Kildekoden er åpen og ganske enkel, da det var en av de første utvidelsene jeg har utviklet.
Håper dette hjelper