
Historique :
- 25/11/02 (diam) : création

contenu :

    - Créer un nouveau mode (codage)
    - organisation d'un fichier de mode 

########################################################################

## - spécification précise du mode à créer
   (voir fichier séparer dans ce répertoire)

## - modification du fichier stead/lib/core/main.tcl
        
   Une seule variable globale à compléter (liste de triplets)
        
      set stead(modeSuffixMappings)  {
           {*.c                c           {C source}}
           {*/tkmail[0-9]*     mail        {tkmail}}
           ...
      }

   D'autre possibilités existent (à documenter)

## - Organisation générale d'un fichier de mode :

L'appel des mode par stear sera modifié, mais l'organisation ci dessous 
sera tres facile à transformer.

Voir le fichier "tead/lib/modes/gvt-main.tcl" qui est le plus récent

    # Déclaration des globales spécifiques au mode...
    proc mode_gvt_init {} {
    }
    
    proc mode_gvt_defineStyles {} {
        lappend stead(mode,gvt,deleteCmds) \
                            [list xtext_style $w delete $stead(mode)]
        ...
        xtext_style $w enable $stead(mode)
    }
    
    proc mode_gvt_GetHelp {} {
        return "Une chaine texte contenant l'aide"
    }
    
    proc mode_gvt_defineSabbrev {} {
    }
    
    proc mode_gvt_defineMenu_gvt {} {
    }
    proc mode_gvt_defineMenu_Templates {} {
    }
    
    # procédure est automatiquement liée au raccourci <Meta-1>
    # pour insérer une ligne de séparation (en commentaire)
    proc separator {{NbLines 1}} {
       insert_fill_lines "*" $NbLines
    }

    ## stead:modeStart_gvt - lancement du mode gvt
    # 
    # A FAIRE : modififier stead et tous les modes de façon à pouvoir 
    # changer de mode en appelant les procédures :
    #   stead:modeQuit $oldMode
    #   stead:modeStart $newMode
    # 
    proc stead:modeStart_gvt {} {
        mode_gvt_init
    
        mode_gvt_defineMenu_gvt
        mode_gvt_defineMenu_Templates
        mode_gvt_defineSabbrev
        mode_gvt_defineStyles
    }
    ## stead:modeQuit_gvt - Nettoyage quand on quitte ce mode
    # 
    proc stead:modeQuit_gvt {} {
        catch {eval [join $::stead(mode,gvt,deleteCmds) ";"]}
    }
    
    ## Cette procédure est appelé automatiquement (sera refondu)
    proc stead:modeCleanup {} {
        stead:modeQuit_gvt
    }
    
    # Ceci sera géré automatiquement par stead (via auto_load)
    stead:modeStart_gvt
