maj 14/02/02 

JE CHERCHE UN RACCOURCI (emacs si possible) pour effectuer un wrapping 
les lignes trop longues :
- était fait par <Meta-Equal>
- depuis que <Meta-Equal> est réservé à l'augmentation de la taille de fonte, 
  j'utilise <Meta-;> pour le wrapping,
  Mais ça ne me plais pas !
--------------------------------------------------------------------------------
## 14/03/2007

Voir une mini doc avec des exemples d'utilisation des macros de haut niveau

    ra :  xtext_replaceAll $w
    rs :  xtext_replaceInSel $w
    aa :  xtext_applyToAll $w args
    as :  xtext_applyToSel $w args
    ta :  xtext_transcodeAll $w
    ts :  xtext_transcodeSel $w

Exemples :
    ta utf2iso
    ta iso2utf

------------------------------------------------------------------------
## 11/01/2007

- Développer au maximum le mode ruby (comme Tcl et Latex réuni)
- maintenir les modes principaux : Tcl, Latex=ConTeXt, Ruby et Make (car 
  simplicime, donc peut servir de proto)
- Rechechir à la refonte complète de stead en Ruby 
    - faire un éditer simpliste en Ruby/Tk, mais organisé pour être étendu
    - Implémenter les fonctionnalités les plus importante pour un éditeur
      basique
    - créer un classe TkXText héritant de TkText (version ruby du canvas Tk)
      (contenant l'équivalent de xtext.tcl et de xtext_proc.tcl)
    - rester mono-proces, (car hyper robuste) mais activer une communication
      via socket


------------------------------------------------------------------------
(Ce qui suit est vieux
## BUG Important URGENT

- BUG copie-collé en mode GVT :  
    - si caps-locks n'est pas enfoncé, le collé inverse la casse du 
      presse-papier 
      Solutions possibles ?
        - ne modifier la casse que si inserion d'une seul caractere
        - prévoir option -switchcase 1|0  alias -sc pour inhiber
          cette fonctionnalité
      
  
- BUG recherche-remplacement 
    si recherche de caracteres spéciaux en mode exact (alors que ca
    marche par la macro "ra" 
  
- BUG recherche-remplacement

    - tres lent pour un replaceAll sur un gros fichier : c'est pas
      normal (1.5 Moctet avec une modif pour chaque ligne) ! 

## BUG mineurs

- bug dans "inserer prefix apres indentation" (mise en commentaire)
  si une des lignes a une indentation plus court que la premiere :
  elle ne sera pas commentée.
  
- bug léger (pour diam) : en mode mail, il y a incohérence entre le
  nombre de caracteres par ligne pour l'autobreak de ligne, et la valeur
  utiliser par le menu "Fill sel" 

## Amélioration faciles

- binding <Escape-x>   => ligne de commande TCL
- binding <Escape-X>   => shell TCL
  actuellement <Meta-t-t> et <Meta-t-y>, mais confilt avec le mode latex

- binding <Controle-c><...>   => gestion de la compilation latex

- binding <Control-u>  
  actuellement, permet de multipier par 4 la prochaine action
  Par exemple, 
    - pour insérer 64 caracteres "="
        <Control-u><Control-u><Control-u><equal>
    - pour copier 16 fois le presse-papier 
         <Control-u><Control-u><Control-u><Meta-v>

   A faire : 
    - si pas de sélection : conserver le meme comportement
    - s'il y a une sélection : dépend du caractere suivant
        si c'est un caractere de type parenthese, crochet accolade, 
        ou slash => encadrer la sélection par 
            (...); [...], {...}, /*...*/
        et sélectionner l'ensemble.
        Ceci permet de remplacer "important" par "***important***"
        ou "___important___"
        en :
            - sélectionner de la mot important,
            - <Controle-u>*<Controle-u>*<Controle-u>*
            - touche<Right> pour se repositionner en fin de sélection.
            

- ajouter une option -w au lancement de stead pour imposer la largeur
  du widget text :
        stead -w 132 monfichier.32.list          
        
   
------------------------------------------------------------------------
## Gros morceau à finir avant annonce officielle

- finir la reprise des homogeneisation des modes 
  en nettoyage les alias pour exploiter ma nouvelle syntaxe

- revoir le menu dynamique (gros nettoyage)

- rendre les modes auto-loadable => integrer un principe de 
  constructeur/destructeur par deux procédure "standard"

- vérifier entièrement l'homogénité des noms des proc...
  et finir le nettage des globales

- créer la gestion de preferences

- Creer les bindings pour la classe XEntry 
  (meme orientation que pour XText mais en plus simple : 
    - undo simplifié,
    - copié-collé.
    - duplication de la sélection
    - essayer de rendre la sélection NON exportable pour
      permettre qu'une zone de dialogue puisse préselectionner
      l'ancien contenu SANS désélectionner le contenu de stead
      
  S'inspirer de la classe XText pour l'organisation en 
  - créant un nouveau fichier xentry.tcl (dans répertoire xtext)
  - créer un classe XEntry

## moins urgent

- créer le browser html en mergeant hview de Jean-Luc  on le basant
  sur le nouveau package de la tcllib
  
  Mettre à jour le readme et le squelette de la doc
  Mettre à jour page web


## ==> FIN DE LA MISE A JOUR POUR UNIX  

        => Faire install/annonce officielle :
        - A l'ENSTA
        - puis sur le groupe fr.comp.lang.tcl

    
------------------------------------------------------------------------
## MODIFICATION

- Créer xtext_apply ?-all | -sel?  cmdargs

    Fusionner les deux procedures xtext_applyToSel et xtext_applyToAll
     avec option -all ou -sel (-sel par défaut)


- généralisaer l'utilisation de xtext_applyToAll pour modifier
  le texte complet 
  
- Refaire les proc de conversion en se basant sur xtext_transcode
  (rajouter les options nécessaires)
  
- modif API :
    [xtext_getSel] $w  
        doit retourner {} si **plus** de sélection
    [xtext_getSel $w -old]  
        retourne le buffer oldSel si **plus** de sélection
    
- ne plus utiliser la préférence EDITPREFS(savestate)
  En cas de besoin à l'avenir : on construira dynamiquement l'état !

- Nettoyer les proc de manipulation de la selection rectangulaire
  et le renommer d'une maniere standard pour TOUTE manip
  sur le selection et le clipboard
  
- Gestion des fontes (et changement dynamique de la taille):
    - créér une pref fontSpec pour définir globalement toutes
      les fontes utilisées dans l'éditeur
          set EDITPREF(fontSpec) {
              text {-family ~lucidatypewriter  -size 12 -style norma}
              menubutton {....}
              menu {...}
              entry {...} 
          }
    - créer un proc stead:applyFontConfig {w} {...}
    - créer une proc stead:resizeFont {w scale}
        qui incrémente ou décrémente globalement les fontes en cours 
        et qui modifie les pregference en RAM.
        Il est toujours possible d'utiliser le menu "Config/Save Config"
        pour mémoriser cette nouvelle valeur
    
- Gestion des couleurs : meme chose
    - définir une préférence pour un jeu de couleur
          set EDITPREF(colorSpec) {
              textfg  {...}
              textbg  {...}
              textselbg  {...}
              textselfg  {...}
              textfoundfg  {...}
              textfoundbg  {...}
              texthighlightfg  {...}
              texthighlightbg  {...}
          }
          avec sel, fopund et highlite étant des tab prédéfini
    - définir une proc pour faire plus ou moins foncé

------------------------------------------------------------------------
Renommage :
-----------

- Parsarg_fullSpec 

    - renommer  Parsarg_fullSpec  en pistarg ou parsarg ou .. ?
    

- renommer toutes les procédure de gestion du undo
    jedit:cmd:save_checkpoint en xtext_SaveState
    (ne pas confondre avec l'ancienne notion de state de jedit qu'il faut vire)

- package de style :
    A renommer sheet.tcl ??
    xtext_sheet $w define tcl {... styleSpec styleSpec ..}
    
    Modif stucture du tableau des style :
    
      xtext_style($w,allSheets)           {tcl html php}
      xtext_style($w,enabledSheets)       {html php}
      xtext_style($w,$sheet,styles)       {scope comment backSlashError ...}
      xtext_style($w,$sheet,$style,-pat)  {\B$}
    
    nom de variable :
    - remplacer styleSet par sheet ou thisSheet
    - remplacer styleName par style (plus tard) ou thisStyle
    
    transformer la fonction refresh en apply et supprimer l'ancienne reply


- remplacer les procedure jedit...hook en :
    - stead:tab
    - stead:tab_pre_hook
    - stead:tab_inside_hook
    - stead:tab_post_hook
  et créer un proc de genre :
    - stead:tryProcIfExists cmd  qui fasse catch 
      et retourne 1 si la proc a été trouvée et exécutée.
    
########################################################################
## Autres modification

- __CONCEPTION__ recherche/remplacement  :

    creer REFONDRE xtext_replace pour remplacer xtext_replaceAll 
    et xtext_replaceInSel
    (bugs potentiels)

    il y a trop de couches : qui doit faire quoi dans ces proc ?? !
        stead:replaceAll => xtext_replaceAll => string_replace
    Ideme pour stead:replaceInSel
    
    Q : QUI doit gérer toutes les options
    Idée de guidelines :
        stead:replaceAll indispensable car
            - gérer le document courant (quand stead sera multi document)
            - gère l'état courant de la boite de recherche

        string_replace indispensable car 
            - polyvalente et réutilisable

        xtext_replaceAll :  A REMPLACER PAR  /
        
        xtext_replace w ?-inscope <all | sel | rangeList | tag>
            - gère le undo et le comportement de la sélection
            - l'intervale d'action (-range xxx  -sel  -all ...)
            - les modif du curseur
            - ...
            

########################################################################
## NOUVELLE FONCTIONNALITE NON URGENTE (a faire  à l'occasion)-

- EXCELLENT ! : A FAIRE (nouvel fonctionnalité) pour éviter les risques 
  lors de la  double édition du meme fichier MEMORISE L'INFO
  "stead(lastModifiedDate)" A (apres) chaque sauvegarde, et hurler
  avant la prochaine sauvegarde si celle-ci a changer! 

- A FAIRE : (nouvel fonctionnalité) (Soulignement)
  Répertition de caractere :
  <Escape><key 5><key -> : insére 5 fois le caractere -
  <Escape><key s><key -> : SOULIGNE avec le caractere -
    i.e. s'arrete au derniere caractere superieur non blanc)

- NOUVELLE FONCTIONNALITE : reprendre l'ouverture d'url en utilisant
  les possibilité multiplateforme proposées par :
    http://mini.net/tcl/557.html
  
  puis :
    .t tag bind myurl <Enter> [list .t configure -cursor hand2]
    .t tag bind myurl <Leave> [list .t configure -cursor {}]
    
- commencer une(s :-)  procédure (et adapter celle qui existent déja):

      xtext_get w ?options...?  
      xtext_find w ?options...?
      
  retournant respectivement une liste de chaines ou d'indice 
  selon de nombreux critères
  

- BALANCE :
    - revoir les procédures de balance pour les rendre utilisables
      indépendament de la global xtext(balance_list)
    - Prévoir un moyen de modifier dynamiquement par l'utilisateur
      les parenthèse
    - Créer une structure (liste paires) pour chaque parenthèse avec :
            - un nom
            - la spécif :
                    - le type exact, regexp , ..
                    - leftString
                    - rightString
                    - autohighlight
    - implémenter cette stucture (non nouvelle fonctionnalité)
    - implémenter le type regexp
    
#./

