Przejdź do treści

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