Fichier colorisation.txt créer
# 
# modif :
# 22/08/00 (diam) : création


Ce qui suit est un exemple de l(utilisation des procedure de
colorisation par le mode CC (lequel à besoins également de coloré les
commentaire de type C, donc multi ligne. 



# # Cette procédure recolorise l'ensemble du fichier
# proc refresh_colors {} {
#    
#    global MODE stead
#    # On commence par effacer les couleur existantes
#    cancel_colors
#    # on colorise l'ecran...
#    te:cmd:coloriseStruct .main.t $stead($MODE,colorSpec) screen
#    # On colorise tout le fichier...
#    te:cmd:coloriseStruct .main.t $stead($MODE,colorSpec) all
#    # LA LIGNE SUIVANTE EST A AMELIORER
#    te:cmd:colorise $stead(comment_Cpat) all $stead(commentColor)
#    
# } ;# endproc refresh_colors
# 
# # Cette procédure supprime les couleurs
# proc cancel_colors {} {
#    global MODE stead
#    foreach pat $stead($MODE,colorSpec) {
#       te:colours:clear_foregroundStruct .main.t all [lindex $pat 1]
#    }
#    # LA LIGNE SUIVANTE EST A AMELIORER (créer un nouveau type de struc)
#    jedit:colours:clear_foreground  all $stead(commentColor)
# } ;# endproc cancel_colors
# 
# # la procedure suivante permet de colorier la ligne précérente apres 
# # chaque appuie sur return.
# # 
# proc jedit:post_returnkey_hook {{text .main.t}} {
#     global MODE stead
#     te:cmd:coloriseStruct $text $stead($MODE,colorSpec) previousLine
#      
# }
# 
# # la procedure suivante permet de colorier la ligne courante a chaque
# # appuie sur espace.
# proc jedit:post_spacebar_hook {{text .main.t}} {
#     global MODE stead
#     te:cmd:coloriseStruct $text $stead($MODE,colorSpec) currentLine 
# }
# 
# 
# #  what is executed after the file is read (colorization)
# proc jedit:post_read_hook {filename text} {
#    .main.t yview 1.0
#    refresh_colors
# }
# 
# proc main_cc {} {
# 
#    # Extrait de cette procedure !
# 
#    # Gestion des couleurs
#    ########################################################################
#    
#    ########################################################################
#    # La colorisation s'obtient en spécifiant globalement ce qu'on souhaite 
#    # colorier par la définition d'une variable globale 
#    # stead($MODE,colorSpec) qui contiendra une association entre 
#    # une patterne, son type (simple pour un pattern reconnaissable sur une 
#    # ligne, complexe pour un pattern reconnaissable sur plusieurs lignes), 
#    # son nom symbolique, et enfin sa couleur.
#    
#    # Morceau de patterne qui précède un mot clé
#    set stead(beforeMotClef) {(^|[^a-zA-Z0-9_])}
#    
#    # Morceau de patterne qui suit un mot clé
#    set stead(afterMotClef) {([^a-zA-Z0-9_]|$)}
#    
#    
#    
#    # "keylist1Pat"  définit une patterne de reconnaissance des mots clé 
#    # "important" (i.e. modif de structure et autre...)
#    # 
#    set keylist1 {
#      inline public protected private friend
#      main class  
#      import return catch try throw
#    }
#    set keylist1Pat [cc_define_pattern $keylist1]
#    
# 
#    # "keylist2Pat"  définit une patterne de reconnaissance des mots clé 
#    # "courants" du cc :
#    # 
#    set keylist2 { 
#       object Object extends implements synchronized throw
#       if else while do for switch static const template
#       new
#    }
#    set keylist2Pat [cc_define_pattern $keylist2]
#    
#    # "keylist3Pat"  définit une patterne de reconnaissance des mots clé 
#    # correspondant à des types ou classes couramment prédéfinis :
#    # 
#    set keylist3 { 
#       byte short int long real bool float double char boolean 
#       String Thread Event
#       void null true false
#       string list vector deque
#       iterator
#       cout cin clog
#       typename typedef
#    }
#    set keylist3Pat [cc_define_pattern $keylist3]
#    
#    # "macrosPat"  définit une patterne de reconnaissance des mots clé 
#    # "courants" du cc :
#    # 
#    # # # set macros { 
#    # # #    "^ *#include"  
#    # # #    "^ *#if"  "^ *#else"  "^ *#endif"
#    # # #    "^ *#ifdef"  "^ *#ifndef" "^ *#define"
#    # # # }
#    set macros { 
#       #include  
#       #if     #else   #endif
#       #ifdef  #ifndef #define
#    }
#    set macrosPat [cc_define_stratOfLinePattern $macros]
#    
#    # Les commentaire sont ceux du cc ou du C :
#    set stead(comment_CppPat) "//\[^\n\]*" 
#    set stead(comment_Cpat) {/\*(([^*]+)|(\*+[^*/]))+\*+/}
#    # set comment_Pat "($stead(comment_CppPat)|$stead(comment_Cpat))"
#    set comment_Pat "$stead(comment_CppPat)"
#    set stead(commentColor) #060
#    # Définition des guillemets de "style" ou du 'genre' :
#    set guillemetPat "(\"\[^\"\]*\"|'\[^\"\]*')"
#    
#    # Pour finir, on cree une liste de liste contenant le type, le nom, 
#    # la patterne, et le code TCL permettant de colorier...
#    set stead($MODE,colorSpec) [list  \
#       [list simple   keylist1   $keylist1Pat   {-foreground red} ] \
#       [list simple   keylist2   $keylist2Pat   {-foreground blue}] \
#       [list simple   keylist3   $keylist3Pat   {-foreground DarkViolet}] \
#       [list simple   macros     $macrosPat     {-foreground magenta}] \
#       [list complexe guillemetComplexe Ceci est un Test ...     ] \
#       [list simple   guillemet  $guillemetPat  {-foreground #700}] \
#       [list simple   comment   $comment_Pat "-foreground $stead(commentColor)"]\
#    ]
#    
#    
#    ccDefineAlias
#    ccBuildMenus
# 
# } ;# main_cc
# 
# ## cc_define_pattern
# # retourne une liste patterne régulière en fonction d'une liste de mot 
# # clé dans les condition suivante :
# #
# proc cc_define_pattern {keylist} {
# 
#    upvar #0 stead(beforeMotClef) beforeMotClef
#    upvar #0 stead(afterMotClef)  afterMotClef
#    
#    return ${beforeMotClef}([join $keylist |])${afterMotClef}
#    
# } ;# endproc cc_define_pattern
# 
# ## cc_define_stratOfLinePattern
# # retourne une liste patterne régulière en fonction d'une liste de mot 
# # clé suposés etre en DEBUT  DE LIGNE (à des espaces pret) :
# #
# proc cc_define_stratOfLinePattern {keylist} {
# 
#    # # upvar #0 stead(beforeMotClef) beforeMotClef
#    upvar #0 stead(afterMotClef)  afterMotClef
#    
#    return "^\[ \t\]*([join $keylist |])${afterMotClef}"
#    
# } ;# endproc cc_define_pattern
# 
# 
# FIN D'EXEMPLE de mode CC
########################################################################

