COLORATION SYNTAXIQUE

cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 - 20 sept. 2006 à 16:56
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 - 5 mars 2008 à 08:48
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/39629-coloration-syntaxique

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
5 mars 2008 à 08:48
Fonctionne nikel chez moi...
syntaxerror99 Messages postés 2 Date d'inscription dimanche 24 février 2008 Statut Membre Dernière intervention 5 mars 2008
5 mars 2008 à 07:55
salut,
excellent travail !
le project vbp marche trés bien mais l'app (.exe) ne marche pas , car le vbscript.dll (ver 5.5) est ecrit dans le regedit :"..\system32\vbscript.dll\3"
l'app cherche le fichier "3" et aficher un msg d'erreur .
est-ce qu'il ya une solution ?
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
25 janv. 2007 à 16:12
Bonjour à tous !

Une mise à jour est en préparation : nouvelles fonctions, code revu, etc...

Cordialement,
Cacophrène
violent_ken Messages postés 1812 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 26 octobre 2010 2
11 déc. 2006 à 19:16
Salut, je trouve cette source excellente.
Je vais probablement l'utiliser telle quelle dans mon prochain projet (si je décide d'inclure la fonctionnalité qui requiert ce controle).

Bon boulot (10/10) !
@+
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
22 sept. 2006 à 18:47
Salut !

Au départ, cette source n'avait pas pour but d'être complète. Elle devait juste illustrer une méthode de coloration qui mime celle de l'IDE de VB, dont il n'existait pas d'exemple sur le site. Suite à vos commentaires, je l'ai étoffée pour en faire un contrôle utilisateur maniable. "Les" bugs signalés par Warning sont au nombre d'un seul. Et encore, ce n'est pas un bug. Cela vient d'un mauvais ajustement de la valeur de RightMargin, qui conduit le RichTextBox à renvoyer à la ligne les chaînes de caractères les plus longues, d'où :

1. Il y a une ligne qui n'a qu'un guillemet ouvrant -> pas reconnue comme chaîne par le motif d'expression rationnelle
2. Eventuellement une ou plusieurs lignes sans guillemets -> idem
3. Une ligne avec un guillemet fermant seul -> idem

Pour corriger ce problème, il faut augmenter RightMargin. J'ai quant à moi repéré un bug que je pense avoir résolu dans cette mise à jour. Cependant, si vous en trouvez d'autres, n'hésitez pas à me le faire savoir. Cependant, la rentrée de la fac va interrompre pour pas mal de temps mes mises à jour sur cette source. Cela ne veut pas dire que je ne ferai plus de mises à jour. Cela veut dire que ce ne sera pas pour tout de suite. J'ai déjà beaucoup modifié ce code en peu de temps, alors que je ne m'étais pas fixé ce but. Je continuerai selon les possibilités.

Cordialement,
Cacophrène

PS : Bonne idée de lier les sources, l'une donnant du HTML, l'autre du RTF
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
22 sept. 2006 à 16:30
¨Pour les options, c'est mieux.
Si tu arrives à corriger tes bugs signalés par Warning, je te mettrai en lien dans ma source
pour que les membres puissent liées les deux sources (pourrait être sympa) ;)

++
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
21 sept. 2006 à 20:38
Que ce soit pas super ou pratique, tant que la syntaxe est correcte, la coloration devrait l'être aussi. Mais comme c'est réglable, pas de problèmes alors.
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
21 sept. 2006 à 19:58
Bah de deux choses l'une : pour la clarté, les très longues lignes c'est pas super. Mais ok c'est pratique. Pour mon contrôle utilisateur, je n'ai pas repris la propriété RightMargin du RichTextBox. Il suffit de la modifier en conséquence. Mais alors ça posera problème pour la variable bBuffer et SendMessage.

En attente de mieux...

Cacophrène
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
21 sept. 2006 à 19:51
Pour moi une chaine très longue peut être écrite sur une même ligne, et ça reste une chaine écrite correctement.
Le & _ c'est vraiment pour "mettre en forme", mais pour moi ce pb reste un bug car malheureusement ton contrôle ne supporte pas les très longues chaines.

Je vais peut-être bientôt poster une source de coloration syntaxique dite "par blocs" dans quelques jours.

Je ne m'en sert que pour afficher du code, pas pour l'éditer (enfin si mais l'édition est volontairement limité aux chaines de caractères) car VBReFormer n'a pour l'instant pas le besoin d'éditer le code.

Je vais donc essayer de proposer un truc potable en édition.

Par contre ça risque de pas être super rapide. Faut voir. Je réflechi a tout ça.
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
21 sept. 2006 à 19:35
En fait, j'étais étonné que des mots-clefs puissent être colorés à l'intérieur de chaînes bien délimitées car dans le masque l'ordre est toujours (commentaire|chaine|...|mots-clefs). Donc logiquement si un mot-clef est dans une chaine il a déjà fait l'objet d'une coloration en tant que chaîne. Voilà.

@+
Cacophrène
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
21 sept. 2006 à 19:25
Salut !

Ce problème n'est pas un problème de coloration. A la base c'est un problème de mise en page. En effet, la chaîne que tu me donnes est longue et une partie est renvoyée à la ligne. En conséquence, le guillemet fermant n'apparaît pas sur la première ligne, donc le tout n'est pas reconnu comme une chaîne ! Par contre, si tu prends la peine d'écrire cette chaîne correctement, en utilisant des séquences " & _, le problème disparaît. Pour remédier à ce problème, il faut changer la valeur de la marge droite (pour éviter ce genre de retours à la ligne intempestifs).

Merci pour l'intérêt que tu portes à ma source,
Cacophrène
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
21 sept. 2006 à 18:29
Exemple (ça vient de ton code ;)) :

