Gå til indholdet

Funktionsliste-udvidelsesmodulet

En oversigt over det aktuelle dokuments symboler — funktioner, klasser, metoder, overskrifter og mere — som kan filtreres, i et sidepanel, der kan dokkes. Aktivér et symbol for at føre editorens markør direkte hen til det.

Hvor du finder det

Vis ▸ Funktionsliste åbner panelet (det begynder skjult). Listen opdateres, mens du skriver, og følger det aktive faneblad.

At bruge listen

  • Spring til et symbol — dobbeltklik på en post, eller markér den og tryk Enter. Editoren ruller hen til symbolet, folder det ud, hvis det ligger inde i en sammenfoldet blok, og sætter markøren der.
  • Filtrér — skriv i feltet øverst for at indsnævre listen efter navn (uden forskel på store og små bogstaver). I trætilstand bliver en forælder ved med at være synlig, når bare ét af dens børn matcher.
  • Følg markøren — mens du bevæger dig rundt i dokumentet, fremhæves det symbol, markøren står inde i, på listen.

Visningsvalg

Knappen ⋮ (ved siden af filterfeltet) åbner visningsmenuen:

Valgmulighed Virkning
Vis som træ Placér medlemmer under det, de hører til (metoder under en klasse, en klasse under sit navnerum). Slå det fra for at få en flad liste.
Sortér efter placering Dokumentets rækkefølge (standard).
Sortér efter navn Alfabetisk (uden forskel på store og små bogstaver).
Sortér efter type Grupperet efter symboltype (klasser, funktioner …) og derefter efter navn.

Dine valg huskes mellem sessioner.

Hvor oversigten kommer fra

Panelet henter symboler fra en af to kilder, som vises i sidefoden nederst i panelet:

  • Kilde: sprogserver — når der er sat en sprogserver op til filens sprog, bruger panelet dens symboler. Det er den nøjagtige og fuldstændige oversigt (medlemsvariabler, præcis indlejring af klasse → metode, hver symboltype, serveren melder om).
  • Kilde: mønstre — ellers falder panelet tilbage på de indbyggede mønsterregler, der er beskrevet nedenfor.

Det skal du ikke sætte op: den mønsterbaserede oversigt kommer frem med det samme, og svarer en sprogserver, bruges den automatisk. Et sprog, der har en server, men ingen medleverede mønstre, får stadig en oversigt (fra serveren).

Understøttede sprog

Mønsterreglerne laver en oversigt uden nogen sprogserver (og er det, der falder tilbage på, når en ikke er til rådighed):

Sprog Symboler, der genkendes
C / C++ navnerum, klasser, strukturer, enumerationer, #definer, funktioner
Python klasser, funktioner og metoder (def, async def)
JavaScript / TypeScript klasser, funktioner, konstanter med pilefunktioner, klassemetoder
Markdown overskrifter (# … ######)

Listen afspejler det sprog, editoren har anvendt på filen (dens syntaksfarvning). Filer af andre typer viser »Ingen symboloversigt for denne filtype«.

Mønstre er omtrentlige

Den mønsterbaserede oversigt (Kilde: mønstre) er et bedste forsøg og ikke en fuld parser: en fri funktion, der er skrevet efter en klassekrop, kan for eksempel blive vist indlejret under den klasse. Vil du have en præcis oversigt, så sæt en sprogserver op til sproget — så viser panelet dens symboler (Kilde: sprogserver).

Egne regelsæt

Regelsættene er almindelige JSON-filer, så du kan justere dem eller tilføje sprog uden at bygge igen. Det medleverede sæt ligger ved siden af programmet i en function-list/-mappe (én *.json pr. regelsæt); de filer overskrives ved en opdatering, så behandl dem som skrivebeskyttede eksempler.

Vil du tilpasse dem, så læg dine egne *.json-filer i undermappen rulesets/ i Funktionsliste-udvidelsesmodulets datamappe. En brugerfil, hvis languageIds indeholder et sprog, tilsidesætter det medleverede regelsæt for det sprog.

En regelsætfil ser sådan ud:

{
    "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" }
    ]
}
Felt Betydning
languageIds Et eller flere af editorens sprog-id'er, regelsættet gælder for (f.eks. cpp, python). Én fil kan betjene flere.
caseSensitive Om mønstrene matcher med forskel på store og små bogstaver (true som standard).
rules Ordnet liste af regler; den første regel, der matcher en linje, vinder, ét symbol pr. linje.
rules[].pattern Et regulært udtryk i ECMAScript-stil, der matches mod en enkelt linje.
rules[].nameGroup Den fangstgruppe, der indeholder symbolets navn (1 som standard).
rules[].kind Symboltypen — et navn (class, struct, enum, namespace, function, method, constant, string …) eller et SymbolKind-tal fra LSP. Styrer gruppering og sortering.
rules[].containerGroup Valgfri fangstgruppe, der bruges som symbolets beholderoplysning (0 = ingen).