Aller au contenu

Extension Liste des fonctions

Un plan filtrable des symboles du document courant — fonctions, classes, méthodes, titres et plus encore — dans un panneau latéral ancrable. Activez un symbole pour amener directement le curseur de l'éditeur sur lui.

Où la trouver

Affichage ▸ Liste des fonctions ouvre le panneau (masqué au départ). La liste se rafraîchit pendant la frappe et suit l'onglet actif.

Utiliser la liste

  • Sauter à un symbole — double-cliquez sur une entrée, ou sélectionnez-la et appuyez sur Enter. L'éditeur défile jusqu'au symbole, en le dépliant s'il se trouve dans un repli fermé, et y place le curseur.
  • Filtrer — tapez dans le champ en haut pour restreindre la liste par nom (insensible à la casse). En mode arborescence, un parent reste visible si l'un de ses enfants correspond.
  • Suivre le curseur — pendant vos déplacements dans le document, le symbole qui englobe le curseur est mis en évidence dans la liste.

Options d'affichage

Le bouton (à côté du champ de filtre) ouvre le menu d'affichage :

Option Effet
Afficher en arborescence Imbrique les membres sous leur conteneur (méthodes sous une classe, classe sous son espace de noms). Désactivez-le pour une liste plate.
Trier par position Ordre du document (défaut).
Trier par nom Alphabétique (insensible à la casse).
Trier par genre Regroupe par genre de symbole (classes, fonctions, …), puis par nom.

Vos choix sont mémorisés entre les sessions.

D'où vient le plan

Le panneau tire ses symboles de l'une de deux sources, indiquée dans le pied de page en bas du panneau :

  • Source : serveur de langage — quand un serveur de langage est configuré pour le langage du fichier, le panneau utilise ses symboles. C'est le plan précis et complet (variables membres, imbrication exacte classe → méthode, chaque genre de symbole rapporté par le serveur).
  • Source : motifs — sinon, le panneau se rabat sur les règles à motifs intégrées décrites ci-dessous.

Vous n'avez rien à configurer : le plan à base de motifs apparaît instantanément, et si un serveur de langage répond, il est utilisé automatiquement. Un langage qui a un serveur mais pas de motifs fournis obtient quand même un plan (du serveur).

Langages pris en charge

Les règles à motifs produisent un plan sans aucun serveur de langage (et servent de repli quand aucun n'est disponible) :

Langage Symboles reconnus
C / C++ espaces de noms, classes, structs, enums, #define, fonctions
Python classes, fonctions/méthodes (def, async def)
JavaScript / TypeScript classes, fonctions, constantes de fonctions fléchées, méthodes de classe
Markdown titres (#######)

La liste reflète le langage que l'éditeur a appliqué au fichier (sa coloration syntaxique). Les fichiers d'autres types affichent « Aucun plan de symboles pour ce type de fichier. »

Les motifs sont approximatifs

Le plan à base de motifs (Source : motifs) est un meilleur effort, pas un analyseur complet : par exemple, une fonction libre écrite après le corps d'une classe peut apparaître imbriquée sous cette classe. Pour un plan précis, configurez un serveur de langage pour le langage — le panneau affiche alors ses symboles (Source : serveur de langage).

Jeux de règles personnalisés

Les jeux de règles sont de simples fichiers JSON ; vous pouvez donc les ajuster ou ajouter des langages sans recompiler. Le jeu fourni est livré à côté de l'application dans un dossier function-list/ (un *.json par jeu de règles) ; ces fichiers sont écrasés à la mise à jour, traitez-les donc comme des exemples en lecture seule.

Pour personnaliser, déposez vos propres *.json dans le sous-dossier rulesets/ du répertoire de données de l'extension Liste des fonctions. Un fichier utilisateur dont languageIds inclut un langage remplace le jeu de règles fourni pour ce langage.

Un fichier de jeu de règles ressemble à ceci :

{
    "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" }
    ]
}
Champ Signification
languageIds Un ou plusieurs identifiants de langage de l'éditeur auxquels le jeu de règles s'applique (p. ex. cpp, python). Un fichier peut en servir plusieurs.
caseSensitive Indique si les motifs sont sensibles à la casse (défaut true).
rules Liste ordonnée de règles ; la première règle qui correspond à une ligne gagne, un symbole par ligne.
rules[].pattern Une expression régulière ECMAScript confrontée à une seule ligne.
rules[].nameGroup Le groupe de capture contenant le nom du symbole (défaut 1).
rules[].kind Le genre de symbole — un nom (class, struct, enum, namespace, function, method, constant, string, …) ou un numéro SymbolKind LSP. Contrôle le regroupement/tri.
rules[].containerGroup Groupe de capture optionnel utilisé comme détail de conteneur du symbole (0 = aucun).