JEdit, l'éditeur qui tue

Portrait de titouille

Je ne pouvais laisser passer cette merveille Smile

francois: sinon teste http://www.jEdit.org c pas mal Wink

C'est ce que m'a dit FunkC hier soir au milieu d'une discussion.

Alors je vais sur le site, et là, déjà, je lis : # Folding for selectively hiding regions of text.

pour ceux qui ne connaissent pas, le "case folding" est une option de certains éditeurs tels que scite, SEPY, JEdit, HomeSite ou encore VisualStudio.Net ou C#Builder.
Cette fonctionnalité permet de réduire les fonctions (comme on réduirait les enfants d'un noeud sur un treeView) pour ne laisser apparaitre que leur déclaration.
SEPY supporte le case folding, mais il est assez mal implémenté... on peut afficher / masquer pour n'avoir que les en-têtes de fonctions, mais les options sont très limitées... il existe par exemple une option nommée "collapse all" qui est sensée masquer toutes les fonctions ainsi que leur "sous-processus" (if, for, switch, etc... c'est récursif) et remonter jusqu'à la classe.
Seulement, il n'applique la méthode que sur la déclaration de classe... donc si j'affiche la déclaration, tout est comme avant... donc chaque fois que j'ouvre mes fichiers qui font dès fois 7, 800 ou même passé 1000 lignes, je dois masquer chaque fonction au départ pour pouvoir travailler sereinement ensuite...

Et bien exit tout ce process avec JEdit. il a un case folding relativement bien supporté, et surtout les méthodes sont finalisées Smile
Donc, pour ceux qui voudraient s'y essayer (il n'est malheureusement disponible qu'en anglais...) ce que je vous conseille, c'est tout d'abord d'installer le soft, et de suivre les indications de ce site pour installer les plug-in de base (encore une fois, merci François Smile )

Ensuite, allez dans le menu "utilities", "global options", puis choisissez la branche "Editing". Enfin, passez l'option "folding mode" à "indent" (vous pouvez également mettre l'option "edit mode" sur "actionscript" si vous faites du Flash plus qu'autre chose). Validez, reprenez le menu "utilities", puis "buffer options", et repassez l'option "folding mode" à "indent", comme avant.

Vous avez respectivement modifié les propriétés globales, donc pour tous types de fichiers ouverts, ainsi que les propriétés du buffer en cours.
Le mode "indent" se base sur l'indentation du fichier. et ceci est vraiment extra. Avant de charger le soft, j'ai demandé à François si JEdit supportait les "régions" au niveau du case folding. Avec VisualStudio.Net, il est possible de créer des tags un peu spéciaux, qui permettent de regrouper des déclarations ou des méthodes pour former différents ensembles dans une page de code. Puis on peut les afficher et les masquer à sa guise, comme on le fait en standard avec le "case folding". François ne sachant me répondre, du fait qu'il ne connaissait pas les régions, je me suis dit que j'allais essayer, puis on verrai bien.
Le mode "explicit" permet de créer des tags explicites qui indique ou on doit pouvoir faire du case folding... seulement, si on active cette option, on est obligé de mettre un tag explicite pour chaque endroit qu'on veut pouvoir afficher / masquer... ça devient vite lourd et ça surcharge notre code pour rien. C'est pour ça qu'on revient sur le mode "indent", qui lui, est basé sur l'indentation du fichier.

Basé sur l'indentation veut dire que chaque fois que vous indentez (vous rajoutez un espace de tabulation) ça va donner la possibilité de pouvoir masquer cette partie précise...
Donc en jouant un peu sur l'indentation, on peut créer des régions très facilement...

Imaginons, car je ne peux le mettre par écrit sur le site, l'indentation ne fonctionne pas vraiment...
Donc imaginons que nous ayons un fichier de classe actionScript.

La déclaration de classe se fait à la base, sans indentation. J'ai pour habitude de passer l'accolade ouvrante sur la ligne suivante, et de lui donner un niveau d'indentation.

