Facebook LinkedIn SourceForge Twitter RSS LastFM
logologo

Patch PHP5 pour le plugin FunctionList de Notepad++

Geoffray Warnants|11/12/2010|13 commentaires

S'il fallait citer un plugin sans lequel le développement sous Notepad++ deviendrait une calamité, mon choix se porterait très certainement sur l'indispensable Function List, un explorateur de code qui vient se greffer à l'éditeur et ainsi l'enrichir d'un outil par défaut absent mais pourtant très prisé des développeurs habitués aux IDE tels Eclipse ou NetBeans.

Bien que l'idée paraisse alléchante, on découvre très vite que dans un environnement PHP orienté-objet, l'intérêt de ce plugin se révèle finalement assez limité, surtout sachant avec quelle précision les IDE actuels peuvent synthétiser la structure d'une classe. Function List se contente lui de lister les fonctions et méthodes de manière dépouillée et surtout sans aucune prise en compte des caractéristiques orientées-objet tels la portée des méthodes, leur niveau de visibilité, les variables membres, les constantes de classes, etc...

J'ai cependant découvert que la configuration par défaut du plugin n'est pas du tout prévue pour exploiter pleinement les possibilités offertes. En effet, le plugin reconnait les différentes structures de n'importe quel langage grâce à une collection d'expressions régulières parfaitement configurables. Celles qui concernent la syntaxe de PHP sont effectivement réduites à leur strict minimum.

Je me suis alors attardé à réécrire une configuration plus adaptée au développement orienté-objet en PHP. Inspiré par l'explorateur de code d'Eclipse, je suis arrivé au résultat suivant :

Avant :
FunctionList
Après :
FunctionList pour PHP
L'Outline View d'Eclipse :
Eclipse Outline View

Voilà donc un lifting rajeunissant qui ne dépaysera pas trop les utilisateurs d'Eclipse pour qui les icônes choisies sont déjà familières. Pour les autres, ou à titre de rappel, en voici la signification :

Classe (class)
Interface (interface)
Fichier inclu (include, include_once, require, require_once, use)
Constante (const, define)
Variable d'instance publique (public)
Variable de classe publique (public static)
Variable d'instance protégée (protected)
Variable de classe protégée (protected static)
Variable d'instance privée (private)
Variable de classe privée (private static)
Méthode d'instance publique (public function) ou fonction globale (function)
Méthode d'instance finale (final public function)
Méthode d'instance abstraite (abstract public function)
Méthode de classe publique (static public function)
Méthode d'instance protégée (protected function)
Méthode d'instance abstraite protégée (abstract protected function)
Méthode d'instance finale protégée (final protected function)
Méthode de classe protégée (static protected function)
Méthode d'instance privée (private function)
Méthode de classe privée (static private function)

Pour l'avoir adoptée depuis quelques temps, je trouve cette configuration plus agréable, même si elle provoque un effet désagréable inhérent aux limitations actuelles du plugin (dans sa version 2.1) : Le tri ne s'applique plus sur l'ensemble de la liste mais séparément sur chaque groupe d'éléments, ce qui est parfois déstabilisant. Si un courageux se sent d'attaque, le code du plugin est en open source (C++) ;-)

Dernière remarque pour ceux qui voudraient améliorer cette configuration, j'ai pu remarquer que le système d'interprétation des expressions régulières se comporte bizarrement. Il semblerait que ce soit une limitation de Scintilla (le composant sur lequel le plugin est basé) qui ne permette malheureusement pas de tirer profit de la pleine puissance des expressions régulières. Ceci alourdi l'écriture des règles et restreint les possibilités.

Pour installer cette configuration, copiez les fichiers FunctionListRules.xml et php.bmp dans le répertoire %APPDATA%/Notepad++/plugins/config ou %INSTALL_DIR%/plugins/Config selon que vous ayez choisi ou non d'utiliser %%APPDATA% lors de l'installation de l'éditeur. Attention que ceci va restaurer les règles par défaut pour tous les autres langages. Pour conserver vos éventuelles personnalisations, ne copiez que le noeud <Language name="PHP"> du fichier XML.

