Ecrire un plugin simple pour
eclipse CDT (C++)
(write a simple plugin for eclipse CDT)
Le développement d'un plugin eclipse, c'est encore
passablement rustique. Heureusement qu'il y a des projets open source
pour s'inspirer! La récupération des objets projet et
répertoire n'était
pas triviale.
Téléchargements : test-popup_1.0.zip
(dézipper dans le répertoire d'installation d'eclipse) -
source: test-popup_src_1.0.zip
Spécification
Il s'agit d'ajouter dans eclipse une action pour lancer une commande
système (shell script) sur le projet courant.
Pour fixer les idées, la commande système sera dans le
répertoire du workspace courant et s'appelera :
action
Pour être utile, le plugin enverra comme arguments :
- le chemin complet du fichier ou du répertoire
- le chemin complet du projet
Dans le cas d'un projet, le plugin n'enverra qu'un seul argument : le
chemin complet du projet.
J'ai implémenté une entrée dans le menu
déroulant du package explorer.
Un bouton dans la barre d'outils n'était pas approprié,
pour la raison suivante.
Il n'y a pas de notion de projet courant dans eclipse. Il y a un ou des
projects ouverts. Il peut y avoir une icone projet
sélectionnée dans le gestionnaire. A partir de là
eclipse déduit une sorte de projet courant.
Il est donc tout indiqué d'ajouter une entrée dans le
menu déroulant du package explorer. Le bonus c'est qu'on peut
aussi lancer une action sur un répertoire ou un fichier.
La sélection simple ou multiple est possible .
J'ai développé avec eclipse 3.2 et un projet Java. Il n'y
a cependant aucune dépendance par rapport à la notion de
projet Java. Cela devrait marcher avec n'importe quelle nature de
projet.
Je dois quand même tester avec eclipse 3.0 et CDT . Ca marche .
eclipse Version: 3.0.2 - Build id: 200503110845
CDT verson 2.1.1
Trouver la documentation
the Eclipse Project FAQ and online
documentation. - http://help.eclipse.org/help31/index.jsp
Plug-ins
and bundles
CDT
Developer Documentation
Prendre "Example Plug-ins" dans Other
downloads for 3.1 dans http://www.eclipse.org/downloads/index.php
Développement
En regardant dans l'interface IProject
http://help.eclipse.org/help31/index.jsp?topic=/org.eclipse.platform.doc.isv/reference/api/org/eclipse/core/resources/IProject.html
je trouve ce qu'il faut faire :
Ipath path currentProject.getDescription()
.getLocation();
Mais comment trouver le projet courant ?
Réponse: il n'y a pas de notion de projet courant dans eclipse !
La difficulté est de retrouver la resource (fichier ou
répertoire) à partir de la sélection. Je n'aurais
rien pu faire sans étudier le source de l'excellent plugin PMD :
http://cvs.sourceforge.net/viewcvs.py/pmd/pmd-eclipse/src/net/sourceforge/pmd/eclipse/actions/PMDCheckAction.java?rev=1.11&view=auto
Les trois interfaces à spécifier en tant que "object
class" dans l'onglet extensions de plugin.xml :
IProject, IFolder, IFile
Là il faut absolument dérouler la valeur true pour le champ adaptable.
Trucs et utilitaires
Pour tester j 'ai utilisé un fichier search contenant ceci (ne
pas oublier de le rendre exécutable ):
gvim $*
Pour chercher où se trouve un package ( par exemple
org.eclipse.ui.texteditor ) ou
une classe :
for f in **/*.jar ; do ;
echo "=== $f ===" ;
unzip -l $f | grep org.eclipse.ui.texteditor ;
done