Brouillon

 

Cette page est un brouillon pour y faire ce qu'on veut.

Tout ?

Oui, tout !

...

mais surtout des tests ;-)

Widget Tk, coloration syntaxique.

 -----------------------------------------------------------------------------

J'utilise Emacs. Je veux la même coloration de texte dans un Widget text de TK. Il existe ctext de tcllib voir http://tcllib.sourceforge.net/doc/ctext.html Je ne l'ai pas essayé, j'ai pas l'ADSL et c'est pas dans ma distribution. Mais d'après la doc quatre fonctions permettent de déclarer des mots clés ou une expression régulière à colorer.

 ::ctext::addHighlightClass pathName class color keywordlist
 ::ctext::addHighlightClassWithOnlyCharStart pathName class color char
 ::ctext::addHighlightClassForSpecialChars pathName class color charstring
 ::ctext::addHighlightClassForRegexp pathName class color pattern

Que se passe t'il si deux déclarations correspondent à un même mot ? Par exemple un mot clé dans un commentaire. Dans Emacs on colore du texte en fonction du contexte, par exemple pour le shell la déclaration de variable en jaune avant le signe "=" . Ou pour tcl le nom de la fonction en bleu après le mot clé "proc". Avec ces quatre fonctions je ne voie pas comment faire.

Pour toutes ces raisons, j'ai décidé de faire un truc stupide, réinventer la roue.

D'après Introduction à la programmation objet de Vincent Wartelle http://wfr.tcl.tk/255 , j'ai écrit my_tk_colorize.tcl http://pagesperso-orange.fr/philippe.cassignol/box/lib/my_tk_colorize.tcl

    #!/bin/sh
    # the next line restarts using wish \
    exec wish "$0" -- "$@"
    ##my_tk_colorize.tcl
    #09/07/2007

    ###############################################################################
    #
    #                             Class TextColorize
    #
    ###############################################################################

    namespace eval TextColorize {

       variable _props
       # _props(w,start)  indice début traitement
       # _props(w,stop)   indice fin traitement
       # _props(w,time)   heure du dernier traitement
       # _props(w,tags)   liste couleurs des tags
       # _props(w,syntax) syntaxe

       variable _ExpReg

       # words(interpreter,color,offset_start,offset_end,priority)
       # words est une array initialisée sur une liste de mots clées

       # exp(interpreter,color,offset_start,offset_end,priority)
       # exp est une array initialisée sur une liste d'expressions réguliéres

       #---------------------------------------------------------------------------
       #                               sh syntax
       #---------------------------------------------------------------------------

       set words(sh,LightSteelBlue,0,0,0) [ list basename cat cd chmod chown cmp \
		    col cut date dd df dirname echo find ln ls mkdir   \
		    mount mv nice ps pwd read rename rm rmdir shift sleep sort su\
		    tac touchJL