Téléchargement

<<< Retour

Vos commentaires

12 commentaires postés

Bob
19/11/2014 11:22Posté par Bob
Bonjour.
Avec Notepad++ v.6.6.9, j'ai dans le menu Affichage/Liste des fonctions, mais pas de plugin "Function List" dans la liste des "Compléments" (interface en français dans mon cas). Ce dernier plugin est absent de la liste de "Plugin Manager". Est-ce à dire que "Function List" n'existe plus en tant que plugin et intégré à la base de Notepad++ ? Dans ce cas, est-ce que votre patch pour PHP 5.5 est encore effectif ?
Merci d'avance pour votre réponse.
Bob.
pascal
18/02/2013 02:17Posté par pascal
???????
kowal
01/04/2012 14:35Posté par kowal
tout simplement génial, je n'arrivais pas à me dépatouiller avec toutes les expressions régulières

merci beaucoup
rgehan
18/01/2012 12:58Posté par rgehan
Je ne connaissais pas ce plugin, mais j'avoue qu'avec ta "petite modification" je suis pleinement satisfait. Ça manquait réellement à Npp afin qu'il deviennent réellement utilisable.

Merci à toi.
JR
18/01/2012 10:16Posté par JR
Thank you so much for this patch. Would you mind make a javascript version like this, I really hope that. Thanks again! :)
Clemens
20/10/2011 10:48Posté par Clemens
Bonjour, je va attempter en francais:
J'ai installer n++ avec le setting portable, donc il peut pas utiliser %APPDATA%.
Mais pour l'installation du patch il me faut de placer le patch a cette place.

Merci pour l'effort!
Lendormi
06/09/2011 10:31Posté par Lendormi
Hi Geoffray,
This plugin is so awesome. 1 year i use SourceCookifier and i found out this one.
Thank you very much,
Lendormi
Christophe
29/05/2011 10:17Posté par Christophe
Salut Geoffray,

Un travail formidable :) Ton patch fonctionne a merveille ! Félicitation, super boulot !

@Bruno : Thank you for the tip ;)
Bruno
23/12/2010 10:01Posté par Bruno
Really great job! Looking this for so long!

@syndrael: If you are in the same config than me (WinXP, APPDATA mode), FunctionListRules.xml should be placed in %APPDATA%/Notepad++/plugins/config and php.bmp in %INSTALL_DIR%/plugins/Config. If it's still not working, just try to put both files in both directories :p
Geoffray
15/12/2010 07:11Posté par Geoffray
@Syndrael, bienvenue au club des 512Mo! J'ai aussi dû faire mon deuil des IDE sur cette config, d'où le temps consacré à essayer de rendre le développement PHP plus confortable avec Notepad++.
Si rien ne s'affiche, c'est peut-être que le fichier XML est au mauvais endroit. Tu peux le savoir en vérifiant si tu as bien des règles dans "Plugins/Function List/Language Parsing Rules/PHP"

@Francesco, I will have a look to it, stay tuned...
syndrael
14/12/2010 13:49Posté par syndrael
Dans la mesure ou il ne m'affiche rien avant de mettre ton patch et rien après l'avoir mis, je ne peux hélas pas mettre en avant ce plugins qui pourrait vraiment m'être utile.
Mais l'initiative est louable pour ceux qui ont des petits PC quand Eclipse prend trop de rame, et c'est mon cas avec un PC à 512Mo.
S.
Francesco
11/12/2010 13:15Posté par Francesco
Hi Geoffray!
Great job!! Could there be any chance you will port this work for the other NP++ plugin: SourceCookifier? I don't know if it is as much configurable as FunctionList, but if you could have a look, i think it could be useful to many peoples.
Thanks anyway,
Francesco

Réagir à cet article

*


(Ne sera pas publiée, servira uniquement à afficher votre gravatar)


(Lien en dur et dofollow)

zend framework