
Ne lisez pas ce fichier : c'est un pense bete pour moi (diam@ensta.fr)
########################################################################


########################################################################
## Colorisation

Idée créer une bibliotèque de style prédéfini
- commentaire C, C++ Shell
- jeux de caracteres spéciaux
- backslash en fin de ligne 
- backslash + espace en fin de ligne (erreur potencielle)
- ...

########################################################################
## Introduire des "fileSet" pour la recherche multi-fichiers 



########################################################################
## Remplacement des electricAlias actuel : qq idées

Revoir entierement les electricalias :

- Commencer par refaire quelques procedures d'alias en se passant des 
  electric alias existant,

- puis spécifier une couche de haut niveau

- enfin la construire...


Imaginer une proc du style :

    stead:sabbrevDef Java while  \
            -linestart 1  \
            -help "Boucle while ... do (avec indentation auto.) \
            -postcommand {
       # des commandes TCL avec quelques variables prédéfinies
       # du style "Chaine de l'abbreviation" position du curseur
       # ... 
       MarkPos "templateString"
    } 

Prévoir pour cette commande une version dense du genre des electricAlias
mais en utilisant le caractere % pour déclenchement.

    stead:sabbrevDef Java while -posttext {if %M$bb\n[i]%M$eb\;\n%M}


# Exemple d'insertion d'alias autonome (mais bestial)
# 
# 
proc fortranTempl_block {} {
global EDITPREFS
   
   # On mémorise l'état de l'éditeur en vu d'un undo éventuel
   jedit:cmd:save_checkpoint
   
   # On cherche la colonne courante du point d'insertion
   set ins [.main.t index insert]    ;# retourne par exemple 53.6
   set lin [lindex [split $ins .] 0] ;# retourne la ligne courante : 53
   set col [lindex [split $ins .] 1] ;# retourne la colonne courante : 6
   
   # On place le point d'insertion en fin de la ligne courante
   .main.t mark set insert "insert lineend"
   
   # On recupere le texte de la ligne courante :
   set currentIndent [.main.t get "insert linestart" "insert lineend"]
   
   # Si la ligne courante contient autre chose que des espaces :
   # on commence une nouvelle ligne avec indentation :
   if {![regexp "\[ \t\]*" $currentIndent]} {
      .main.t insert insert "\n[i]"
      set currentIndent [i]
   }

   # On insert un morceau de text :
   .main.t insert insert "block data\n$currentIndent[i]"
   
   # on mémorise cette position pour y revenir plus tard (par <Control-Tab>)
   set stopRing {}
   .main.t mark set stopRing1 [.main.t index insert]
   lappend stopRing stopRing1
   
   # On continue l'insertion d'un morceau de texte :
   .main.t insert insert "\n${currentIndent}end\n${currentIndent}"
   
   # on mémorise cette position pour y revenir plus tard (par <Control-Tab>)
   .main.t mark set stopRing2 [.main.t index insert]
   lappend stopRing stopRing2
    
   # On précise que l'éditeur vient d'étre modifier (pour faire 
   # confirmer si l'on veut quitter), 
   te:tb:mark_dirty .main.t
   # On s'assure que le point d'insertion est visible
   .main.t yview -pickplace insert
   # on met a jour le label (en bas a gauche de stead) qui indique 
   # la position courante
   te:cmd:show_position

} ;# endproc separator
########################################################################
## Electric alias

1 - casser la procédure electricAlias-insert en plusieurs procédures
    bien identifiées en gardant la compatibilité totale.

2 - créer de nouvelles procedures pour définir formellement
    un objet "sabbrev" en y introduisant :
    - le nom 
    - les différentes abbéviations
    - une ligne d'info
    - le type de définition 
        - version courte et dense (vasée sur les electric-alias actuel)
        - version longues 
    - sa définition :
        - les options et autres particularités 
            - context particulier (début de lignes, ...)
            - les parametres éventuelles en interactif
            - comportement s'il y a une sélection 
            ...
        - la commande tcl associée sous 

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

