Wtyczka Lista funkcji¶
Filtrowalny zarys symboli bieżącego dokumentu — funkcji, klas, metod, nagłówków i innych — w dokowanym panelu bocznym. Aktywuj symbol, aby przeskoczyć kursorem edytora prosto do niego.
Gdzie ją znaleźć¶
Widok ▸ Lista funkcji otwiera dok (startowo ukryty). Lista odświeża się podczas pisania i podąża za aktywną kartą.
Korzystanie z listy¶
- Skok do symbolu — kliknij wpis dwukrotnie albo wybierz go i naciśnij Enter. Edytor przewija do symbolu, rozwijając go, jeśli siedzi w zwiniętym foldzie, i ustawia tam kursor.
- Filtrowanie — wpisz w pole u góry, aby zawęzić listę po nazwie (bez rozróżniania wielkości liter). W trybie drzewa rodzic pozostaje widoczny, gdy pasuje którekolwiek z jego dzieci.
- Podążanie za kursorem — gdy poruszasz się po dokumencie, symbol obejmujący kursor jest podświetlany na liście.
Opcje widoku¶
Przycisk ⋮ (obok pola filtra) otwiera menu widoku:
| Opcja | Efekt |
|---|---|
| Pokaż jako drzewo | Zagnieżdża składowe pod ich kontenerem (metody pod klasą, klasa pod przestrzenią nazw). Wyłącz dla płaskiej listy. |
| Sortuj według pozycji | Kolejność dokumentu (domyślnie). |
| Sortuj według nazwy | Alfabetycznie (bez rozróżniania wielkości liter). |
| Sortuj według rodzaju | Grupuj według rodzaju symbolu (klasy, funkcje, …), potem po nazwie. |
Twoje wybory są zapamiętywane między sesjami.
Skąd bierze się zarys¶
Dok czerpie symbole z jednego z dwóch źródeł, pokazanych w stopce na dole panelu:
- Źródło: serwer języka — gdy dla języka pliku skonfigurowany jest serwer języka, dok używa jego symboli. To dokładny, kompletny zarys (zmienne składowe, precyzyjne zagnieżdżenie klasa → metoda, każdy rodzaj symbolu raportowany przez serwer).
- Źródło: wzorce — w przeciwnym razie dok wraca do wbudowanych reguł wzorców opisanych niżej.
Niczego tu nie konfigurujesz: zarys ze wzorców pojawia się natychmiast, a jeśli serwer języka odpowie, jest używany automatycznie. Język mający serwer, ale bez dołączonych wzorców, i tak dostaje zarys (z serwera).
Obsługiwane języki¶
Reguły wzorców tworzą zarys bez żadnego serwera języka (i są rezerwą, gdy serwer jest niedostępny):
| Język | Rozpoznawane symbole |
|---|---|
| C / C++ | przestrzenie nazw, klasy, struktury, enumy, #define'y, funkcje |
| Python | klasy, funkcje/metody (def, async def) |
| JavaScript / TypeScript | klasy, funkcje, stałe z funkcjami strzałkowymi, metody klas |
| Markdown | nagłówki (# … ######) |
Lista odzwierciedla język, jaki edytor zastosował do pliku (jego kolorowanie składni). Pliki innych typów pokazują „Brak zarysu symboli dla tego typu pliku."
Wzorce są przybliżone
Zarys oparty na wzorcach (Źródło: wzorce) to najlepsze przybliżenie, nie pełny parser: na przykład wolna funkcja zapisana za ciałem klasy może zostać pokazana jako zagnieżdżona w tej klasie. Dla precyzyjnego zarysu skonfiguruj serwer języka dla danego języka — dok pokaże wtedy jego symbole (Źródło: serwer języka).
Własne zestawy reguł¶
Zestawy reguł to zwykłe pliki JSON, więc można je modyfikować albo dodawać
języki bez przebudowy. Dołączony zestaw leży obok aplikacji w folderze
function-list/ (jeden *.json na zestaw); te pliki są nadpisywane przy
aktualizacji, więc traktuj je jako przykłady tylko do odczytu.
Aby dostosować, wrzuć własny *.json do podfolderu rulesets/ katalogu
danych wtyczki Lista funkcji. Plik użytkownika, którego languageIds obejmuje
dany język, nadpisuje dołączony zestaw dla tego języka.
Plik zestawu reguł wygląda tak:
{
"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 | Znaczenie |
|---|---|
languageIds |
Jeden lub więcej identyfikatorów języka edytora, których dotyczy zestaw (np. cpp, python). Jeden plik może obsłużyć kilka. |
caseSensitive |
Czy wzorce rozróżniają wielkość liter (domyślnie true). |
rules |
Uporządkowana lista reguł; wygrywa pierwsza reguła pasująca do linii, jeden symbol na linię. |
rules[].pattern |
Wyrażenie regularne ECMAScript dopasowywane do pojedynczej linii. |
rules[].nameGroup |
Grupa przechwytująca z nazwą symbolu (domyślnie 1). |
rules[].kind |
Rodzaj symbolu — nazwa (class, struct, enum, namespace, function, method, constant, string, …) albo numer SymbolKind z LSP. Steruje grupowaniem/sortowaniem. |
rules[].containerGroup |
Opcjonalna grupa przechwytująca użyta jako kontener symbolu (0 = brak). |