PATTERN_Keywords = "\b(?:Private|Public|Function|Sub|Property|[LGS]et|(?:Re)?Dim|Preserve|If|End|Else(?:If)?|Then|As|Integer|Long|Byte|String|Boolean|Currency|Double|Any|While|Wend|Do|Loop|For|To|Next|Step|Const|Nothing|Is|Or|And|Not|Xor|Option|Explicit|Declare|Lib|Alias|ByVal|ByRef|With|Select|Case|Open|Close|On (?:Local )?Error(?: Resume Next|Output|Input|GoTo (?:0))?)\b"
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
21 sept. 2006 à 17:45
Salut !

Des mots-clefs colorés dans une chaîne ? Oh c'est curieux ça... Tu peux me donner un exemple ? Je veux bien corriger tous les bugs mais encore faut-il que je les trouve. Et je n'ai pas observé ce truc-là, même en essayant de taper un truc comme "Private Sub Quelquechose" ou en modifiant une chaîne pour y ajouter des mots-clefs. Peux-tu détailler stp ?

Cordialement,
Cacophrène

PS : Pour ma part j'ai repéré un bug assez ennuyeux que je n'ai pas encore cherché à résoudre. Quand on utilise la touche d'effacement sur une ligne et que l'on passe tout un texte à la ligne précédente, la couleur n'est pas effacée alors qu'elle devrait l'être.
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
21 sept. 2006 à 17:20
Salut Cacophrene, en re-testant ta source je me suis aperçu qu'il y avait tout de même un nombre assez considérable de bugs. Par exemple des mots clés qui se colorent dans une chaine de caractère après modification de la chaine, quelques petits trucs comme ça qui font que ta source n'est pas réellement utilisable dans un projet important.
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
21 sept. 2006 à 15:48
Juste une précision : la barre que j'ai mise à gauche servira pour un affichage ultérieur des numéros de ligne. Cependant, cette option n'est pas encore disponible (il ne se passe donc rien au niveau de cette barre !).

Cordialement,
Cacophrène
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
21 sept. 2006 à 09:21
Salut !

@Mortalino : mise à jour effectuée dans ce sens. Désormais, l'utilisateur peut modifier les motifs (avec un contrôle, malgré tout, pour éviter des motifs invalides), les couleurs, et quelques autres paramètres. J'ai aussi ajouté des événements, car il n'y en avait aucun pour l'instant. Je verrais peut-être prochainement pour l'ajout d'une barre latérale avec la numérotation des lignes. Je ne garantis rien. Question de temps.

Cordialement,
Cacophrène
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 sept. 2006 à 09:19
je pense que tu as une petite idée ;)
Ma class était sympa, la sienne est excellente et optimisée !!

++
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
21 sept. 2006 à 07:43
Je serais curieux de savoir qui est ce 'qqun'...
mortalino Messages postés 6786 Date d'inscription vendredi 16 décembre 2005 Statut Membre Dernière intervention 21 décembre 2011 18
21 sept. 2006 à 00:13
Salut,

regarde ma source, je l'ai posté récemment, elle possède également qques options qui évolueront dans les prochaines MAJ.

La prochaine MAJ n'aura rien à voir, puisque ma source est devenue une source "commune", 'qqun' (surprise..et patience) à complêtement repris ma class, son boulot est parfait. (des petites choses à régler sur d'autres détails).

Pour l'exemple :
http://www.vbfrance.com/codes/COLORATION-SYNTAXIQUE-LANGAGE-VB-FORMAT-HTML-POUR-FORUM_39466.aspx

Essaie d'intégrer la possibilité à l'utilisateur de choisir ses propres couleurs, le choix des mots clés, etc...

++ et bonne continuation ;)
Cacophrene Messages postés 251 Date d'inscription lundi 29 mars 2004 Statut Membre Dernière intervention 4 mars 2008 1
20 sept. 2006 à 20:02
Salut !

En effet, cette méthode n'est pas nouvelle. Je n'ai en revanche trouvé aucun exemple de ce type sur VBFrance (mais peut-être ai-je mal regardé ?). C'est la raison pour laquelle je l'ai proposée.

Ce que je ne savais pas, en revanche, c'est que cette source provoquerait un débat passionné au sujet de la complexité de son algorithme. Pourtant, il n'y a rien de particulier là-dedans. Je colore une ligne seulement, et pas tout le texte. Cette ligne à une taille bornée, un nombre de caractères bornés... alors pourquoi l'algorithme associé n'a-t-il pas une complexité bornée ?

Cordialement,
Cacophrène
cs_Warning Messages postés 516 Date d'inscription samedi 3 février 2001 Statut Membre Dernière intervention 24 octobre 2006 2
20 sept. 2006 à 19:48
Ce n'est pas nouveau de colorer QUE ce qu'on voit, c'est à dire seulement les lignes et caractères de ligne affichée. C'est ce que font la plupart des IDE (VB6, Visual Studio, etc).

En tout cas source sympa.
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
20 sept. 2006 à 17:01
sympa...

comportement étrange, non systématique :
Je me place en debut ou milieu de ligne, j'ajoute une ligne, et je perd mes couleurs

Select et Case ne sont pas colorés

pas le temps de tester plus loin