Ensuite, tout le contenu de ma classe se trouve dans cette partie, entre les 2 accolades de la classe, à un niveau d'indentation. Et bien pour tout ce contenu, je le passe à 2 niveau d'indentation. Vous allez vite comprendre pourquoi : Une fois passé à 2 niveau, je remonte tout en haut, dans la partie déclaration de variable, et juste avant le début des déclarations, je place ce code à un niveau d'indentation :

// {{{ variables and controls declarations

Je rappelle que tout ce qui se trouve en dessous est indenté à 2 niveaux, alors que cette ligne ne l'est qu'a un niveau.

ensuite, en dessous des déclarations, j'ai par exemple mon constructeur ainsi que mes fonctions d'initialisation. Alors, une ligne en dessus du constructeur, je rajoute cette ligne, à un niveau d'indentation :

// {{{ initialisation methods

et ainsi de suite, pour grouper sous un commentaire à chaque fois une série de fonctions...

Et vu que le "case folding" est basé sur l'indentation, si on a bien fait les choses, on devrai pouvoir n'afficher que les éléments et les ensembles qu'on veut dans notre page...

On ne dirait pas, mais c'est quelque chose de très important lorsqu'on commence à travailler sur de gros projets... Je ne pourrai pas me passer de ce genre de fonctionnalités.

Enfin, toujours pour les flasheurs, récupérez sur le net ou directement dans le répertoire du programme sepy l'exécutable "flush.exe". Ce dernier permet de lancer la compilation du fichier en cours dans l'environnement Flash en passant par ligne de commande. Placez le par exemple dans un sous-répertoire "tools" du répertoire ou vous avez installé JEdit

Regardez l'explication sur les macros dans le tuto cité plus haut. Puis copiez le code suivant, et créez un fichier flush.bsh avec le contenu suivant :

// This is a recorded macro. First, check over the
// commands to make sure this is what you intended. Then,
// save this buffer, and the macro should appear in the
// Macros menu.
jEdit.saveAllBuffers(view,true);
runCommandInConsole(view,"System","C:DevEditeursjEdit41toolsflush.exe -f"); 

en prenant soin, bien sur, de modifier le chemin d'accès à l'exécutable, et de le placer dans le répertoire C:documents & settings[user].jeditmacros.
Attention, au niveau du chemin d'accès, si vous avez des noms de répertoires de plus de 8 caractères, il faut mettre les 6 premiers et les caractères "~1" à la fin, mode DOS oblige...

Cette macro exécute un "sauvegardez tout" avec demande de confirmation (je ne sais pas comment passer outre...) et lance la compilation du fichier se trouvant ouvert dans l'environnement Flash.

Enfin, une fois que vous avez fait tout ceci, fermez et relancez JEdit. Prenez le menu "utilities", "global options", et le noeud "shortcut". puis dans la liste déroulante, sélectionnez "macros" et trouvez la macro "flush". puis affectez le raccourci clavier que vous voulez. Ainsi, vous pourrez lancer la compilation directement depuis JEdit, sans avoir besoin de chaque fois passer sur Flash.

J'espère que ceux qui maitrisent l'anglais s'y essayeront et me donneront leur avis Smile

N'oubliez pas de lire les commentaires, j'y ai mis quelques informations.





