Liste des fonctions

La liste des fonctions est un panneau de l’interface affichant toutes les fonctions ou méthodes du fichier ouvert. Il est accessible via le menu Affichage -> Liste des Fonctions.

Liste des fonctions

La barre du menu permet de filtrer les résultats, de changer l’ordre d’affichage (par défaut dans l’ordre du fichier, ils peuvent être triés par ordre alphabétique) et de recharger la liste.

Double-cliquer sur un élément de la liste permet de naviguer jusqu’à son emplacement dans le fichier.

Introduit en juin 2013, à la version 6.4, les langages de programmation reconnus par défaut sont régulièrement mis à jour, et comprennent : PHP, C, C++, C#, Java, XML, Batch, INI, JS, Perl, Python, Bash et NSIS.

Définition des languages

Le fichier de configuration des languages est situé à l’emplacement :

%APPDATA%\Notepad++\functionList.xml

Le fichier est situé dans le dossier de Notepad++ en cas d’installation via un package.

Chaque language y est défini par un noeud <parser> ayant comme attributs :

Les noeuds <parser> contiennent :

Exemple de parseur pour le Python :

<parser id="python_function" displayName="Python class" commentExpr="(#.*?$|'''.*?('''|\Z))">
    <classRange mainExpr="(?&lt;=^class ).*?(?=\n\S|\Z)">
        <className>
            <nameExpr expr="\w+(?=[\(|:])"/>
        </className>
        <function mainExpr="(?&lt;=def ).+?(?=:)">
            <functionName>
                <funcNameExpr expr=".*"/>
            </functionName>
        </function>
    </classRange>
    <function mainExpr="(?&lt;=def ).+?(?=:)">
        <functionName>
            <funcNameExpr expr=".*"/>
        </functionName>
    </function>
</parser>

Dans le cas d’un parseur avec function et classRange, le moteur traitera d’abord les zones de classes, puis les fonctions hors-classes.

Les noeuds <function> et <classRange> peuvent avoir les attributs :

<function> et <classRange> peuvent contenir des noeuds <functionName> ou <className> pour extraire plus précisément les noms de fonction ou classe du résultat de la mainExpr. S’ils sont absents, la mainExpr entière sert de nom de fonction, et le nom de classe n’est pas utilisé.

Chaque <nameExpr> sert à extraire un nom de plus en plus précis que le résultat précédent via son expression régulière expr. Tant qu’un noeud nameExpr donne un résultat, le noeud suivant est appliqué à ce résultat.

Pour finir, le noeud <parser> est associé à un language existant dans Notepad++ via un noeud <association> en début de fichier. Par exemple pour python :

<association langID="22" id="python_function"/>

L’id correspond au parseur, et le language à associer est déterminé au moyen de l’un des attributs suivants :