Gå til innhold

Funksjonsliste-programtillegget

En oversikt over det gjeldende dokumentets symboler — funksjoner, klasser, metoder, overskrifter og mer — som kan filtreres, i et dokkbart sidepanel. Aktiver et symbol for å føre redigererens markør rett dit.

Hvor du finner det

Vis ▸ Funksjonsliste åpner panelet (det begynner skjult). Listen oppdateres mens du skriver, og følger den aktive fanen.

Å bruke listen

  • Hopp til et symbol — dobbeltklikk på en post, eller merk den og trykk Enter. Redigereren ruller til symbolet, folder det ut hvis det ligger inne i en sammenfoldet fold, og setter markøren der.
  • Filtrer — skriv i feltet øverst for å snevre inn listen etter navn (uten forskjell på store og små bokstaver). I tremodus blir en forelder værende synlig når bare ett av barna dens matcher.
  • Følg markøren — mens du beveger deg rundt i dokumentet, uthevet det symbolet markøren står inne i, i listen.

Visningsvalg

Knappen ⋮ (ved siden av filterfeltet) åpner visningsmenyen:

Valg Virkning
Vis som tre Legg medlemmer under det de hører til (metoder under en klasse, en klasse under navnerommet sitt). Slå det av for å få en flat liste.
Sorter etter posisjon Dokumentets rekkefølge (standard).
Sorter etter navn Alfabetisk (uten forskjell på store og små bokstaver).
Sorter etter type Gruppert etter symboltype (klasser, funksjoner …), og deretter etter navn.

Valgene dine huskes mellom øktene.

Hvor oversikten kommer fra

Panelet henter symboler fra en av to kilder, vist i bunnteksten nederst i panelet:

  • Kilde: språkserver — når en språkserver er satt opp for filens språk, bruker panelet symbolene dens. Det er den nøyaktige og fullstendige oversikten (medlemsvariabler, presis nøsting av klasse → metode, hver symboltype tjeneren melder om).
  • Kilde: mønstre — ellers faller panelet tilbake på de innebygde mønsterreglene som er beskrevet nedenfor.

Dette setter du ikke opp: den mønsterbaserte oversikten kommer fram med det samme, og svarer en språkserver, brukes den av seg selv. Et språk som har en tjener, men ingen medfølgende mønstre, får likevel en oversikt (fra tjeneren).

Språk som støttes

Mønsterreglene lager en oversikt uten noen språkserver (og er det som faller tilbake på når en ikke er tilgjengelig):

Språk Symboler som gjenkjennes
C / C++ navnerom, klasser, strukturer, enumerasjoner, #define-er, funksjoner
Python klasser, funksjoner og metoder (def, async def)
JavaScript / TypeScript klasser, funksjoner, konstanter med pilfunksjoner, klassemetoder
Markdown overskrifter (# … ######)

Listen speiler det språket redigereren har brukt på filen (syntaksfargingen dens). Filer av andre typer viser «Ingen symboloversikt for denne filtypen.»

Mønstre er omtrentlige

Den mønsterbaserte oversikten (Kilde: mønstre) er et beste forsøk og ikke en fullstendig parser: en fri funksjon som er skrevet etter en klassekropp, kan for eksempel bli vist nøstet under den klassen. Vil du ha en presis oversikt, så sett opp en språkserver for språket — da viser panelet symbolene dens (Kilde: språkserver).

Egne regelsett

Regelsettene er alminnelige JSON-filer, så du kan justere dem eller legge til språk uten å bygge på nytt. Det medfølgende settet ligger ved siden av programmet i en function-list/-mappe (én *.json per regelsett); de filene overskrives ved en oppdatering, så behandl dem som skrivebeskyttede eksempler.

Vil du tilpasse dem, så legg dine egne *.json-filer i undermappen rulesets/ i Funksjonsliste-programtilleggets datamappe. En brukerfil der languageIds inneholder et språk, overstyrer det medfølgende regelsettet for det språket.

En regelsettfil ser slik ut:

{
    "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 Én eller flere av redigererens språk-id-er som regelsettet gjelder for (for eksempel cpp eller python). Én fil kan betjene flere.
caseSensitive Om mønstrene matcher med forskjell på store og små bokstaver (true som standard).
rules En ordnet liste av regler; den første regelen som matcher en linje, vinner, ett symbol per linje.
rules[].pattern Et regulært uttrykk i ECMAScript-stil som matches mot én enkelt linje.
rules[].nameGroup Den fangstgruppen som inneholder symbolets navn (1 som standard).
rules[].kind Symboltypen — et navn (class, struct, enum, namespace, function, method, constant, string …) eller et SymbolKind-tall fra LSP. Styrer grupperingen og sorteringen.
rules[].containerGroup En valgfri fangstgruppe som brukes som symbolets opplysning om hva det hører til (0 = ingen).