merci pour toutes ces infos, j'ai du mal a imaginer l'as sans sepy Tongue mais je vai essayer de trouver le temps de le tester, je pense que c'est le meilleur moyen de se faire une idée
pour l'instant mes editeur de choix sont :
- sepy pour l'as
- eclipse pour java
- editplus pour php (mais j'en fai pas vraiement)

++

pour numeroter les ligneS d'un fichier

//essai macro num ligne
//
//> The type of the number is: one alphabetic caractere and four digits like
//.
//try using a macro like this:
int number  = 0;
var in      = new BufferedReader(
   new StringReader(
    buffer.getText(0, buffer.Length)));
var out     = new StringBuffer();
for (;;) {
    var line    = in.readLine();
    if (line == null)   break;
    var str = "" + number;
    out.append('N')
        .append("0000".substring(str.length()))
        .append(str)
        .append('	')
        .append(line)
        .append('
');
    number++;
}
in.close();
buffer.remove(0, buffer.Length);
buffer.insert(0, out.toString());
// autre methode
//Utilities>beanShell>Evaluer for the selected lines et entrez :
// new java.text.DecimalFormat("N0000").format(index) + text
// les 2 fonctionnent

Hi,

C'est claire, il tue cet editeur, je m'y met pt a pt en laissant progressivement Ultra Edit de côté.
Par contre, sais tu comment faire pour reconfigurer les couleurs de la coloration syntaxique (qui me pette un peu les yeux - couleurs trop flashy) et les couleurs genre le fond des panels (file browser par exemple) car un gris en arriere plan partout evite de fatiguer les yeux avec trop de luminosité ( surtout pour un ecran LCD).
voila, c'est tout Wink

En te remerciant pour ces longs conseils et tes astuces...
a plus..

Portrait de titouille

ratCrevé, regarde ma réponse à MiKE, ça devrai correspondre à ce que tu recherche. Sinon, tu peux également télécharger le plugin Look And Feel qui permet de changer l'apparence, mais je trouve que ça bouffe des ressources pour rien.
Un plugin trop top, c'est le background, qui te permet d'ajouter une image de fond au textArea. Tu la met en alpha à 10 ou 15 pourcent, et t'as une jolie pin-up (ou autre chose) en fond d'écran, c'est plus agréable pour travailler Smile

Sinon, je ne peux que vous conseiller de lire l'excellent topic lancé par Hermes le messager sur le forum programmation de chez Hardware.fr. C'est le même qui a développé les tutoriaux et explications du lien que je cite dans mon introduction à JEdit (voir au sommet)

Le topic est bien long, mais il est bourré de petites informations assez intéressantes.

Pour info encore, j'ai configuré avec succès JEdit pour n'utiliser plus que lui dans le développement Flash (ou presque).
Avec l'aide des modules AntViewer et AntFarm (et l'installation du sdk Java de sun, sinon AntFarm ben y veut pas Smile ), mtasc et swfmill, je suis maintenant à même de compiler une librairie partagée contenant des clips (swfmill), ainsi que l'interface principale (mtasc) et afficher le tout, tout ça à l'aide d'un simple fichier build.xml bien configuré et envoyé à AntFarm. Au niveau temps de compilation, ça déchire, je peux vous l'assurer. Après, bon, c'est clair qu'on est pas encore à créer des mc comme on le fait dans l'IDE Flash, mais pour un codeur comme moi, c'est un gain de temps considérable, maintenant que c'est en place.

Je ferai surement un ticket prochainement sur la configuration de JEdit pour Mtasc/swfmill/adminTool, si ça interesse des gens

Vala, a+

PS : oui, je modère les commentaires, sinon chaque début de mois, je me retrouve avec 50 commentaires pocker-online, cialis et autres imbécilités Sad

Salut a tous,
Je peux confirmer... Jedit est vraiment terrible, je l'utilise avantageusement maintenant au détriment de Ultra Edit.
Par contre, sais tu comment je peux changer la couleur de la police pour la coloration syntaxique (pour, par exemple, un langage donné (php en ce qui me concerne))
a plus,
miKe

Portrait de titouille

Salut Mike. Pour la coloration syntaxique, tu peux aller dans le menu "Utilities"->"Global Options" et là, tu as un des éléments du treeView nommé "Syntax Highlighting". (je pense que le buffer en cours est pris en compte...) Tu dois pouvoir modifier la coloration à partir de là.
Il existe également un plugin nommé "EditorScheme" qui permet de switcher avec différentes coloration, de créer tes propres modèles, etc... mais je ne l'ai pas testé, à toi de voir Wink

Sinon, oui, JEdit est vraiment "L'EDITEUR", à mon avis... Il y a tellement de possibilités, et on peut coder un peu tout ce qu'on veut, le tout dans une sorte de pseudo-java (pour les macros)

oups dsl, ca vient juste de se rafraichir... ca doit etre filtré Wink
merci pour ta réponse, je viens de la voir,

a plus Wink

je trouve jedit tres bien mais je n'arrive pas a trouver comment ajouter des numeros de lignes dans le fichier du genre
N001
N002
N003... si qqn a une idée

Portrait de titouille

Menu utilities->Global options, dans la hiérarchie, recherche "Gutter" et la première options à cocher se nomme "line numbering" Wink

Enfin, si c'est bien le numéro de ligne dans l'en-tête de colonne que tu veux

Oki, je rajoute quelques informations :

Le support des projets fonctionne. En fait, il existe différentes fenêtres, dont une qui permet de regrouper les éléments d'un projet, pour une utilisation plus simple... Par exemple j'ai 2 répertoires de base affichés, le premier contenant mon framework php et le second contenant l'application Flash, et je peux browser le tout facilement pour travailler.
Je soulignerai également un mode split écran qui permet de faire de la comparaison de fichier, très utile.
3ème point, et important celui-ci : l'intellisence fonctionne Laughing out loud. Il n'est pas spécifique AS, on s'en doute bien, mais on tappe les premières lettres, et un ctrl+b (que j'ai personnellement changé en ctrl+space) me permet d'avoir une liste de variables correspondant au début de ma frappe.

