Ga naar inhoud

Plug-in Functielijst

Een filterbaar overzicht van de symbolen van het huidige document — functies, klassen, methoden, koppen en meer — in een dokbaar zijpaneel. Activeer een symbool om de cursor van de editor er meteen naartoe te laten springen.

Waar u het vindt

Beeld ▸ Functielijst opent het dok (het begint verborgen). De lijst ververst terwijl u typt en volgt het actieve tabblad.

De lijst gebruiken

  • Naar een symbool springen — dubbelklik op een item, of selecteer het en druk op Enter. De editor schuift naar het symbool, ontvouwt het als het binnen een samengevouwen gebied zit, en zet de cursor daar.
  • Filteren — typ in het vak bovenaan om de lijst op naam te versmallen (niet hoofdlettergevoelig). In de boommodus blijft een ouder zichtbaar wanneer een van zijn kinderen overeenkomt.
  • De cursor volgen — terwijl u door het document beweegt, wordt het symbool dat de cursor omsluit in de lijst gemarkeerd.

Weergaveopties

De knop ⋮ (naast het filtervak) opent het weergavemenu:

Optie Effect
Als boomstructuur tonen Nestelt leden onder hun houder (methoden onder een klasse, een klasse onder haar naamruimte). Zet het uit voor een platte lijst.
Sorteren op positie Documentvolgorde (standaard).
Sorteren op naam Alfabetisch (niet hoofdlettergevoelig).
Sorteren op soort Groepeert op symboolsoort (klassen, functies, …) en daarbinnen op naam.

Uw keuzes worden tussen sessies onthouden.

Waar het overzicht vandaan komt

Het dok haalt symbolen uit een van twee bronnen, getoond in de voettekst onderaan het paneel:

  • Bron: taalserver — wanneer er voor de taal van het bestand een taalserver is ingesteld, gebruikt het dok diens symbolen. Dat is het nauwkeurige, volledige overzicht (lidvariabelen, precieze nesting klasse → methode, elke symboolsoort die de server meldt).
  • Bron: patronen — anders valt het dok terug op de ingebouwde patroonregels die hieronder beschreven worden.

U stelt dit niet in: het overzicht op basis van patronen verschijnt meteen, en antwoordt een taalserver, dan wordt die automatisch gebruikt. Een taal die wel een server maar geen meegeleverde patronen heeft krijgt toch een overzicht (van de server).

Ondersteunde talen

De patroonregels leveren een overzicht zonder enige taalserver (en zijn het terugvalspoor wanneer er geen beschikbaar is):

Taal Herkende symbolen
C / C++ naamruimten, klassen, structs, enums, #define's, functies
Python klassen, functies/methoden (def, async def)
JavaScript / TypeScript klassen, functies, constanten met pijlfuncties, klassemethoden
Markdown koppen (# … ######)

De lijst weerspiegelt de taal die de editor op het bestand heeft toegepast (de syntaxiskleuring ervan). Bestanden van andere typen tonen «Geen symboolschets voor dit bestandstype.»

Patronen zijn bij benadering

Het overzicht op basis van patronen (Bron: patronen) is een poging naar beste vermogen, geen volledige ontleder: een vrije functie die na een klasselichaam geschreven is kan bijvoorbeeld genest onder die klasse getoond worden. Voor een nauwkeurig overzicht stelt u een taalserver voor de taal in — het dok toont dan diens symbolen (Bron: taalserver).

Eigen regelsets

De regelsets zijn gewone JSON-bestanden, dus u kunt ze bijstellen of talen toevoegen zonder opnieuw te compileren. De meegeleverde set staat naast de toepassing in een map function-list/ (één *.json per regelset); die bestanden worden bij een update overschreven, dus behandel ze als alleen-lezen voorbeelden.

Om aan te passen zet u uw eigen *.json in de submap rulesets/ van de gegevensmap van de plug-in Functielijst. Een gebruikersbestand waarvan languageIds een taal bevat overschrijft de meegeleverde regelset voor die taal.

Een regelsetbestand ziet er zo uit:

{
    "languageIds": ["cpp", "c"],
    "caseSensitive": true,
    "rules": [
        { "pattern": "^\\s*class\\s+([A-Za-z_]\\w*)", "kind": "class" },
        { "pattern": "^\\s*(?:async\\s+)?def\\s+([A-Za-z_]\\w*)", "kind": "function" }
    ]
}
Veld Betekenis
languageIds Een of meer taal-id's van de editor waarvoor de regelset geldt (bijvoorbeeld cpp, python). Eén bestand kan er meerdere bedienen.
caseSensitive Of de patronen hoofdlettergevoelig zoeken (standaard true).
rules Geordende lijst met regels; de eerste regel die op een tekstregel past wint, één symbool per tekstregel.
rules[].pattern Een reguliere expressie in ECMAScript-stijl die tegen één tekstregel wordt gelegd.
rules[].nameGroup De vanggroep die de symboolnaam bevat (standaard 1).
rules[].kind De symboolsoort — een naam (class, struct, enum, namespace, function, method, constant, string, …) of een SymbolKind-nummer van LSP. Bepaalt het groeperen en sorteren.
rules[].containerGroup Optionele vanggroep die als houderdetail van het symbool gebruikt wordt (0 = geen).