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). |