Function-List-Plugin¶
Eine filterbare Gliederung der Symbole des aktuellen Dokuments — Funktionen, Klassen, Methoden, Überschriften und mehr — in einem andockbaren Seitenpanel. Aktivieren Sie ein Symbol, um die Einfügemarke des Editors direkt dorthin springen zu lassen.
Wo zu finden¶
Ansicht ▸ Funktionsliste öffnet das Dock (es startet ausgeblendet). Die Liste aktualisiert sich beim Tippen und folgt dem aktiven Tab.
Die Liste verwenden¶
- Zu einem Symbol springen — doppelklicken Sie auf einen Eintrag oder wählen Sie ihn aus und drücken Sie Enter. Der Editor scrollt zum Symbol, klappt es auf, falls es in einer eingeklappten Faltung liegt, und setzt die Einfügemarke dorthin.
- Filtern — tippen Sie in das Feld oben, um die Liste nach Namen einzugrenzen (ohne Beachtung der Groß-/Kleinschreibung). Im Baummodus bleibt ein Elternelement sichtbar, wenn eines seiner Kinder passt.
- Der Einfügemarke folgen — während Sie sich im Dokument bewegen, wird das Symbol, das die Einfügemarke umschließt, in der Liste hervorgehoben.
Ansichtsoptionen¶
Die Schaltfläche ⋮ (neben dem Filterfeld) öffnet das Ansichtsmenü:
| Option | Wirkung |
|---|---|
| Als Baum anzeigen | Mitglieder unter ihrem Container verschachteln (Methoden unter einer Klasse, eine Klasse unter ihrem Namespace). Deaktivieren für eine flache Liste. |
| Nach Position sortieren | Dokumentreihenfolge (Standard). |
| Nach Name sortieren | Alphabetisch (ohne Beachtung der Groß-/Kleinschreibung). |
| Nach Art sortieren | Nach Symbolart gruppieren (Klassen, Funktionen, …), dann nach Name. |
Ihre Auswahl wird über Sitzungen hinweg gemerkt.
Woher die Gliederung stammt¶
Das Dock bezieht Symbole aus einer von zwei Quellen, angezeigt in der Fußzeile unten im Panel:
- Quelle: Sprachserver — wenn ein Language Server für die Sprache der Datei konfiguriert ist, verwendet das Dock dessen Symbole. Das ist die genaue, vollständige Gliederung (Membervariablen, präzise Verschachtelung Klasse → Methode, jede vom Server gemeldete Symbolart).
- Quelle: Muster — andernfalls fällt das Dock auf die unten beschriebenen eingebauten Musterregeln zurück.
Sie konfigurieren dies nicht selbst: Die musterbasierte Gliederung erscheint sofort, und sobald ein Language Server antwortet, wird er automatisch verwendet. Eine Sprache mit Server, aber ohne mitgelieferte Muster, erhält trotzdem eine Gliederung (vom Server).
Unterstützte Sprachen¶
Die Musterregeln erzeugen eine Gliederung ohne Language Server (und sind der Rückfall, wenn keiner verfügbar ist):
| Sprache | Erkannte Symbole |
|---|---|
| C / C++ | Namespaces, Klassen, Structs, Enums, #defines, Funktionen |
| Python | Klassen, Funktionen/Methoden (def, async def) |
| JavaScript / TypeScript | Klassen, Funktionen, Arrow-Function-Konstanten, Klassenmethoden |
| Markdown | Überschriften (# … ######) |
Die Liste richtet sich nach der Sprache, die der Editor auf die Datei angewendet hat (ihrer Syntaxhervorhebung). Dateien anderer Typen zeigen „Keine Symbolübersicht für diesen Dateityp“.
Muster sind Näherungen
Die musterbasierte Gliederung (Quelle: Muster) ist eine bestmögliche Annäherung, kein vollständiger Parser: Beispielsweise kann eine freie Funktion nach einem Klassenkörper als unter dieser Klasse verschachtelt angezeigt werden. Für eine präzise Gliederung konfigurieren Sie einen Language Server für die Sprache — das Dock zeigt dann dessen Symbole (Quelle: Sprachserver).
Eigene Regelsätze¶
Die Regelsätze sind einfache JSON-Dateien, sodass Sie sie anpassen oder
Sprachen hinzufügen können, ohne neu zu bauen. Der mitgelieferte Satz liegt
neben der Anwendung in einem Ordner function-list/ (eine *.json pro
Regelsatz); diese Dateien werden bei Updates überschrieben, behandeln Sie sie
also als schreibgeschützte Beispiele.
Zum Anpassen legen Sie Ihre eigene *.json im Unterordner rulesets/ des
Datenverzeichnisses des Function-List-Plugins ab. Eine Benutzerdatei, deren
languageIds eine Sprache enthält, übersteuert den mitgelieferten
Regelsatz für diese Sprache.
Eine Regelsatzdatei sieht so aus:
{
"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" }
]
}
| Feld | Bedeutung |
|---|---|
languageIds |
Eine oder mehrere Editor-Sprach-IDs, für die der Regelsatz gilt (z. B. cpp, python). Eine Datei kann mehrere bedienen. |
caseSensitive |
Ob die Muster unter Beachtung der Groß-/Kleinschreibung greifen (Standard true). |
rules |
Geordnete Liste der Regeln; die erste auf eine Zeile passende Regel gewinnt, ein Symbol pro Zeile. |
rules[].pattern |
Ein regulärer ECMAScript-Ausdruck, der gegen eine einzelne Zeile geprüft wird. |
rules[].nameGroup |
Die Erfassungsgruppe mit dem Symbolnamen (Standard 1). |
rules[].kind |
Die Symbolart — ein Name (class, struct, enum, namespace, function, method, constant, string, …) oder eine LSP-SymbolKind-Nummer. Steuert Gruppierung/Sortierung. |
rules[].containerGroup |
Optionale Erfassungsgruppe als Container-Angabe des Symbols (0 = keine). |