Přeskočit obsah

Zásuvný modul Seznam funkcí

Filtrovatelný přehled symbolů aktuálního dokumentu — funkcí, tříd, metod, nadpisů a dalších — v ukotvitelném postranním panelu. Aktivací symbolu skočíte kurzorem editoru rovnou na něj.

Kde to najdete

Zobrazit ▸ Seznam funkcí otevře dok (na začátku je skrytý). Seznam se během psaní obnovuje a sleduje aktivní kartu.

Práce se seznamem

  • Skok na symbol — dvojklikněte na položku, nebo ji vyberte a stiskněte Enter. Editor se na symbol posune, rozloží jej, pokud sedí uvnitř složené oblasti, a umístí tam kurzor.
  • Filtrování — psaním do pole nahoře zúžíte seznam podle názvu (bez ohledu na velikost písmen). Ve stromovém režimu zůstává nadřazená položka viditelná, když odpovídá kterýkoli z jejích potomků.
  • Sledování kurzoru — jak se pohybujete po dokumentu, zvýrazní se v seznamu symbol, který kurzor obklopuje.

Volby zobrazení

Tlačítko ⋮ (vedle filtrovacího pole) otevře nabídku zobrazení:

Volba Účinek
Zobrazit jako strom Vnoří členy pod jejich kontejner (metody pod třídu, třídu pod její jmenný prostor). Vypněte pro plochý seznam.
Seřadit podle pozice Pořadí v dokumentu (výchozí).
Seřadit podle názvu Abecedně (bez ohledu na velikost písmen).
Seřadit podle druhu Seskupí podle druhu symbolu (třídy, funkce, …) a pak podle názvu.

Vaše volby se pamatují mezi relacemi.

Odkud přehled pochází

Dok čerpá symboly z jednoho ze dvou zdrojů, uvedeného v zápatí na spodku panelu:

  • Zdroj: jazykový server — je-li pro jazyk souboru nastaven jazykový server, použije dok jeho symboly. Tohle je přesný, úplný přehled (členské proměnné, precizní vnoření třída → metoda, každý druh symbolu, který server hlásí).
  • Zdroj: vzory — jinak se dok vrátí k vestavěným pravidlům se vzory popsaným níže.

Nic se k tomu nenastavuje: přehled ze vzorů se objeví okamžitě, a když odpoví jazykový server, použije se automaticky. Jazyk, který má server, ale žádné dodávané vzory, přehled přesto dostane (od serveru).

Podporované jazyky

Pravidla se vzory vytvoří přehled bez jakéhokoli jazykového serveru (a jsou záložním řešením, když žádný není k dispozici):

Jazyk Rozpoznávané symboly
C / C++ jmenné prostory, třídy, struktury, výčty, #define, funkce
Python třídy, funkce a metody (def, async def)
JavaScript / TypeScript třídy, funkce, konstanty se šipkovými funkcemi, metody tříd
Markdown nadpisy (# … ######)

Seznam odráží jazyk, který editor souboru přiřadil (jeho obarvování syntaxe). Soubory jiných typů zobrazí »Pro tento typ souboru není přehled symbolů.«

Vzory jsou přibližné

Přehled ze vzorů (Zdroj: vzory) je nejlepší možný odhad, nikoli plnohodnotný parser: například volná funkce napsaná za tělem třídy se může zobrazit vnořená pod onu třídu. Pro přesný přehled nastavte pro daný jazyk jazykový server — dok pak zobrazí jeho symboly (Zdroj: jazykový server).

Vlastní sady pravidel

Sady pravidel jsou obyčejné soubory JSON, takže je můžete upravovat nebo přidávat jazyky bez nového sestavení. Dodávaná sada je vedle aplikace ve složce function-list/ (jeden *.json na sadu pravidel); tyto soubory se při aktualizaci přepisují, proto s nimi zacházejte jako s příklady jen ke čtení.

Pro přizpůsobení vložte vlastní *.json do podsložky rulesets/ v datovém adresáři modulu Seznam funkcí. Uživatelský soubor, jehož languageIds daný jazyk obsahuje, dodávanou sadu pravidel pro tento jazyk přebije.

Soubor sady pravidel vypadá takto:

{
    "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" }
    ]
}
Pole Význam
languageIds Jedno nebo více id jazyků editoru, pro které sada pravidel platí (například cpp, python). Jeden soubor jich může obsloužit několik.
caseSensitive Zda vzory rozlišují velikost písmen (výchozí true).
rules Uspořádaný seznam pravidel; vyhrává první pravidlo, které řádku odpovídá, jeden symbol na řádek.
rules[].pattern Regulární výraz ECMAScriptu porovnávaný s jedním řádkem.
rules[].nameGroup Zachycená skupina, která nese název symbolu (výchozí 1).
rules[].kind Druh symbolu — název (class, struct, enum, namespace, function, method, constant, string, …) nebo číslo SymbolKind podle LSP. Řídí seskupování a řazení.
rules[].containerGroup Volitelná zachycená skupina použitá jako podrobnost o kontejneru symbolu (0 = žádná).