Perso, à plus je l'utilise, à plus je suis conquis Smile on regrettera que l'intellisence n'apparaisse pas automatiquement lorsqu'on tappe un point (.) pour ajouter un nom de propriété, mais peut-être est-ce encore une option que je n'ai pas découverte Smile
En tout cas, JEdit n'a rien à envier aux gros éditeurs, il dispose de tout ce qu'il faut pour pouvoir travailler sur des projets multi-langages en gardant toujours la même interface.

Non NiKO, SEPY ne supporte pas bien le "collapse all"... si tu fais un ctrl+pgDown, il ne fait que le collapse sur la branche "class". Si tu développe "class", tu verra que tout est développé à nouveau... donc le "collapse all" n'est pas correctement supporté... si c'était le cas, au développement de "class", tu devrai avoir tout le reste encore masqué (donc chaque fonctions)...

Samy, pour te répondre : La ça fait 3-4 jours que je bosse avec, et franchement, je suis séduit Smile

Bon, les points négatifs, d'abord, si on doit comparer à SEPY, que j'utilisais avant.
- Les options de SEPY sont valorisées pour l'actionScript, donc exit l'inspecteur de classes, l'api Flash et autres support pour l'ActionScript. Ceci est un véritable point négatif, car si on ne connait pas bien le framework, ou si on utilise abusivement ces options dans SEPY, on sera déçu.
- Le support "coloration syntaxique" est valide pour de l'AS1, mais au niveau AS2 et composants, on peut oublier la coloration... comme avant, c'est un point noir lorsqu'on débute sur les nouveautés MX 2004, ça n'aide pas vraiment...
- Le support des "projets" ne fonctionne pas, ou alors je n'ai pas compris comment l'utiliser.
- La prise en main demande un peu d'habitude
Mis à part ça, franchement, il est presque parfait Smile
Les points positifs sont nombreux, mais je vais essayer de limiter...
Le truc, avec JEdit, c'est que c'est une appli légère sur laquelle tu intègre des modules. Donc tu as bcp de choix. Je dirai que c'est une sorte d'éditeur ultime, pour pouvoir faire du script, n'importe quel script. le nombre de langages supportés est assez impressionnant.
- pas d'auto-complétion (intellisence) au niveau du scripting, ce qui est fort dommage Sad mais bon, faut dire que sur SEPY, il est pas supporté du tonnerre non plus... j'aime bien son coté "je récupère les possibilités selon ce qui est déjà écrit", mais bon, il a tout de même un certain temps de réaction avant d'avoir à disposition ce que j'ai écrit précédemment...
Donc :
- Le case folding en mode indent, c'est trop de la balle Smile je suis en train de ré-indenter tous mes fichiers pour faire des groupes de fonctions (des régions en .Net) et là, c'est trop cool à manipuler Smile
- L'appli est vraiment bien faite, chaque module peut être en mode float ou docking, donc tu peux les attacher à l'appli ou les laisser en éléments externes. L'appli en elle même est totalement customizable. Tu peux créer des nouveaux boutons, des menus, influer sur les menus contextuels des éléments, c'est vraiment poussé pour pouvoir créer l'appli selon TES besoins.
- Tu as une bonne série de modules, dont certains particulièrements intéressants, tels que le module FTP, qui te permet de créer des connexions via ton serveur FTP pour faire de la mise à jour simplifiée.
- Tu peux splitter le textArea pour faire de la comparaison de fichier ou du copier-coller.
- Encore une chose, et pas des moindres, c'est le support des macros... Comme je l'ai expliqué dans le ticket, j'ai récupérer "flush.exe" depuis SEPY, et j'ai créé une macro pour pouvoir enregistrer tous les fichiers, confirmer et lancer la compilation du fichier en cours dans Flash. Le tout associé au raccourci clavier Ctrl+Enter. Donc un flush sepy en amélioré dans le sens ou j'enregistre tous les fichiers en cours avant de flusher... mais ça demande par contre une validation de l'enregistrement global... Mais bon, maintenant, il faut savoir regarder un peu plus loin... browse de fichier php dans le navigateur, exécution de batch, etc... le coté "automatisme" est vraiment poussé. Après avoir créé tes macros, tu leur crée des boutons, tu les places dans des menus personnalisés, tu leur attribue des raccourcis clavier...
- arf, j'allais oublier... auto-complétion (intellisence) au niveau des langages à balises
Perso, c'est l'éditeur open-source le plus abouti que j'aie vu (j'ai bien dit open-source). Il manque certains modules plus spécifiques à Flash, mais qui sait, peut-être que quelqu'un est en ce moment même en train de développer un browser de classe, ou que sais-je Smile Au niveau de l'aspect visuel, je trouve que ça ressemble bcp aux grosses usines à gaz genre VisualStudio ou C#Builder. J'ai mon explorateur de fichiers à gauche, avec un 2ème onglet concerant les erreurs, et une fenêtre de sortie au fond, pour voir les résultats éventuels de commandes exécutées.
Il faut bien se rendre compte qu'il n'est pas fait pour faire du Flash spécifiquement. Mais si tu fais du php, un peu de C# de temps en temps, du python, de l'actionScript, du java une fois chaque tremblement de terre... que tu crée des sites web et que t'as besoin d'un bon outil gratuit, contenant toute une série de modules intérssants à l'utilisation, ben moi je vote oui Smile

Maintenant, il est clair que ce n'est pas un outil autant évolué pour Flash que SEPY, mais ce n'est pas sa vocation première. J'ai du faire du php durant ces quelques jours, et j'ai eu bcp de plaisir à utiliser JEdit, alors qu'avant je travaillais toujours avec ConTEXT. Perso, je suis conquis Smile

hello Smile

c'est sur que sepy est encore asser leger mais faut lui laisser du temps et je pense qu'il est tres bien pour l'as
sinon j'ai debuter un peu en java et j'ai pluto accrocher sur eclipse mais je reste ouvert a tout editeur Tongue, le probleme c'est que j'ai pas du tout le temp de tester un editeur en profondeur en ce moment Tongue
ca serait sympa si tu peux donner un avis general quand tu l'aura explorer plus en profondeur Wink

++

Sepy comprend tres bien le expand-all et collapse-all avec ctrl+pageup et ctrl+pdown Smile