Gå till innehållet

Insticksmodulen Funktionslista

En filtrerbar översikt över det aktuella dokumentets symboler — funktioner, klasser, metoder, rubriker och mer — i en dockningsbar sidopanel. Aktivera en symbol för att hoppa med redigerarens markör direkt dit.

Var du hittar den

Visa ▸ Funktionslista öppnar dockan (den börjar dold). Listan uppdateras medan du skriver och följer den aktiva fliken.

Använda listan

  • Hoppa till en symbol — dubbelklicka på en post, eller markera den och tryck på Enter. Redigeraren rullar till symbolen, viker ut den om den ligger inuti ett ihopvikt område, och placerar markören där.
  • Filtrera — skriv i rutan högst upp för att smalna av listan efter namn (oberoende av skiftläge). I trädläget förblir en förälder synlig när något av dess barn matchar.
  • Följ markören — medan du förflyttar dig i dokumentet färgmarkeras den symbol som omsluter markören i listan.

Visningsalternativ

Knappen ⋮ (bredvid filterrutan) öppnar visningsmenyn:

Alternativ Effekt
Visa som träd Nästlar medlemmar under sin behållare (metoder under en klass, en klass under sin namnrymd). Stäng av det för en platt lista.
Sortera efter position Dokumentordning (standard).
Sortera efter namn Alfabetiskt (oberoende av skiftläge).
Sortera efter sort Gruppera efter symbolsort (klasser, funktioner, …), sedan efter namn.

Dina val kommer ihåg mellan sessioner.

Var översikten kommer ifrån

Dockan hämtar symboler från en av två källor, som anges i foten längst ned i panelen:

  • Källa: språkserver — när en språkserver är konfigurerad för filens språk använder dockan dess symboler. Det är den exakta, fullständiga översikten (medlemsvariabler, precis nästling klass → metod, varje symbolsort servern rapporterar).
  • Källa: mönster — annars faller dockan tillbaka på de inbyggda mönsterregler som beskrivs nedan.

Du konfigurerar inte detta: den mönsterbaserade översikten visas direkt, och om en språkserver svarar används den automatiskt. Ett språk som har en server men inga medföljande mönster får ändå en översikt (från servern).

Språk som stöds

Mönsterreglerna ger en översikt utan någon språkserver (och är reserven när en sådan inte är tillgänglig):

Språk Symboler som känns igen
C / C++ namnrymder, klasser, strukturer, uppräkningar, #define-rader, funktioner
Python klasser, funktioner/metoder (def, async def)
JavaScript / TypeScript klasser, funktioner, konstanter med pilfunktioner, klassmetoder
Markdown rubriker (# … ######)

Listan speglar det språk redigeraren tillämpat på filen (dess syntaxfärgning). Filer av andra typer visar «Ingen symbolöversikt för den här filtypen.»

Mönstren är ungefärliga

Den mönsterbaserade översikten (Källa: mönster) är ett försök efter bästa förmåga, inte en fullständig tolk: till exempel kan en fristående funktion som skrivits efter en klasskropp visas nästlad under den klassen. För en exakt översikt konfigurerar du en språkserver för språket — dockan visar då dess symboler (Källa: språkserver).

Egna regeluppsättningar

Regeluppsättningarna är vanliga JSON-filer, så du kan justera dem eller lägga till språk utan att bygga om. Den medföljande uppsättningen levereras bredvid programmet i en mapp function-list/ (en *.json per regeluppsättning); de filerna skrivs över vid uppdatering, så betrakta dem som skrivskyddade exempel.

För att anpassa lägger du din egen *.json i undermappen rulesets/ i datamappen för insticksmodulen Funktionslista. En användarfil vars languageIds innehåller ett språk åsidosätter den medföljande regeluppsättningen för det språket.

En regeluppsättningsfil ser ut så här:

{
    "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" }
    ]
}
Fält Betydelse
languageIds Ett eller flera av redigerarens språk-id:n som regeluppsättningen gäller för (t.ex. cpp, python). En fil kan betjäna flera.
caseSensitive Om mönstren matchar skiftlägeskänsligt (standard true).
rules Ordnad lista med regler; den första regel som matchar en rad vinner, en symbol per rad.
rules[].pattern Ett reguljärt uttryck i ECMAScript-stil som matchas mot en enskild rad.
rules[].nameGroup Den fångstgrupp som innehåller symbolnamnet (standard 1).
rules[].kind Symbolsorten — ett namn (class, struct, enum, namespace, function, method, constant, string, …) eller ett SymbolKind-nummer från LSP. Styr gruppering och sortering.
rules[].containerGroup Valfri fångstgrupp som används som symbolens behållardetalj (0 = ingen).