OcaIDE : eclipse se met au Caml
Je ne me voyais pas trop utiliser emacs pour le projet Caml de la fac, du coup mon binôme m'a proposé de tester OcaIDE, un plugin eclipse pour OCaml.
Ca fait maintenant quelques jours que je l'utilise, et je dirai que dans l'ensemble c'est plutôt pas mal. La compilation de notre projet ne marche pas, pour d'obscures raisons, mais je le fais dans la console et ça passe bien. Les fonctionnalités que j'utilise pour l'instant sont essentiellement :
- L'auto-indentation, avec F3, qui rale quand on tape des conneries, donc ça aide à les voir ^^
- L'analyse syntaxique, avec les endroits problématiques soulignés en rouge
- Le top-level caml, où on peut tester quelques lignes vite fait, bien pratique
- L'auto-complétion avec ctrl+espace, qui marche quand elle veut mais qui est plutôt pratique dans l'ensemble.
Au final, c'est une vraie solution viable comme alternative au couple emacs/tuareg, et ça pourrait séduire des neophytes (en matière de Caml). Il reste un défaut majeur, à savoir que c'est Eclipse, donc lourd et pas forcément super compacte au niveau interface, mais c'est toujours mieux que le bloc-note ou gedit !
Empilement d’appels…
Dans le reader qu'on fait, quand je veux ajouter une fonctionnalité (ou juste une méthode à la con) dans la couche du reader, voilà ce qu'il faut ajouter (j'ai mis en rouge les méthodes C/C++, en orange les méthodes Java "génériques", et en vert la partie Android)
- La méthode dans l'objet C++ qui s'occupe de faire le rendu (normal)
- La méthode virtuelle dans la classe abstraite de type Reader
- La méthode JNI qui appelle la méthode sur un objet de type Reader
- La méthode Java dans la classe Reader qui utilise le code JNI
- La méthode Java dans l'interface IReader (pour que tout le monde puisse voir la méthode précédemment ajoutée...)
- La méthode Java dans la classe Presenter (car on n'accède pas directement au Reader)
- La méthode qui utilise la méthode du Presenter dans le code, côté Android (enfin !)
Du coup quand je fais ça je réfléchis bien à si j'ai plusieurs méthodes à ajouter, car... La partie en rouge est sous Eclipse sous Linux (et se compile en ligne de commande), la partie en orange sous Netbeans sous Linux, et la partie en vert sous Eclipse sous MacOSX ^^.