###########################################################################
# 
# Cette doc est perimee !
# 
###########################################################################

Sommaire :
---------

    1  - Présentation Générale  de l'Editeur STEAD        
    2  - Fonctionnement de l'éditeur
    2.1  - Le lancement de l'éditeur 
    2.2  - Contenu des menus
    2.3  - Le clavier
    2.4  - La souris
    2.5  - La fenêtre d'édition
    3  - Manuel d'Utilisation
    3.1  - La sélection et la sélection rectangulaire
    3.2  - Le sélecteur de fichier
    3.3  - L'impression
    3.4  - L'annulation des commandes
    3.5  - Les préferences utilisateur
    3.6  - La recherche/remplacement
    3.7  - La navigation dans le texte
    3.8  - La gestion de la balance
    3.9  - Les filtres
    3.10  - Les abréviations dynamiques
    3.11  - Les alias électriques
    3.12  - Utilisation des modes
    4  - Aller plus loin : personnalisation et programmation en Tcl
    4.1  - Configurer son éditeur avec le fichier steadrc
    4.2  - Fonctionnement des modes
    4.3  - le menu admin
    5  - Manuel d'installation sur un nouveau site

1 - Présentation Générale  de l'Editeur STEAD        

###########################################################################
###########################################################################
###########################################################################
                                            
                                                                        
        STEAD : mot anglais signifiant : "être fort utile à quelqu'un"  


"Sympathetic Tk-based Editor for Average Dummies" est un éditeur de texte
écrit à l'aide du langage interprété TCL (Tool Command Langage) et son 
extension Xwindow TK (Tool Kit).  

Son objet : être à la fois :
  - simple d'utilisation, basé sur les menus et la souris, 
  - suffisamment puissant pour gérer les modes, 
  - configurable en TCL pour l'utilisateur exigent.

Son installation nécessite tcl version 7.3, tk version 3.6.

---------------------------------------------------------------------------
Quelques caractéristiques :
^^^^^^^^^^^^^^^^^^^^^^^^^^^

Voir Menu Help/stead-lisez-moi

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

2 - Fonctionnement de l'éditeur

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


#################################
#################################
2.1 - Le lancement de l'éditeur 
#################################
#################################
  
 
2.1.1 - lancement simple (nouveau fichier)
 
  unix> stead
  lance l'éditeur sans fichier (vide).
 
 
2.1.2 - ouverture de fichiers
 
  unix> stead <nom_de_fichier> [<nom_de_fichier> ...]
  ouvre les fichier spécifiés  
  
2.1.3 - Options dont on dispose :
   
  unix> stead -mode <nom-de-mode> [<nom_de_fichier>] [<nom_de_fichier>] ...
  ouvre le (ou les) fichiers choisis dans le mode spécifié
 
  unix> stead -text <chaîne-de-caractères>
  ouvre l'éditeur avec la chaine de caractère.
  Aucun nom de fichier ne devra être spécifié.
  ATTENTION : se limiter a des petites chaines inférieures à 50 K.
  
  unix> stead -command <Commande  Tcl> [<nom_de_fichier>] [<nom_de_fichier>]  
  ouvre le (ou les) fichiers choisis et exécute la commande Tcl dans chaque
  fichier ou éditeur vide ouvert.
  
  
#######################
#######################
2.2 - Contenu des menus
#######################
#######################
  

#################
2.2.1 - Menu File
#################
         
  ( Gestion des fichiers, lancement des éditeurs) 

  -----------------------------------------------------------------------
  Open...                                                          Meta-o

  Ouvre dans un nouvel éditeur un fichier choisi dans le "sélecteur de 
  fichier", boite de dialogue ouverte automatiquement à cette occasion. 

  -----------------------------------------------------------------------   
  Load...                                                          Meta-L

  Ouvre dans le même éditeur un fichier choisi dans le "sélecteur de 
  fichier", boite de dialogue ouverte automatiquement à cette occasion.
  Demande confirmation si le fichier courant n'est pas sauvegardé.

  ------------------------------------------------------------------------
  Open Same File                                                    Meta-O
                                                     
  Ouvre le même fichier dans un autre éditeur. Toutefois les modifications
  effectuées dans un éditeur ne sont pas reportées dans l'autre.

  ------------------------------------------------------------------------
  New                                                               Meta-n

  Ouvre un éditeur vide 


  ------------------------------------------------------------------------
  Save                                                              Meta-s
  
  Sauvegarde le fichier. Un nom de fichier est demandé si le fichier est 
  sans titre. Affiche le nombre de caractères et de lignes du fichier.
  Remarque : On ne peut plus annuler une commande antérieure à
  une sauvegarde.

  ------------------------------------------------------------------------
  Save As...                                                        Meta-S

  Sauvegarde le fichier sous un nom à choisir dans le sélecteur de fichier
  

  ------------------------------------------------------------------------
  Save Selection As...
 
  Sauvegarde le contenu de la selection sous un nom a choisir dans un 
  selecteur de fichier. 

  ------------------------------------------------------------------------
  Print...                                                          Meta-p
 
  Donne un prompt avec la commande d' impression par défaut qu'il est
  alors possible de modifier.
  %F remplace le nom du fichier à imprimer dans la commande d'impression.

  ------------------------------------------------------------------------
  Print Selection 
  
  Imprime le contenu de la selection. Fonctionne comme la commande 
  precedente. 

  ------------------------------------------------------------------------
  Insert File...                                                    Meta-I
  
  Insère au point d'insertion ou à la place de la sélection le fichier 
  à choisir dans un "sélecteur". 

  ------------------------------------------------------------------------
  Insert Output of Unix Command*                                    Meta-! 
  
  Insère au point d'insertion ou à la place de la sélection le résultat de
  la commande UNIX entrée par l'utilisateur dans un prompt. 

  ------------------------------------------------------------------------
  Reset to Last Save                                                Meta-Q

  Recharge le fichier courant en ignorant les modifications.
  Demande confirmation.  

  ------------------------------------------------------------------------
  Reset to Last save & Reload TE

  Quitte et relance l'editeur en rechargeant le fichier en ignorant les 
  modifications. 
  Demande confirmation.   

  ------------------------------------------------------------------------
  File Informations
  
  Fournit des informations sur le fichier courant 
  (date de dernière modification, taille, etc...)

  ------------------------------------------------------------------------
  Save then Quit 

  sauvegarde le fichier et quitte l'éditeur 

  ------------------------------------------------------------------------
  Quit                                                              Meta-q

  quitte l'éditeur. Demande une sauvegarde du fichier si besoin est . 


#################
2.2.2 - Menu Edit
#################

  Gestion de l'édition, sélection, undo


  ------------------------------------------------------------------------
  Cut*                                                              Meta-x

  Coupe la sélection (qu'elle soit rectangulaire ou non) et la place dans 
  le buffer. Ne fonctionne que si la sélection est dans l'éditeur courant
  Il y a un buffer par fichier édité.
   
  ------------------------------------------------------------------------
  Copy                                                              Meta-c

  Copie la sélection sans la couper (qu'elle soit rectangulaire 
  ou non) et la place dans le buffer
  
  ------------------------------------------------------------------------
  Paste*                                                            Meta-v 
  
  Colle le contenu du buffer (de façon rectangulaire ou non) au point 
  d'insertion ou à la place de la sélection 
                  
  ------------------------------------------------------------------------
  Duplicate Sel*                                        Button-2 et Meta-d

  Duplique la sélection 
  - s'il n'y a pas de sélection dans le texte, la sélection d'une aure
  application est dupliquée  au point d'insertion. S'il n'y a de sélection 
  dans aucune autre application, c'est l'ancienne valeur de la  sélection 
  qui est restituée.
  - s'il y a une sélection dans le texte, elle est dupliquée juste avant 
  sa position. 
                
  ------------------------------------------------------------------------
  Select All                                                        Meta-a
  
  Sélectionne le texte entier
                
  ------------------------------------------------------------------------
  Undo                                                              Meta-z 
  
  Restaure l'état du texte avant la dernière commande annulable.  La 
  restauration porte sur le texte et sur son état (sélection, marques, 
  tags). Le nombre de commandes annulables successivement est défini par 
  la  préférence utilisateur "undolevels"
  
  ------------------------------------------------------------------------
  Redo                                                              Meta-Z
  
  Annule le dernier undo effectué
  
  
  ------------------------------------------------------------------------
  Sous menu Undo Config (configuration du undo) :
  ------------------------------------------------------------------------
  Checkpoint
  
  Permet de mémorise l'état du fichier. La commande "undo" permet de 
  restaurer cet état.  On peut utiliser cette commande pour sauvegarder 
  l'état de la sélection à un moment donné
  
  ------------------------------------------------------------------------
  Disable/Enable Undoing 
  Empêche ou restitue la sauvegarde de points d'annulation.  Utile si la
  sauvegarde depoints d'annulation ralentit trop l'édition.
  
  
  ------------------------------------------------------------------------
  Clear Undo  Memory
  Efface la mémoire des points d'annulation. On ne pourra pas, après cette 
  commande, revenir à un état précédent. Cette commande est automatiquement 
  invoquée lorsqu'on sauve le fichier. Cette  caractéristique est définie 
  par la préférence utilisateur "clear_undo".
  ------------------------------------------------------------------------
  

###################
2.2.3 - Menu Search
###################

  recherche, remplacement, balance, position du curseur

  ------------------------------------------------------------------------
  Find...                                                           Meta-f
  
  Affiche la boîte de dialogue de "recherche/remplacement" qui comporte 
  une entrée intitulée "Search for" permettant d'entrer la chaîne à 
  rechercher, une entrée intitulée "Replace With" permettant d'entrer la 
  chaine de remplacement. Les options de recherche en arriere (backward),
  prise en compte des majuscules (case-sensitive), la recherche régulière
  (regexp-find) dans tout le fichier ou ligne par ligne (regexp-by-line)
  sont définies par des boutons de sélection.
  Le bouton "Search" lance la recherche, "Replace" remplace la chaîne 
  trouvée par une commande Search,  "Replace in selection" remplace dans 
  toute la sélection, "Replace all" dans tout le fichier, 
  "replace then search again" recherche le prochain élément après un 
  remplacement.  "Done" efface la fenêtre en conservant les options et les 
  chaînes de recherche/remplacement. Pour supprimmer une chaine, entrer une 
  chaîne vide comme chaîne de remplacement.        
                   
                 
  ------------------------------------------------------------------------
  Enter Sel                                                         Meta-e
  
  Entre la chaîne sélectionnée (Si elle existe) dans l'entrée de 
  recherche, que la fenêtre de recherche soit affichée ou non

  ------------------------------------------------------------------------
  Search Forward                                                    Meta-g

  Lance la recherche de la chaine de recherche du point d'insertion vers la 
  fin du fichier sans afficher la fenêtre de recherche.

  ------------------------------------------------------------------------
  Search Backward                                                   Meta-i
  
  Lance la recherche du point d'insertion vers le début du fichier sans 
  afficher la fenêtre de recherche. NOTE : il est impossible de rechercher
  en arrière une chaine régulière.


  ------------------------------------------------------------------------
  Search Sel Forward                                             Control-g
  
  Lance la recherche de la chaîne selectionnée dans le sens point 
  d'insertion-fin du fichier. Ignore et n'affecte pas la chaîne de 
  recherche de la fenêtre de recherche.
                
  ------------------------------------------------------------------------
  Search Sel Backward                                            Control-i
  
  Lance la recherche de la chaîne selectionnée dans le sens point
  d'insertion-début du fichier. Ignore et n'affecte pas la chaîne de 
  recherche de la fenêtre de recherche.

  ------------------------------------------------------------------------
  Replace*                                                          Meta-u
  
  Remplace la sélection par la chaîne de remplacement sans afficher le
  fenêtre de recherche

  ------------------------------------------------------------------------
  Replace Then Search Again*                                        Meta-h

  Remplace la sélection par la chaîne de recherche et lance une nouvelle 
  recherche sans afficher la fenêtre de recherche.
 
  
  ------------------------------------------------------------------------
  Replace In Sel*          
  
  Remplace les chaînes trouvées dans la sélection par la chaine de 
  remplacement sans afficher la fenêtre de recherche.
  
  ------------------------------------------------------------------------
  Replace All*  
  
  Remplace toutes les chaînes trouvées dans le fichier par la chaine de 
  remplacement sans afficher la fenêtre de recherche.

  ------------------------------------------------------------------------
  Balance                                                           Meta-b
  
  Cherche les plus proches éléments de balance englobant le point 
  d'insertion ou la sélection. Les éléments de balance sont les accolades, 
  les parenthèses ou les crochets. Sélectionne l'intérieur, une fois que 
  l'élément de balance a été trouvé.
  

  ------------------------------------------------------------------------
  Set Emacs Mark                                                 Control-m

  Selon la convention emacs, crée une marque pour mémoriser la position
  du point d'insertion.

  ------------------------------------------------------------------------
  Jump to Emacs Mark                                             Control-M
  
  Positionne le point d'insertion sur la dernière marque créée.
  
  ------------------------------------------------------------------------
  Exchange Mark and Insert Point                    <Control-x><Control-x>
  
  Positionne le point d'insertion sur la marque dernière marque créée et
  mémorise l'ancienne position dans la marque "emacs".  
  
  ------------------------------------------------------------------------
  Go To Line                              Bouton "ligne/colonne" et Meta-j
  
  Positionne le point d'insertion à la ligne définie par le premier chiffre
  trouvé dans la sélection. Affiche une fenêtre d'entrée s'il n'y en a pas.
  La ligne trouvée par le go-to-line est colorée quelques instants
  ------------------------------------------------------------------------
                


###################
2.2.4 - Menu Format
###################

préfixe, indentation, filtres appliqués à la sélection

  ------------------------------------------------------------------------
  Insert Prefix Before Indent*                                     Meta  -
  
  Insère le préfixe courant (préférence utilisateur prefix voir
  Set Prefix) en début des lignes situées dans la sélection s'il y en a une,
  au point d'insertion sinon
  
  ------------------------------------------------------------------------
  Insert Prefix After Indent*                               Meta-Control -

  Insère le préfixe (préférence utilisateur prefix voir Set Prefix) après 
  l'indentation des lignes situées dans la sélection s'il y en a une,
  au point d'insertion sinon.
  
  ------------------------------------------------------------------------
  Remove Prefix*                                              Meta-Shift-_
  
  Supprime les préfixes (préférence utilisateur prefix voir Set Prefix) de
  la sélection s'il y en a une.
  

  ------------------------------------------------------------------------
  Set Prefix...                                                  Control -
  
  Affiche une fenêtre pour entrer le préfixe courant (préférence 
  utilisateur prefix).


  ------------------------------------------------------------------------
  Indent Right*                                                     Meta-]
  
  Indente la sélection si elle existe, la ligne courante sinon, du nombre 
  d'espaces défini par la chaîne courante d'indentation (préférence 
  utilisateur "indent_string", voir Set Indent Spaces). Avant d'indenter 
  le texte, STEAD étend la sélection courante au début de la première 
  ligne sélectionée et à la fin de la dernière ligne sélectionnée.
  
  
  ------------------------------------------------------------------------
  Indent Left*                                                      Meta-[
  
  "Désindente" la sélection si elle existe, la ligne courante sinon, au 
  plus du nombre d'espaces défini par la chaîne courante d'indentation 
  (préférence utilisateur "indent_string", vois Set Indent Spaces).
  Avant la désindentation, STEAD étend la sélection courante au début de
  la première ligne et à la fin de la dernière.
  
  ------------------------------------------------------------------------
  Indent One Space Right*                                           Meta-}
  
  Indente la sélection si elle existe, la ligne courante sinon, d'un 
  espace. Possède les mêmes caractéristiques que "Indent Right".
  
  ------------------------------------------------------------------------
  Indent One Space Left*                                            Meta-{
  
  Désindente la sélection si elle existe, la ligne courante sinon, d'un 
  espace.  Possède les mêmes caractéristiques que "Indent Left".
  
  ------------------------------------------------------------------------
  Set Indent Spaces...
  
  Affiche une fenêtre pour modifier la chaine courante d'indentation
  Préférence utilisateur "indent_string".
  
  
  ------------------------------------------------------------------------
  Fill Sel*                                                         Meta-= 
  
  formate la sélection (ne fait rien si pas de sélection)
  pour l'instant on utilise la commande UNIX fmt.
  
  
  ------------------------------------------------------------------------
  Pipe Through* Unix Command                                        Meta-|
  
  Affiche une fenêtre pour entrer un filtre UNIX appliqué à la sélection.
  

  ------------------------------------------------------------------------
  Sous-menu Case :
  ------------------------------------------------------------------------

  ------------------------------------------------------------------------
  CASE*                                                             Meta-K
  
  Met la sélection en majuscule 
                 
  ------------------------------------------------------------------------
  case*                                                             Meta-k
  
  Met la sélection en minuscules

  ------------------------------------------------------------------------
  Toggle Case*  
  
  Inverse les minuscules et les majuscules dans la sélection


  ------------------------------------------------------------------------
  Sous Menu Sort :
  ------------------------------------------------------------------------


  ------------------------------------------------------------------------
  Sort by ASCII Sequence*      
  
  Tri ASCII (?) de la sélection (commande UNIx sort)
 
  ------------------------------------------------------------------------
  Sort Numerically*
  
  Tri numérique de la sélection (commande UNIX sort -n)

  ------------------------------------------------------------------------
  Sort Alphabetically* 
  
  Tri alphabétiquement la sélection (commande UNIX sort - if)

  ------------------------------------------------------------------------
  Sous-menu wrap selection :
  ------------------------------------------------------------------------

  ------------------------------------------------------------------------
  sel -> "sel"                                                   Control-"
  
  encadre la sélection par des guillemets

  ------------------------------------------------------------------------
  sel -> [sel]                                                   Control-]
  
  encadre la sélection par des crochets

  ------------------------------------------------------------------------
  sel -> (sel)                                                   Control-)
  
  encadre la sélection par des parenthèses
                                    
  ------------------------------------------------------------------------
  sel -> {sel}                                                   Control-}
  
  encadre la sélection par des accolades
  ------------------------------------------------------------------------

###################
2.2.5 - Menu Config
###################

préférences utilisateurs, fichiers de configuration, modes

  ------------------------------------------------------------------------
  Graphic Preferences Editor...    

  affiche le panneau de configuration pour les préférences utilisateur 
  concernant l'éditeur.
  - Le bouton "Cancel" permet d'annuler les modifications avat de
  détruire le panneau.
  - Le bouton "Done" permet d'appliquer les choix à l'éditeur courant. 
  - Le bouton "Save" permet de sauvegarder ces préférences dans le fichier
  de préférences steadrc contenu dans le répertoire ~/.tk/stead qui
  sera alors créé s'il n'existe pas !
  - Le bouton "Reset to Default Values" permet de réinitialiser le
  panneau de configuration avec les valeurs par défaut de l'éditeur
  sans tenir compte des modifications ni du fichier stead-prefs

  ------------------------------------------------------------------------
  edit User File
  
  édite le fichier de configuration steadrc, contenu dans le répertoire 
  ~/.tk/stead qui sera créé s'il n'existe pas ! Ce fichier contient les
  préférencees utilisateur et d'autres commandes TCL dont la procédure
  jedit:userhook qui permet de personnaliser l'éditeur.
   Attention : pour appliquer les modifications utiliser
  "Reread User File". 
   
  Si vous ne possèdez pas ce fichier, l'exécution de "edit Customization
  file" vous en propose un par défaut.              
                 
  ------------------------------------------------------------------------
  reread User  File 
  
  Relit le fichier de configuration steadrc contenu dans ~/.tk/stead.                 
  (applique les préférences utilisateurs et réexécute la procédure 
  jedit:userhook.)

  ------------------------------------------------------------------------
  Mode           
  
  Affiche une fenêtre pour changer de mode. Le menu en bas à droite de 
  l'éditeur possède aussi cette fonctionnalité. Les modes disponibles 
  actuellement sont Latex, C, Tcl, Verilog, Pascal, csh, fortran.
                 

  ------------------------------------------------------------------------
  Source config...                                                  

  Ouvre le sélecteur de fichier pour choisir un fichier de script Tcl à 
  charger
                    
  
  ------------------------------------------------------------------------
  Sous-menu Abbréviations :
  ------------------------------------------------------------------------
  

  ------------------------------------------------------------------------
  Static Abbreviation with Meta-Space                   Control-Meta-Space

  active ou désactive l'expansion des abréviations statiques ("alias 
  électriques") avec la touche <Meta-Space>. Préférence utilisateur 
  "sabbrev". Les alias disponibles dépendent dépendent du mode.
                            
  ------------------------------------------------------------------------
  Dynamic Abbreviation with Meta-Tab                      Control-Meta-tab

   active ou désactive l'expansion des abréviations dynamiques (par 
   recherche du dernier mot entré) avec la touche <Meta-Tab>.  
   Préférence utilisateur "dabbrev".
                   
  ------------------------------------------------------------------------
  Expand Static Abbreviation                       si autorisé :Meta-Space   
 
   provoque l'expansion d'une abréviation statique au point d'insertion
   si elle existe. Définissez vos alias dans steadrc !
                   
  ------------------------------------------------------------------------
  Expand Dynamic Abbreviation                       si autorisé : Meta-tab
  
  provoque l'expansion d'une abréviation dynamique au point d'insertion
  si un mot commençant par les mêmes lettres a déja été entré.
  NB: un mot à étendre ne doit contenir que des lettres et/ou des chiffres.
  ------------------------------------------------------------------------
  Create General User Aliases
  
  créer des alias généraux pour l'éditeur (voir les alias électriques).
  Ils sont placés dans le fichier .tk/stead/aliases.tcl.
  Le répertoire correspondant est créé s'il n'existe pas !
  ------------------------------------------------------------------------
  Reread General User Aliases
        
  Lit les alias généraux d l'éditeur définit par l'utilisateur (voir les
  alias électriques).
  Lit le fichier ~/.tk/stead/aliases.tcl s'il existe.


###################
2.2.6 - Menu Extra
###################

fonctionnalités supplémentaires, appel à des utilitaires Tcl


  ------------------------------------------------------------------------
  Issue Unix Command                                               Meta--U
  
  Affiche une fenêtre pour entrer la commande Unix à exécuter.
  Affiche la sortie de la commande dans la fenêtre d'information.
  
  ------------------------------------------------------------------------
  Execute Selection                                                 Meta-l
  
  Exécute la sélection en tant que script tcl.
  Affiche le résultat dans la fenêtre d'information.
               
  ------------------------------------------------------------------------
  Issue TclCommand                                            Meta-Shift-T
  
  Affiche une fenêtre pour entrer la commande tcl à exécuter au niveau
  "global". Affiche le résultat de la commande dans la fenêtre d'information.
  est effacée par <Meta-w> ou <Control-g>
                
  ------------------------------------------------------------------------
  Tcl Shell
  
  Lance l'exécutable rmt (inclus dans les scripts). Il s'agit d'un shell
  permetant de "dialoguer" avec l'éditeur, c'est-à-dire lui envoyer des 
  commandes Tcl.
                
  ------------------------------------------------------------------------
  Tkinspect 
  
  Lance l'utilitaire tkinspect non fourni avec STEAD.
  
  ------------------------------------------------------------------------
  Make Admin Menu
  
  Crée un menu d'administration : édition des fichiers de scripts et d'aide
  de STEAD, affichage des variables globales, des procédures. création du
  tclIndex dans la bibliothèque tclLib de STEAD.
  ------------------------------------------------------------------------
                                      
################
################
2.3 - Le clavier
################
################

Sujet :
      
effet des touches particulières (tab,...) et raccourcis clavier
Succint, se referer au manuel utilisateur (chapitre 3)


REMARQUE PRELIMINAIRE : 

la touche Meta est celle située directement à gauche
de la barre d'espacement.                          

Attention, ces raccourcis dépendent de la configuration du clavier par 
Xwindow (voir Xmodmap).
                          
###########################################################################
2.3.1 - Les raccourcis généraux de l'éditeur
###########################################################################
    
  Tous ces raccourcis concernent des commandes présentes dans les menus.
On distigue les raccourcis de base et les raccourcis emacs. 
  
2.3.1.1 - Raccourcis de base
^^^^^^^^^^^^^^^^^^^^^^^^^^^^  
  
  RACCOURCIS CONCERNANT LA GESTION DU FICHIER :
  
    - <Meta-o> : ouvre un nouveau fichier (menu File/Open)
    
    - <Meta-O> : ouvre le même ficher (menu File/Open Same File)
    
    - <Meta-n> : ouvre un éditeur vide (menu File/New)
    
    - <Meta-s> : sauvegarde le fichier courant (menu File/Save)
    
    - <Meta-S> : sauvegarde le fichier courant sous un autre nom
                 (Menu File/Save As)
                 
    - <Meta-p> : imprime le fichier courant (menu File/Print)
    
    - <Meta-I> : Insère un fichier au point d'insertion 
                 (menu File/Insert File)
  
    - <Meta-!> : Insère le résultat d'une commande UNIX 
                 (menu File/Insert Output Of UNIX Command)
          
    - <Meta-Q> : Restaure le fichier dans l'état de la dernière sauvegarde 
                 effectuée (menu File/Reset to Last Save)
                

    - <Meta-?> : Donne des infos sur le fichier (menu File/File informations)
    - <Meta-q> : quitte TE (menu File/Quit)
      

  RACCOURCIS CONCERNANT LA RECHERCHE DANS LE TEXTE
 
    - <Meta-f> : affiche la boite de recherche/remplacement (menu Search/Find)
    
    - <Meta-e> : entre la sélection dans le champ de recherche 
                 (menu Search/Enter Selection)
                 
    - <Meta-g> : cherche en avant dans le texte le contenu du champ de
                 recherche à partir du point d'insertion. Sélectionne la
                 chaine trouvée. Si la chaine de recherche est vide, affiche
                 la boite de recherche.
                 (menu Search/Search Forward)
                 
    - <Meta-i> : cherche en arrière dans le texte le contenu du champ de
                 recherche à partir du point d'insertion. Sélectionne la
                 chaine trouvée. Si la chaine de recherche est vide, affiche
                 la boite de recherche. 
                 (menu Search/Search Backward)
                 
    - <Control-g> : cherche la sélection en avant dans le texte à partir
                    du point d'insertion. Sélectionne la chaine trouvée. Si la
                    la chaine de recherche est vide, affiche la boite de 
                    recherche. (menu Search/Search Sel Forward)
                    
    - <Control-i> : cherche la sélection en arrière dans le texte à partir
                    du point d'insertion. Sélectionne la chaine trouvée. Si la
                    la chaine de recherche est vide, affiche la boite de 
                    recherche. (menu Search/Search Sel Backward)
                    
    - <Meta-u> : remplace la sélection par la chaine de remplacement. Si celle
                 ci est vide, affiche la boite de recherche.
                 (menu Search/Replace)
                 
    - <Meta-h> : remplace la sélection par la chaine de remplacement. Si celle
                ci est vide, affiche la boite de recherche. Puis, cherche
                à nouveau dans le fichier.
                (Menu Search/Replace Then Search Again)               
      
   - <Meta-j> : déplacement vers la ligne sélectionnée ou affichage d'un
                prompt demandant le début de ligne. (menu Search/Go To Line)
                
   - <Meta-C> : Affiche la position courante du point d'insertion
                (menu Search/Show Current Position)
                
 RACCOURCIS CONCERNANT LA CONFIGURATION 
 
   - <Meta-m> : Change le mode courant (menu Config/Mode)
   
 RACCOURCIS CONCERNANT LES ABBRéVIATIONS
 
   - <Control-Meta-space> : autorise l'expansion des abréviations statiques par
                            Meta-space 
                            (Menu Abbrev/Static Abbreviation with Space)
                    
   - <Control-Meta-tab> : autorise l'expansion des abréviations dynamiques par 
                          Meta-tab
                          (menu Abbrev/Dynamic Abbreviation with Tab)

 RACCOURCIS CONCERNANT LES FILTRES APPLIQUES à LA SéLECTION
  
   - <Meta-|> : applique un filtre Unix à la sélection courante. Attention :
               même invoqué depuis un champ d'entrée, ce raccourci ne 
               s'applique qu'à la sélection présente dans le texte.
               (menu Pipe/Pipe Through Unix Command)
               
 RACCOURCIS SUPPLEMENTAIRES
 
   - <Meta-U> - exécute une commande Unix (menu Extra/Issue Unix Command)
   
   - <Meta-T> - exécute une commande Tcl (menu Extra/Issue Tcl Command)
   
   - <Meta-l> - exécute la sélection en tant que commande Tcl
                (menu Extra/Execute Selection)
 
2.3.1.2 - Les Raccourcis Emacs
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  GESTION DU FICHIER
  
  - <Control-x><Control-x> : sauvegarde le fichier (équivaut à <Meta-s>)
  - <Control-x><Control-z> : sauvegarde le fichier sous... (voir <Meta-S>)
  - <Control-x><Control-f> : charge un fichier (équivaut à meta-L)
  - <Control-x><Control-v> : équivalent à <Control-x><Control-f>
  - <Control-x><Control-c> : quitte l'éditeur (équivaut à <Meta-q>)
  
  RECHERCHE
  
  - <Control-s> : affiche la boite de recherche (équivaut à <Meta-f>)
  - <Control-%> : équivalent à <Control-s>
  
########################################################
2.3.2 - Les raccourcis concernant exclusivement le texte
########################################################
  
  On distingue les raccourcis de base de l'éditeur des raccourcis Emacs.
            
  DEPLACEMEMENT DANS LE TEXTE
  
2.3.2.1 - Raccourcis de base
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  
  DEPLACEMEMENT DANS LE TEXTE

    Les 4 flèches :
    
    - <Up> : déplace le curseur d'un caratère vers le haut (ou au début de la
             sélection si elle existe et désélectionne)
    
    - <Down> : déplace le curseur d'un caractère vers le bas (ou a la fin de 
               la sélection si elle existe et désélectionne)
               
    - <Right> : déplace le curseur d'un caractère vers la droite (ou a la fin
                de la sélection si elle existe et désélectionne)
                
    - <Left> : déplace le curseur d'un caractère vers la gauche (ou au début 
               de la sélection si elle existe et désélectionne)
               
    - <Home> : déplace le curseur au début de la ligne (ou au début de la   
               sélection si elle existe et désélectionne)
    
    - <End> : déplace le curseur à la fin de la ligne (ou à la fin de la     
              sélection si elle existe et désélectionne) 
                
    -<Meta-Up> : déplace le curseur au début du fichier (ou au début de la   
                 sélection si elle existe et désélectionne)

    -<Meta-Down> : déplace le curseur à la fin du fichier (ou à la fin de la   
                   sélection si elle existe et désélectionne)

    -<Meta-Left> : équivaut à <Home>
    
    - <Meta-Right> : équivaut à <End>
    
    - <Control-Right> : déplace le curseur à la fin du mot situé à droite
                        du curseur ou le contenant (ou à la fin de la   
                        sélection si elle existe et désélectionne).
                        Attention à la définition d'un mot.
                        
    - <Control-Left> : déplace le curseur au début du mot situé à gauche
                        du curseur ou le contenant (ou au début de la   
                        sélection si elle existe et désélectionne).
                        Attention à la définition d'un mot.
  SCROLLING
  
    - <Page Up> : déplace le curseur d'une page vers le haut (ou au début de
                  la sélection si elle existe et désélectionne)
                  
    - <Page Down> : déplace le curseur d'une page vers le bas (ou a la fin de
                    la sélection si elle existe et désélectionne)
                    
    - <Control-Up> : équivaut à <Page Up>

    - <Control-Down> : équivaut à <Page Down>
    
  EFFACEMENT
    
    - <Backspace> : efface le caractère à gauche du curseur ou la sélection 
                  toute entière si elle existe.
                  
    - <Delete> : équivaut à <Backspace>
    
    - <Control-h> : équivaut à <Backspace>
    
  INSERTION DANS LE TEXTE
  
    - <Toute touche> : insère le caractère correspondant à la touche dans le 
                       texte au point d'insertion ou à la place de la 
                       sélection si elle existe.
                       
    - <Tab> : Généralement, insère une tabulation :-). Plus finement :       
              exécute si elle existe la procédure définissable par
              l'utilisateur jedit:pre_tabkey_hook puis insère une tabulation au
                  point d'insertion ou à la place de la sélection.
              Enfin, si elle existe, la procédure jedit:post_tabkey_hook est
              exécutée. (VOIR Créer des modes)
                
    - <Shift-Tab> : insère une tabulation au point d'insertion ou à la place
                    de la sélection. (Utilisé dans le cas où <Tab> étend les 
                    abbréviations dynamiques)
                    
    - <Control-i> : équivaut à <Shift-Tab> 
                   (NON : ecrasé par "Rechecher selection en arrière")
    
    - <Space> :  Généralement, insère un espace :-). Plus finement :
                 exécute si elle existe la procédure définissable par
                 l'utilisateur jedit:pre_spacebar_hook puis :
                  - si la préférence "sabbrev" est à 0 insère un espace au
                   point d'insertion ou à la place de la sélection.
                  - si la préférence "sabbrev" est à 1 cherche une 
                    abréviation statique correspondant au mot entré.
                 La préférence "sabbrev" est positionnée dans le menu 
                 Config/Dynamic Abbreviation With Tab ou par <Shift-tab> ou
                 encore par les éditeurs de préférences.
                 Enfin, si elle existe, la procédure jedit:post_spacebar_hook
                 est exécutée. (VOIR Créer des modes)
    
    - <Shift-Space> : insère un espace au point d'insertion ou à la place de 
                      la sélection (Utilisé dans le cas ou <Tab> étend les 
                       abbréviations statiques)
                       
    - <Return> : Généralement, insère un retour chariot :-). Plus finement
                 exécute si elle existe la procédure définissable par
                 l'utilisateur jedit:pre_returnkey_hook puis :
                 insère un retour chariot avec autoindentation (si la
                 préférence "autoindent" est à 1 , voir Les préférences 
                 Utilisateur).
                 Enfin, si elle existe, la procédure jedit:post_returnkey_hook
                 est exécutée.
                 
    - <Shift-return> : insère un retour chariot au point d'insertion ou à la 
                       place de la sélection (sans autoindentation)
                      
    - <Control-j> : équivaut à <Shift-Return>
   
  ABBREVIATIONS DYNAMIQUES :
  
    - <Meta-Tab> :si la préférence "dabbrev" est à 1 cherche une abbréviation
                  dynamique correspondant au mot entré.
                  La préférence "dabbrev" est positionnée dans le menu 
                  Config/Dynamic Abbreviation With Tab ou par 
                  <Control-Meta-tab> ou encore par les éditeurs de préférences.
                  si la préférence "dabbrev" est à 0 insère une tabulation au
                  point d'insertion ou à la place de la sélection.
   
    - <Meta-Space> : si la préférence "sabbrev" est à 0 insère un espace au
                     point d'insertion ou à la place de la sélection.
                     si la préférence "sabbrev" est à 1 cherche une 
                     abréviation statique correspondant au mot entré.
                     La préférence "sabbrev" est positionnée dans le menu 
                     Config/Dynamic Abbreviation With Tab ou par 
                     <Control-Meta-space> ou encore par les éditeurs de 
                     préférences.

  
  COUPER, COPIER, COLLER
  
    - <Meta-c> : copier (menu Edit/Copy)
    
    - <Meta-x> : couper (menu edit/Cut)
    
    - <Meta-v> : coller (menu Edit/Paste) 

  SELECTION
  
    - <Shift-Up> : étend la sélection vers le haut
    
    - <Shift-Down> : étend la sélection vers le bas
    
    - <Shift-Left> : étend la sélection vers la gauche
    
    - <Shift-Right> : étend la sélection vers la droite
    
    - <Meta-a> : sélectionne tout le texte (voir menu Edit/Select all)
    
    - <Meta-d> : duplique la sélection (voir menu Edit/Duplicate Sel)

  FILTRES
  
    - <Meta-[> : indente vers la gauche du nombre d'espace prédéfini.
                 (voir menu Format/Indent left)
  
    - <Meta-]> : indente vers la droite du nombre d'espace prédéfini.
                 (voir menu Format/Indent right)
  
    - <Meta-{> : indente d'un espace vers la gauche
                 (voir menu Format/Indent One Sapce Left)
                 
    - <Meta-}> : indente d'un espace vers la droite
                 (voir menu Format/Indent One Space Left)
                 
    - <Meta-=> : formate la sélection (voir menu Format/Fill Sel)
    
    - <Meta-K> : Met la sélection en majuscule (voir menu Format/Case/CASE)
    
    - <Meta-k> : Met la sélection en minuscule (voir menu Format/Case/case)
    
    - <Meta--> : Insère le préfice avant l'indentation 
                 (Voir Format/Insert Prefix Before Indent)
    
    - <Meta-Control--> : Insère le préfixe après l'indentation 
                         (Voir Format/Insert After Before Indent)
                         
    - <Meta-_> : supprime le préfixe (Voir Format/Remove Prefix)
    
    - <Control--> : Définit le préfixe courant (Voir Format/Set Prefix)
    
    - <Control-Shift-}> : encadre la sélection par des accolades
                          (voir menu Format/Wrap Selection/Sel -> {sel})
    
    - <Control-Shift-]> : encadre la sélection par des crochets
                          (voir menu Format/Wrap Selection/Sel -> [sel])
    
    - <Control-Shift-"> : encadre la sélection par des guillemets
                          (voir menu Format/Wrap Selection/Sel -> "sel")
    - <Control-Shift-)> : encadre la sélection par des parenthèses
                          (voir menu Format/Wrap Selection/Sel -> (sel))


  ICONIFICATION
  
    - <Meta-w> : iconifie/désiconifie l'éditeur
    
  BALANCE
  
    - <Meta-b> : sélectionne l'intérieur des premiers élément de balance
                 trouvés. (Voir Menu Search/Balance)
    
    - } : en plus d'insérer une accolade fermante, recherche l'accolade
          ouvrante.
          
    - ] : en plus d'insérer un crochet fermant, recherche le crochet
          ouvrant.

    - ) : en plus d'insérer une parenthèse fermante, recherche l'ouvrante.
    
  MARQUAGE
  
    - <Meta-m> : définit une marque (voir menu Search/Set Emacs Mark)

    - <Meta-M> : se déplace vers la marque définie par <Meta-m> 
      (voir menu Search/Jump ti Emacs Mark)
      
 MACROS
 
   on peut définir des macros liées aux touches Meta-0, Meta-1, ..., Meta-9
   en définissant les procédures te:macro<i> ou est le numéro de la macro.
   Par défaut, on dispose des macros suivantes :
   
   - <Meta-0> : édite le .cshrc
   
   - <Meta-3> : insère une ligne de # (commentaires tcl)
   
   - <Meta-5> : insère une ligne de % (Commentaires Latex)
   
 
            
2.3.2.2 - Raccourcis Emacs 
^^^^^^^^^^^^^^^^^^^^^^^^^^
   
  Les raccourcis Emacs peuvent êtres validés ou invalidés par une préférence
  utilisateur (voir Menu Config/Graphic Preference Editor).
  S'ils sont validés, ils s'ajoutent aux raccourcis dits "de base" et les
  écrasent en cas de conflit.
   
DEPLACEMEMENT DANS LE TEXTE

  - <Control-p> : équivalent à <Up>
  
  - <Control-n> : équivalent à <Down>
  
  - <Control-b> : équivalent à <Left>
  
  - <Control-f> : équivalent à <Right>
  
  - <Control-a> : équivalent à <Home>
  
  - <Control-e> : équivalent à <End>
  
  - <Escape><-> : équivalent à <Meta-Up>
                
  - <Escape><>> : équivalent à <Meta-Down>
                  
  - <Escape><b> : équivalent à <Control-Left>
  
  - <Escape><f> : équivalent à <Control-Right>
  
SCROLLING
   
  - <Control-v> : équivaut à <Page Down>
  - <Escape><v> : équivaut à <Page Up>
    
EFFACEMENT

  - <Control-h> : équivaut à <Backspace>

  - <Control-d> : efface le caractère à droite du curseur ou la sélection
  
  - <Escape-Delete> : efface le mot à gauche du curseur ou la sélection
  
  - <Escape><d> : efface le mot à droite du curseur ou la sélection
  
  - <Control-k> : efface la fin de la ligne courante (depuis le point 
                  d'insertion ou la sélection et insère la ligne effacée dans 
                  le buffer Emacs (pas la sélection).
  

BUFFER EMACS

  - <Control-w> : efface la sélection et la place dans le buffer Emacs

  - <Control-y> : restitue le contenu du buffer emacs
      
REPETITION DE L'EFFET D'UNE TOUCHE
   
  - (<Control-u> ou <Escape>) <0-9> [<0-9>] ...    
  entre un nombre n de telle sorte que le caractère entré aprés le dernier 
  chiffre soit répété n fois.
  exemple <Control-u> <7> <Q> : affiche sept "Q"
  
  - <Control-u> <une_touche>  equivaut à <Control-u> <key-4> <une_touche>
                              (affiche 4 fois la touche)
  
INSERTION

  - <Control-q><Raccourci> : insère litéralement le raccourci
  exemple : <Control-q><Control-q> insère \x11
   
MARQUAGE

  - <Control-space> : positionne la marque emacs (équivaut à <Control-m>)
  
  - <Control-@> : positionne la marque emacs (équivaut à <control-m>)
  
  - <Control-x><Control-x> : intervertit la marque emacs et le point 
                              d'insertion
  
    
###################################################################
2.3.3 - Les raccourcis concernant exclusivement les champs d'entrée
###################################################################

Les champs d'entrée comme le champ "Search" de la boite de recherche "find",
ne comportemt qu'une ligne de texte. 
Ils ont par defaut la meme fonte que le texte, ce qui permet de
mieux selectionner leur contenu.
 
En plus des raccourcis généraux de l'éditeur, ils "comprennent" les raccourcis 
claviers suivants :


2.3.3.1 - Raccourcis de base
^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  INSERTION
  
  <toute-touche> : affiche la touche entrée au point d'insertion en
                   remplaçant la sélection si elle est présente.
                   
  DEPLACEMENT
  
  <Home> : déplace le point d'insertion au début du champ d'entrée ou au 
           début de la sélection en désélectionnant si elle est présente
           
  <Up> : équivaut à <Home>
            
  <End> : déplace le point d'insertion à la fin du champ d'entrée ou à la
          fin de la sélection en désélectionnant si elle est présente.
          
  <Left> : déplace le point d'insertion d'un caractère vers la gauche ou
           positionne le point d'insertion au début de la sélection et 
           désélectionne si la sélection est présente.
  
  <Right> : déplace le point d'insertion d'un caractère vers la droite ou
            positionne le point d'insertion à la fin de la sélection et 
            désélectionne si la sélection est présente.

  <Meta-Left> : equivaut à <Up>
  
  <Meta-Right> : équivaut à <Down>
  
  <Meta-Up> : équivaut à <Up>
  
  <Meta-Down> : équivaut à <Down>   

  <Control-Left> :  déplace le point d'insertion au début du mot situé à sa 
                    gauche ou positionne le point d'insertion au début de la 
                    sélection et  désélectionne si la sélection est présente.

  <Control-Right> : déplace le point d'insertion à la fin du mot situé à sa 
                    droite ou positionne le point d'insertion au début de la 
                    sélection et  désélectionne si la sélection est présente.
  EFFACEMENT
  
  <Delete> : efface le caractère à gauche du curseur ou efface la sélection
             si elle est présente.
             
  <Backspace> : équivalent à <Delete>
  
  <Control-h> : équivalent à 
  
  SELECTION
  
  <Meta-a> : sélectionne l'ensemble du champ d'entrée
  
  <Meta-d> : duplique la sélection dans le champ d'entrée (la sélection peut
             être située dans un autre champ, dans le texte ou dans une 
             autre application)
             ATTENTION : ne pas essayer de duplique la sélection dans une 
             entrée par le menu "Edit" qui ne concerne que le texte.
             
  <Control-v> : équivaut à <Meta-d>
  
  COUPER, COPIER, COLLER
  
  <Meta-c> : copie la sélection dans un buffer
  
  <Meta-x> : coupe la sélection (ATTENTION, on ne peut pas couper la
             sélection d'un champ d'entrée par le menu Edit, réservé au 
             texte !!)
             
  <Meta-v> : colle le buffer au point d'insertion dans le champ d'entrée
             (ATTENTION, on ne peut pas coller dans un champ d'entrée par
             le menu Edit, réservé au texte !!)
             
  ANNULATION
  
  <Meta-z> : annule la dernière opération effectuée dans le champ d'entrée
             ATTENTION, la commande Undo du menu Edit n'agit en aucun cas
             sur les champs d'entrée, elle est réservée au texte !!
  
  <Meta-Z> : annule le dernier <Meta-z> effectué dans le champ d'entrée
             ATTENTION, la commande Redo du menu Edit n'agit en aucun cas
             sur les champs d'entrée, elle réservée au texte !!
                
     
     
2.3.3.2 - Raccourcis Emacs 
^^^^^^^^^^^^^^^^^^^^^^^^^^

  DEPLACEMENT
  
  <Control-a> : équivaut à <Home>
  
  <Control-e> : équivaut à <End>
  
  <Control b> : équivaut à <Left>
  
  <Control-f> : équivaut à <Right>
  
  <Escape><b> : équivaut à <Control-Left>
  
  <Escape><f> : équivaut à <Control-Right>

  EFFACEMENT
  
  <Control-d> : efface le caractère situé à droite du curseur ou efface la
                sélection si elle est présente 
  
  <Escape-Delete> : efface le mot situé à gauche du curseur ou efface la
                    sélection si elle est présente 
  
  <Escape-d> : efface le mot situé à droite du curseur ou efface la
               sélection si elle est présente 

  <Control-w> : efface la sélection si elle est présente
  
  <Control-k> : efface les caractères du point d'insertion jusqu'à la fin
                du champ d'entrée
  
                
###############
###############
2.4 - La souris
###############
###############

########################################
2.4.1 - Les fonctionnalités de la souris
########################################

2.4.1.1 - La souris et le texte
^^^^^^^^^^^^^^^^^^^^^
            
            
              ___________
             |   |   |   |
             | 1 | 2 | 3 |
             |___|___|___|
             |           |
             |           |
             |           |
              \         /
               \_______/ 
                   |
                   |
                   \
            
            
     |--------------------------|-----------------------------------------|
     |  ACTION                  |         EFFET                           |
     |--------------------------|-----------------------------------------|
     |<Enfoncer le bouton 1>    | désélectionne et positionne le point    |
     |                          | d'insertion à l'endroit pointé          |
     |--------------------------|-----------------------------------------| 
     |<glisser bouton 1 enfoncé>| étend la sélection et provoque un       |  
     |                          | défilement d'écran hors du texte        |
     |--------------------------|-----------------------------------------|
     |<Double click bouton 1>   | sélectionne le mot "sous le curseur"    |
     |--------------------------|-----------------------------------------|
     |<Triple click bouton 1>   | sélectionne la ligne "sous le curseur"  |
     |--------------------------|-----------------------------------------|
     |<Shift+enfoncer bouton 1> | étend la sélection jusqu'au caractère   |
     |                          | désigné                                 |
     |--------------------------|-----------------------------------------|
     |<Enfoncer le bouton 2 ET  | duplique la sélection au point          |
     | relacher assez vite>     | d'insertion                             |
     |--------------------------|-----------------------------------------|
     | <Enfoncer le bouton 2 ET | provoque un défilement du texte         |
     |  glisser                 | SANS SELECTIONNER                       |
     |--------------------------|-----------------------------------------|
                                     

##########################
##########################
2.5 - La fenêtre d'édition
##########################
##########################

     (les fenetres d'info, les differents boutons)
     succint, se referer au manuel utilisateur (chapitre 3)

########################################
2.5.1 - Bouton de mode (en bas à droite)
########################################

  La liste des modes pour le Pop-up menu est triée par ordre alphabétique.
  

###############################################
2.5.2 - le Bouton de position (en bas à gauche)
###############################################

 Cliquer sur le bouton de position exécute la commande "Go To Line".

###################################
2.5.3 - les messages d'informations
###################################

  La petite fenêtre entre les menus et le texte contient les messages 
  d'informations de résultat des actions. Si cette information se révèle
  trop longue, une fenêtre séparée est ouverte.
  
  Dans les deux cas, les informations peuvent etre selectionnées à la 
  souris, pour l'usage désiré.
  
   
###########################################################################
###########################################################################
###########################################################################

3 - Manuel d'Utilisation

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

   == tout ce qu'on peut faire avec l'éditeur à l'exclusion de la programmation
   Tcl.
   chaque rubrique parle des fonctionnalités de base au début, puis des 
   fonctionnalités avancées vers la fin et ce de façon clairement délimitée 
   pour permettre a l'utilisateur de ne lire que ce dont il a besoin.

   A voir : la dernière partie de chaque rubrique peut constituer le
   manuel de programmation a savoir quelles procedures, variables globales
   sont concernées par la rubrique, dans quel fichiers sont elles-situées, 
   etc ...

  
################################################
################################################
3.1 - La sélection et la sélection rectangulaire
################################################
################################################


Sujet :

  Sélection X et buffers
  comment sélectionner, dupliquer, copier, couper, coller
  comment est gerée la selection rectangulaire

                   
                     -------------------------------- 
                     - Comportement de la seléction -
                     -       pour stead             -
                     --------------------------------

###################         
3.1.1 - généralités
###################                     

A la différence de jedit, STEAD ne permet pas d'avoir en même temps un point 
d'insertion et une sélection. Ainsi, lorsque du texte est sélectionné, le
curseur représentant le point d'insertion disparait. Toutes les 
fonctionnalités décrites ici sont valables aussi bien pour le texte que pour
les "entrées" qui en dépendent, à l'exclusion de la sélection rectangulaire.
               
#############################
3.1.2 - Sélectionner du texte
#############################

- On peut sélectionner du texte en glissant avec le bouton de gauche de la 
souris enfoncécomme dans la plupart des applications X-window. Un scrolling est 
alors déclenché si la souris sort de l'écran.

- Un double click sélectionne le mot courant

- Un triple click sélectionne la ligne courante

- un click sur le bouton de droite étend la sélection du point d'insertion
 (ou de l'extremité de la sélection la plus proche jusqu'au point désigné.

- Maintenir <Shift> enfoncé lorsqu'on clicke sur le bouton de gauche étend
 la sélection de façon à augmenter sa taille (attention : différent du bouton
 de droite :  faites des essais !!).

- Appuyer simultanément sur Shift et les flèches étend aussi la sélection
  Cette extension conserve la sélection par mot ou par ligne (un double 
  click suivi d'un shift-flèche, sélectionnera le mot suivant celui 
  précédemment sélectionné). 

  *BUG* Ne marche pas au lancement de l'éditeur

- On peut sélectionner tout le fichier courant par <Meta-a> ou en 
  choisissant "Select All" dans le menu "Edit"
     
- SELECTION RECTANGULAIRE :

  appuyer simultanément sur <Control> et sur le bouton droit de la souris 
  crée une sélection rectangulaire du point d'insertion ou de l'extrémité
  GAUCHE de la souris jusqu'au point désigné. La sélection rectangulaire 
  peut par exemple sélectionner une colonne de texte.
  
  *BUG 1* On ne peut utiliser la sélection rectangulaire que dans l'éditeur
  courant. On ne peut pas récupérer la sélection rectangulaire d'un autre
  éditeur.
  
  *BUG 2* pour l'instant la sélection rectangulaire ne peut pas être plus 
  large que son extrémité. 
  
  
  Ainsi, pour sélectionner la figurine ci-dessous de façon rectangulaire,
  il faut rajouter trois espaces apres le dernier caractère :
 
---------------------------------------------------------------------------
                        |\/\/\/| 
                        |      | 
                        |  _  _| 
                        | (o)(o) 
 Bart Simpson           C      _)
 Simpson@ailleurs.fr     |     | 
                         | '___| 
 Bla Bla Bla ....        |   /   
      
--------------------------------------------------------------------------  
 *BUG 3* Les tabulations ne sont pas gérées par la sélection rectangulaire

De même, les fontes proportionnelles entraînent des perturbations

############################
3.1.3 - Effacer la sélection
#############################

Lorsque du texte est sélectionné, on efface la sélection (rectangulaire ou 
non) en appuyant sur <Backspace>, ou <Delete>.


##############################
3.1.4 - Dupliquer la sélection
##############################

Lorsque du texte est sélectionné, on duplique la sélection en appuyant sur
le bouton du milieu de la souris ou par <Meta-d>, ou encore en choisissant 
"Duplicate Sel" dans le menu "Edit".
Ceci permet d'insérer une sélection située dans une autre application que 
STEAD.

Lorsqu'on vient de désélectionner du texte. On peut encore dupliquer la
sélection au point d'insertion. Ceci permet d'insérer la sélection 
précédente à un autre endroit du fichier.

Si on duplique une sélection rectangulaire, la sélection s'insère dans le 
texte en respectant sa configuration initiale. Par exemple, on peut 
facilement récupérer la figurine ci dessus pour l'insérer ensuite dans du
 texte :

---------------------------------------------------------------------------
|\/\/\/|  Bart Simpson          |\/\/\/| 
|      |  Simpson@ailleurs.fr   |      | 
|  _  _|                        |  _  _| 
| (o)(o)  Bla Bla Bla ....      | (o)(o) 
C      _)                       C      _)
 |     |                         |     | 
 | '___|                         | '___| 
 |   /                           |   /   

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


POUR UNE COPIE RAPIDE DE LA SELECTION

 - selectionner la partie a copier
 - positionner le curseur a l'endroit ou copier
 - copier avec le bouton 2

############################## 
3.1.5 - Remplacer la sélection
############################## 

Lorsque du texte est sélectionné, l'appui sur une touche correspondant à un
caractère affichable remplace la sélection (rectangulaire ou non) par ce 
caractère.


###################################
3.1.6 - Le COPIER - COUPER - COLLER
###################################

Lorsque du texte est sélectionné, on copie la sélection par <Meta-c> ou en
choisissant "Copy" dans le menu "Edit".
On coupe la sélection par <Meta-x> ou en choisissant "Cut" dans le menu "Edit".
Ces deux opération sauvegardent la sélection dans un buffer. 

Attention : à la différence de la duplication, la sélection doit être présente
exclusivement dans le texte édité ou dans une des "entries" qui en dépendent.

On colle le contenu du buffer au point d'insertion (ou a la place de la 
sélection courante) par <Meta-v> ou en choisissant "Paste" dans le menu "Edit".
Ce qu'on vient de coller n'est pas sélectionné.



#############################
#############################
3.2 - Le sélecteur de fichier
#############################
#############################
  
sujet :
  fonctionnement, options
    
##########################
3.2.1 - Choix d'un fichier
##########################

    Sélectionner le fichier dans la liste fournie en cliquant deux fois
    sur le fichier ou entrer le nom du fichier au clavier dans le champ "File".
    Appuyer ensuite sur <Return> ou sur le bouton <Ok>
    
    Attention, les fichiers se terminant dans la liste par un '/' sont des
    répertoires.
    
##########################
3.2.2 - Expansion des noms
##########################
    
    Il est possible de n'entrer que le début des noms de fichiers ou de 
    répertoire. S'il n'y a pas de conflit, l'appui sur la touche 
    <Meta-Barre d'espacement> complète le nom.
    
#####################################
3.2.3 - Affichage des fichiers cachés
#####################################
   
    Un bouton "Show Hidden Files" est à votre disposition pour choisir
    ou non d'afficher les fichiers ou répertoires cachés (commençant par un .).
    
#############################
3.2.4 - Filtrage des fichiers
#############################
    
    Une entrée "Filter" permet d'appliquer un filtre sur les fichiers du 
    répertoire. * signifie tous les fichiers. *.tcl signifie "Tous les fichiers
     se terminant par .tcl". Il s'agit du style "glob" (voir UNIX : ls,...).
    S'ils sont affichés, le filtre s'applique aussi aux fichiers cachés.
    Le brower propose une liste des extensions disponibles dans le repertoire
    courant, pouvant faire office de filtre. Cliquer sur "Filter" pour
    obtenir cette liste et choisir le fitre désiré.
    Attention, Le filtre ne s'applique pas aux répertoires.
    
    L'appui sur return dans le champ "Filter" entraine la relecture du
    répertoire et l'affichage de fichires correspondant au filtre.
    
#####################################################
3.2.5 - Navigation dans les champs "File" et "filter"
#####################################################
    
    L'appui sur <Tab> dans un champ provoque le passage au champ suivant.
    
###################
3.2.6 - Réaffichage
###################
    
    Pour qu'une e modification soit prise en compte (changement de filtre,
    choix d'affichage des fichiers cachés) il est nécessaire de cliquer sur
    le bouton "Rescan" qui provoque le réaffichage de la liste des fichiers.


##################
##################
3.3 - L'impression
##################
##################
    
  La boite de dialogue "imprimer" se présente sous la forme d'un prompt avec
  la commande d' impression modifiable. La commande d'impression est une 
  préférence utilisateur. (Voir préférences utilisateur)
  STEAD remplace tout "%F" placé dans la commande par le fichier. 
  si le fichier est propre (non modifié) on imprime le fichier lui-même. 
  Sinon, c'est le contenu du texte édité qui est imprimé à travers un fichier 
  tampon.
  STEAD indique lorsque l'impression est terminée et détruit alors le fichier
  tampon éventuellemnt créé.
  
  Exemple de commande imprimer par défaut (extrait du fichier stead-prefs) : 
  
  *print_command: a2ps -8 %F | lp -dpastis 
  
  (Ne marche que sur HP) 
  
  Si le nom du fichier termine la commande, il n'est pas nécéssaire d'écrire
   "%F" à la fin : exemple dans le fichier stead-prefs : 
   *print_command: imprimer 

  FICHIERS TEMPORAIRES, PROBLEMES


################################
################################
3.4 - L'annulation des commandes
################################
################################

Sujet :
  comment annuler / refaire
  qu'est-ce qui peut ou ne peut pas être annulé
  comportement par rapport a l'etat propre ou pas du fichier
  empêcher l'annulation
    
La plupart des commandes modifiant le fichier (à part l'entrée simple d'un
caractère affichable) provoquent la sauvegarde d'un "checkpoint" ou point
'annulation (sauvegarde en en mémoire de la valeur du texte à ce moment précis).

- L'utilisation de la commande Undo (Dans le menu Edit ou par Meta-z) permet
  un retour à l'état précédent la dernière commande annulable.

- La commande Redo (Meta-Z) permet d'annuler le undo précédent.

On navigue ainsi dans un anneau d'états succesifs du fichier.

Le undo restaure aussi l'etat du fichier (Marques, tags, selection,...)
Il est possible d'effectuer des checkpoint manuels (commande checkpoint dans 
le menu Edit)
le undo fonctionne aussi pour les entrées
le undo fonctionne aussi pour l'expansion des abbreviations dans le texte 
d'une facon particulière.

Conseil :
Le undo de STEAD prend beaucoup de place en memoire pour les gros fichiers.
Aussi est-il conseille de limiter le nombre de niveaux de undo a 30 (editer
pour cela le fichier stead-prefss puis utiliser "reread preferences file" 
dans le menu Config ou utiliser le panneau "editor preferences".

performance :
Si les performances de STEAD sont trop ralenties, on peut inhiber le undo (utiliser
"disable undo" dans le menu Edit) ou liberer la memoire des undo ("clear undo
memory")



#################################
#################################
3.5 - Les préferences utilisateur
#################################
#################################

Il s'agit de toutes les options de l'éditeur modifiables par l'utilisateur.
Pour changer la fonte du texte, sa couleur ou la commande d'impression
utiliser le menu "Config/Graphic Preferences Editor" qui permet d'editer
graphiquement ces préférences, d'appliquer les changements à l'éditeur
courant (bouton "Done"), d'annuler les changements (Cancel), d'initialiser
les préférences aux valeurs par défaut de stead ("Reset") et enfin
d'appliquer les changements tout en les sauvegardant afin de conserver
leur effet pour une autre session (Save).

Les préférences utilisateurs sont sauvegardées dans le fichier steadrc
situé dans le repertoire .tk/stead (variable globale TE_USER_DIR) sous la
forme set EDITPREFS(<nom-de-préférence>) {<valeur>}
On peut éditer directement ce fichier par "Config/Edit User File")
On écrira les préférences entre les lignes de commentaires
# PREFERENCES UTILISATEUR
et
# FIN DES PREFERENCES UTILISATEUR
Ainsi lors d'une sauvegarde des préférences par le panneau de configuration
bouton "Save", menu "Config/Graphic Preferences Editor", Stead écrase les
valeurs écrites dans le fichier steadrc par les valeurs courantes sans toucher
au reste des commandes tcl de ce fichier.

Voici leur signification :

   0 : pas d'action, 1 : action, entre paranthèses : valeur par défaut.

   autobreak         : couper les longues lignes avec des espaces (0)
   
   autoindent        : autoindentation (1)
   
   autoposition      : auto-positionnement des boites de dialogue au
                       centre de l'écran (1)
                       
   bindings          : raccourcis claviers basiques ou emacs (emacs) 
   
   clear_undo        : effacement de la memoire des undo après une
                       sauvegarde (1)
                         
   dabbrev           : expansion des abréviations dynamiques avec Meta-Tab (0)
   
   flashtime         : temps de coloration des parties surlignées (par la 
                       balance ou le go-to-line par exemple) (500 ms)
                      
   highlightbg       : couleur de fond du surlignage (magenta)
   
   indent_string     chaine d'indentation (2 espaces par défaut "  ")
   
   j_fs_fast          : browser rapide (0)
    
   otherabg           : couleur de fond pour les éléments activés de 
                       l'éditeur autres que le texte (#c9baa7)
                       (un bouton est activé lorsque la souris est dessus,
                        par exemple)
                                            
   otherbg            : couleur de fond pour les éléments autre que le 
                       texte 
  
   otherfg            : couleur d'encre pour les éléments autre que le 
                        texte
  
NB : réglez vos couleurs à l'aide de la palette 
(voir menu Config/Graphic Preferences Editor)  
  
   prefix             : valeur du préfixe (#)
   
   print_commmand     : commande d'impression 
                        (a2ps -8 %F | lp -dpastis)
   
   sabbrev            : expansion des abbréviations statiques par <Meta-Space>
                        (0)
                        
   savestate          : sauvegarde de l'état du fichier (position, 
                        sélection marques et tags du fichier) (0)
                        
   scrollbarside      : barres de défilements sur la gauche (left)
   
   textbg             : couleur de fond du texte
          
   textbw             : épaisseur du bord du texte (2)
          
   textfg             : couleur d'encre du texte
          
   textfont           : fonte du texte selon l'ordre : 
                        foundry, family, weight, slant, set width, add style,
                        pixel size, point size, resolutionX, resolutionY, 
                        spacing, avg width, registry, encoding,
              (-*-lucidatypewriter-medium-r-normal-*-12-*-*-*-*-*-iso8859-*)
              
   textheight         : hauteur du texte (80)
   
   textiw             : largeur du curseur dans le texte (2)
          
   textsb             : couleur de fond de la sélection
          
   textsbw            : épaisseur du bord de la sélection (2)
   
   textsf             : couleur d'encre de la sélection
   
   textwidth          : largeur du texte en nombre de colonnes (40)
   
   textwrap           : façon d'afficher le texte (on n'affiche pas les
                        caractères en trop sur une ligne : none, on coupe 
                        la ligne suivant les caractères : char ou suivant 
                        les mots : word.)
                        (char)
  
   tk_strictMotif     : émulation motif stricte (0)
   
   undoable           : utilisation possible du undo (1)
   
   undolevels         : nombre de commandes annulables (30)


Pour les changer, éditez ce fichier ou utilisez le panneau de configuration 
dans le menu Config.

###############################      
###############################      
3.6 - La recherche/remplacement
###############################
###############################


Sujet :
  
  description du panneau de recherche remplacement et fonctionnalités
  simples
  recherche reguliere
       
#########################################
3.6.1 - Effectuer une recherche régulière 
#########################################

Pour effectuer une recherche régulière dans le texte afficher la boite de 
dialogue "Find" en en sélectionnant "Find..." dans le menu "Search" ou en 
entrant <Meta-f>

Parmi les boutons d'options se trouvent les boutons "Regexp-find" et 
"Regexp-by-line".  
      
Le premier indique que la chaine de recherche est une expression régulière.
Le second indique si la recherche s'effectue dans tout le fichier, ou ligne 
par ligne (option par défaut)

Après avoir entré l'expression régulière, lancer la recherche par le bouton 
search ou par les divers raccourcis.

IL N'EST PAS POSSIBLE :

- de remplacer par une sous-chaine 
- de rechercher en arrière


##################################
3.6.2 - Les expressions régulières
##################################

Elles contiennent certains caractères possédant une signification 
particulière : 

^ : remplace le début de la chaine
 
$ : remplace la fin de la chaîne

. : remplace tout caractère

[] : les crochets indiquent remplacent un caractère parmi ceux contenus dans
     le crochet.Il est possible de représenter un intervalle de caractères 
     par le signe '-'. Un ^ (accent circonflexe) aprés le premier crochet 
     inverse le sens de l'intervalle.
      
     Exemples :

       [a3d] remplace un des caractères 'a' ou '3' ou 'd'
       [a-zA-Z] remplace toute lettre (minuscule ou majuscule)
       [^a-zA-Z] remplace tout caractère sauf une lettre
       
+ : Placé après une expression régulière, remplace une ou plusieurs 
    occurences de l'expression.
    
* : Placé après une expression régulière, remplace zéro ou plusieurs 
    occurences de l'expression.

? : Placé après une expression régulière, remplace zéro ou une occurence 
    de l'expression.
       
() : les parenthèses servent à grouper plusieurs expressions régulières en
     une seule

     Exemple :
       (Ab)* une séquence (pouvant être nulle) de 'Ab'
       ^(0x)?[0-9a-fA-F]$ remplace tout chaine qui est un nombre hexadécimal
     
regexp1|regexp2 : remplace l'une et l'autre des expressions régulières

\x : remplace le caratère x sauf pour les caractères spéciaux suivants :
     - \a : Alerte sonore (0x7)
     - \b : Backspace (0x8)
     - \f : Form feed (0xc)
     - \n : Return (0xa)
     - \r : Retour chariot (0xd)
     - \t : Tabulation (0x9)
     - \v : tabulation verticale (0xb)
     - \ddd : caractère dont la valeur octale est ddd (un, deux ou trois
              chiffres)
     - \xhh : caractère dont la valeur hexadécimale est hh (nombre 
              quelconque de chiffres)
     
pour obtenir remplacer '\x' x étant n'importe quel caractère, il suffit 
d'utiliser \\x comme expression régulière.

La chaine de recherche est défini par l'option "Regexp-by-line" :
 

#################################
3.6.3 - Recherche ligne par ligne
#################################

L'expression régulière est testée dans la ligne courante et non dans le 
fichier.Les retours chariots ne sont jamais sélectionnés comme des 
caractères quelconques.

Cela signifie que :
- '^' remplace le début de la ligne suivant le point d'insertion
- '$' remplace la fin de la ligne suivant le point d'insertion
- '.' remplace tout caractère sauf un <return> qui marque la fin de la 
      ligne
lorsque $ est présent dans la chaîne de recherche, le dernier return de la
ligne est sélectionné

LA RECHERCHE S'EFFECTUE A PARTIR DU POINT D'INSERTION  MAIS ^ EST LE DEBUT
DE LA LIGNE SUIVANTE SAUF SI ON EST SUR LE PREMIER CARACTERE DU FICHIER.

Exemples :

^.*$   : sélectionne tour à tour toutes les lignes du fichier
^$     : sélectionne les lignes vides du fichier
[^X]+  : sélectionne A L'INTERIEUR DES LIGNES tout ce qui ne contient pas de
         X
^[^X]+ : sélectionne tour à tour les lignes qui ne commencent pas par un X
         jusqu'au premier X rencontré.
[^X]$  : sélectionne tour à tour les lignes ne finissant pas par un X du
         caractère
         suivant le dernier X jusqu'au dernier (y compris le return)
         
^\t+   : selectionne toutes les tabulations au début de chaque ligne

etc...

Dans le cas de la recherche régulière "ligne par ligne", la recherche d'un 
<return> n'a aucun sens : il est donc inutile de rechercher les caracteres
speciaux \n, \x0a et \12.

BUG ? :
.* : ne donne rien
.*$ : ne marche que pour une seule ligne

######################################
3.6.4 - Recherche dans tous le fichier
######################################

L'expression régulière est testée dans tout le fichier, les retours chariots
sont pris en compte comme des caractères quelconques. 
D'ou :
- '^' est le point d'insertion
- '$' est la fin du fichier

La recherche s'effectue à partir du point d'insertion.

#############################
3.6.5 - Exemples de recherche
#############################


\n\n\n  : sélectionne trois return consécutifs,m ce qui coreespond à deux
          lignes vides
[^X]+   : sélectionne DANS LE TEXTE tout ce qui ne contient pas de X (y 
          compris les <return>)
          
[^X]$   : sélectionne à partir du point d'insertion du caractère
           suivant le dernier X jusqu'à la fin du fichier.
   
BUG ? 

- la recherche régulière ligne par ligne d'un point "\." ne marche pas
  pour l'instant dans : utiliser le recherche globale.
.*$ ne marche qu'une seule fois
^.* idem

####################
3.6.6 - Remplacement
####################


Si on est en mode de recherche régulière alors la chaine de remplacement
est aussi une chaine régulière acceptant les mêmes substitutions que la 
chaine de recherche avec deux différences majeures :

- le caractère & remplace la chaine trouvée en entier 
- \x (où x est un entier) remplace la x-ième sous-expression parenthésée :

ATTENTION toujours sauvegarder AVANT de faire une recherche remplacement !!


#########################################
3.6.7 - Exemple de recherche/remplacement 
#########################################
(mode ligne par ligne)

ex 1 :

  chaine de recherche : ^[#%]
  chaine de remplacement : &&
  
  => double les caractères # ou % s'ils commencent une ligne

ex 2 :

  chaine de recherche : ^[#%](.+)[#%]$
  chaine de remplacement : \1
  
  => supprime tous les  # ou % situés en debut ou en fin de ligne
  
ex 3 :

  chaine de recherche : [\.:]
  chaine de remplacement : &\n
  
  => saute une ligne après un . ou :
  
  
  
Autre Exemple : 


Comment supprimer une grande zone de texte mal définie, par exemple pour 
supprimer les 12 premières pages d'un fichier postscript à imprimer.

Solution  :


  - chercher la chaine "Page" ou "showpage" pour voir l'allure des 
    commande de saut de page,

  - En fonction du resultat, on peut :

    chercher :  
    
        "%%Page: slide_1 1.*%%Page: slide_12 12"
                          ^^  ==> ces deux meta caractere representent 
                                  une chaine quelconque
        
    et remplacer par :
    
        "%%Page: slide_12 12"

                              
    en utilisant les options suivantes :
        
       - "Regexp-find"   avec l'option "Regexp-global"
                         (ou supprimer l'option "Regexp-by-line"

#################################
#################################
3.7 - La navigation dans le texte
#################################
#################################
  
     - reference a la recherche remplacement
     - les numeros de lignes
     - la gestion des marques
     - colorer certaine lignes pour se reperer           

 
##############################
##############################
3.8 - La gestion de la balance
##############################
##############################
  
Sujet :
  definition, recherche automatique

Lorsqu'un element de balance est entre, par exemple },] ou ), stead recherche
automatiquement l'le partenaire gauche correspondant et le surligne quelques
instants. De plus, la commande "Balance" permet de selectionner le premier
groupe de carateres entourees par ces elements.

ATTENTION : la selection des balance peut prendre un certain temps si
le fichier comporte beaucoup d'elements de balance

ASTUCE D'UTILISATION DE BALANCE

Pour aller au debut d'une longue parenthese qu'on vient de fermer (par
exemple le corps d'une longue procedure TCL...), taper la sequence 
suivante :
 
    <FLECHE GAUCHE> < Meta-b> <FLECHE GAUCHE>

Explication :
 
<FLECHE GAUCHE> : pour se positionner juste avant la parenthese fermante
< Meta-b>       : pour selectionner toute la parenthese
<FLECHE GAUCHE> : pour se positionner en debut de selection puis 
                  deselectionner

#################
#################
3.9 - Les filtres
#################
#################
  
  Ces commandes fonctionnent de la même manière : on sélectionne un ensemble de
  caractères puis on actionne la commande par le menu Format ou le raccourci
  correspondant et la sélection est remplacée par le résultat de la commande.
  
  La plupart s'appliquent aussi à la sélection rectangulaire.
  
##############################
3.9.1 - L'indentation de texte 
##############################
            
  La chaine d'indentation peut etre definie par Format/"set indent spaces".
            
  La commande déindente toujours après avoir remplacé les 
  tabulations de début de ligne par le nombre d'espaces adéquat et
  après avoir étendu la sélection au début de la première ligne
  et à la fin de la seconde.

L'indentation effectue un traitement assez lourd (mais efficace !) sur les
tabulations. Aussi,refuse-t-elle de fonctionner si la selection est trop 
importante : selectionnez moins de 100 lignes a la fois pour les indenter

            
##################
3.9.2 - Le préfixe
##################

Par le clavier (voir "Les raccourcis concernant exclusivement le texte") ou le 
menu (voir menu Format) on peut faire précéder chaque lignes de la sélection
d'un ensemble de caractère appelé préfixe, avant ou après l'indentation.

Le préfixe est défini comme une préférence utilisateur de l'éditeur
(voir Préférences utilisateur "prefix" et "menu Format"/"Set Prefix").

Cependant, il dépend en général du mode et correspond souvent à la mise en
commentaire du langage considéré.

Aussi suivant le mode, le préfixe défini par l'utilisateur pourra être remplacé
par le préfixe propre au mode.

Exemple : pour le mode Tcl, le préfixe est #
          pour le mode Latex, le préfixe est %


POUR ALLER PLUS LOIN :

Toutefois, rien ne vous empèche de changer le préxixe par défaut d'un mode
en éditant votre fichier ~/.tk/stead/<nom_de_mode>-mode-user.tcl
(<nom_de_mode>/Customize Mode)

ex :

 set EDITPREFS(prefix) "<<<"

        
################################################
3.9.3 - Le passage par UNIX (filtres, commandes) 
################################################



APPEL A UNIX : permet de combler les lacunes de l'editeur

Exemple d'utilisation des menus "File/Insert UNIX cmd..." et 
"Pipe Through unix cmd..."

pour inserer le résultat de la commande "ls -al"

Menu "FILE/Insert-output of..." taper "ls -al"

total 4356
drwxr-xr-x  37 diam     lei         3072 May  4 08:00 .
drwxr-xr-x  21 diam     lei         3072 May  4 08:27 ..
-rwxr-xr-x   1 diam     lei        25381 Oct 22  1993 .newsrc
drwxr-xr-x   2 diam     lei         1024 Mar 21 08:36 ALLIANCE
drwxr-xr-x   2 diam     lei         1024 Jul 29  1993 ARCHITECTURE

Pour supprimer les lignes correspondant a des repertoires : selectionner le
texte, et filtrer la selection par la commande UNIX : 
Menu "PIPE/Unix Pipe through..." et taper "grep ^\[^d\]"
(Noter les "\" avant les crochets pour eviter l'interpretation TCL)

-rwxr-xr-x   1 diam     lei        25381 Oct 22  1993 .newsrc


ON PEUT AUSSI taper directement :
Menu "FILE/Insert-output of..." taper "ls -al | grep ^\[^d\]"

--------------------------------------------------------------------------
MANUEL DE MAINTENACE

Pas d'interpretation TCL avant l'exécution du filtre Unix.
--------------------------------------------------------------------------
###############################################
3.9.4 - Le passage par TCL (filtres, commandes) 
###############################################
  
  Voir menu Format fill, Case, Sort, Wrap selection).
 
  REMARQUE :

  - La sélection, entrée de la commande fill, CASE, case et tout filtre en 
  géneral n'est pas forcément incluse dans le texte. Ceci permet d'insérer
  un filtre appliqué à un ensemble de caractère contenu dans une autre
  application (xterm, ...) dans votre texte.

##################################
##################################
3.10 - Les abréviations dynamiques
##################################
##################################

The editor supports two different models of abbreviation expansion: dynamic
abbreviation and static abbreviation, inspired by Emacs' dabbrev-mode and
abbrev-mode, respectively.  Both are intended to save keystrokes by allowing
you to type a short sequence of characters and have the editor expand it to 
an entire word.  Both are enabled through entries on the `Abbrev' menu or
through checkboxes on the Mode­Specific Preferences panel (described under 
Preferences);  there are also keyboard equivalents.

Dynamic Abbreviation
In dynamic abbreviation, you can type the beginning of a word you've used
earlier in the text and press the Meta-Tab key.  
The editor will search backwards
in the text and try to find a word that starts with the letters (and/or 
numbers) you've typed.  If such a word is found, the word you're typing will 
be expanded to match (and a space will be inserted to end the word).  If no 
matching word is found, nothing happens.


############################
############################
3.11 - Les alias électriques
############################
############################


Sujet :

fonctionnement general, fichiers concernes, 
positionnement par rapport aux modes

electricAlias Help LAST UPDATE: 01/24/93 9:29:39 AM 

This help file refers to version 1.7 of electricAlias.tcl

######################
3.11.1 - GENERAL USAGE
######################

    ElectricAlias is simple to use.  Normally it is bound to the
    <TAB> character, so you just type away.  You define aliases
    in file steadrc

#############################
3.11.2 - TEMPLATE DEFINITIONS
#############################

  electricAlias-def MODE NAME ?DEFINITION?

  Defines or displays an alias template.  If DEFINITION
  is omitted and the alias exists, then the current
  definition is returned per TCL 'return'.
  
  Aliases may have embedded variables, TCL commands, stops,
  line-ends and deletes as described under TEMPLATES below.

  If MODE begins with a bullet (¥), then the alias is only effective
  when used as the first token on a line.


  Templates provide a mechanism for inserting text with temporary stops.
  Facility is also provided to preserve indentation and allow for alias
  variable insertion and TCL commands.  This is accomplished with special
  character sequences embedded within the template.  Hopefully, none of
  these are needed in the inserted text itself. 
    
  Here are the definitions:

  \b          deletes one character to the left.  Useful for outdenting.

  ¥ (xa5)     inserts a temporary mark (global variable EA_8bit_mark)

  ¤ÇCMDÈ      inserts the results of executing the TCL command CMD.  Be
  (a4 c7 c8)  careful if your command contains anything that would be
  	      construed as part of a regular expression.  To be safe use
              only single procedures with simple arguments.  Also, the CMD
              may not contain a closing 'È'.

              It is possible for ¤ÇCMDÈ's to be recursive (subject to the 
              same restrictions above) or include ¤{VAR}'s.
              global variables EA_8bit_begin and EA_8bit_end

  ¤{VAR} (a4) inserts an alias variable (IMPORTANT: inserted AFTER ¤ÇCMDÈ's)
              It is possible for ¤{VAR}'s to be recursive or include 
              ¤ÇCMDÈ's (subject to the ¤ÇCMDÈ restrictions above).
              global variable EA_8bit_var

  \r        inserts a new-line break and cues procedure to preserve 
            indentation if alias mode is bullet type or when called 
            explicitly.

  \n        identical to \r

  \t        inserts a tab for indentation

  Other escapes are as defined by TCL

  You can trick templates to insert some of the above with the following;
  although, why you would want to is beyond me.
  
  '\ \bb' inserts literal '\b'
  '¤ \bÇCMDÈ' inserts literal '¤ÇCMDÈ'
  '¤ \b{VAR}' inserts literal '¤{VAR}'
  
  
  En résumé, on dispose des variables suivantes 
  
                            EA_8bit_mark   : ¥
                            EA_8bit_begin  : ¤Ç
                            EA_8bit_end    : È
                            EA_8bit_var    : ¤
  pour les electric alias
  
  La premiere possede deux significations :
  
    1-placée avant le nom du mode dans la définition d'un electric alias, elle
      signifie que l'alias ne sera reconnu que s'il est le premier mot de la
      ligne : 
    2-au sein de la définition de l'electric alias elle insère une marque
      temporaire pour le navigation au sein de l'alias étendu
  Exemple :
   electricAlias-def ¥C while   "while (¥)\r  {\r\t¥\r  }\r¥"
   1-l'alias "while" pour le mode C ne sera etendu que s'il est le premier mot 
   de la ligne car "C" est précédé de ¥
   2-trois marques ¥ sont insérées après extension de l'alias while.
   Ce caractère huit bits n'étant pas accessible au clavier, on peut écrire :
   set M $EA_8bit_mark
   electricAlias-def [set M]C while   "while ($M)\r  {\r\t$M\r  }\r$M"
   
  La seconde et la troisième entourent l'appel d'une procédure dans un electric 
  alias
  
  La quatrième permet la définition d'une variable propre aux électric Alias


########################
3.11.3 - SIMPLE EXAMPLES
########################

    The following examples show several templates that might be appropriate
    for the C programming language:
    
    electricAlias-def ¥C while   "while (¥) {\r\t¥\r}/*endwhile*/¥"
    electricAlias-def ¥C for     "for (¥;¥;¥) {\r\t¥\r}/*endfor*/¥"
    electricAlias-def ¥C if      "if (¥) {\r\t¥\r}/*endif*/¥"
    electricAlias-def ¥C elseif  "\b} else if (¥) {\r¥"
    electricAlias-def ¥C else    "\b} else {\r¥"

    Suppose that the user has an open window for MYFILE.C (please bear
    with the poor graphics):
    +-------------------
    | MYFILE.C
    +-------------------
    |
    +-------------------

    By typing 'while\t' this would insert:
    
    +-------------------
    | MYFILE.C
    +-------------------
    |while () {
    |	
    |}/*endwhile*/
    +-------------------
    
    The cursor would be positioned inside the parentheses ready for an
    expression to be typed.  When done with the expression, the user would
    press CONTROL-J to jump to the next position where the body of the
    WHILE loop would be entered.  A final CONTROL-J would position the user
    just after the /*endwhile*/ comment.
    
    For this example, suppose the user types 'i < 5';

    Suppose the user type 'if\t' inside the body of the while, then we
    would get:

    +-------------------
    | MYFILE.C
    +-------------------
    |while (i < 5) {
    |	if () {
    |		
    |	}/*endif*/
    |}/*endwhile*/
    +-------------------

    For the IF conditional suppose the user typed '*c != 0'.
    Now in the body of the IF the user enters 'a = 1;else\ta = 2' and gets:
    
    +-------------------
    | MYFILE.C
    +-------------------
    |while (i < 5) {
    |	if (*c != 0) {
    |		a = 1;
    |	} else {
    |		a = 2;
    |	}/*endif*/
    |}/*endwhile*/
    +-------------------

    Suppose you don't like my indentation style for C.  Perhaps the 
    following definitions and the resulting code would be more suited to
    your tastes:

    electricAlias-def ¥C while   "while (¥)\r  {\r\t¥\r  }\r¥"
    electricAlias-def ¥C for     "for (¥;¥;¥)\r  {\r    ¥\r  }\r¥"
    electricAlias-def ¥C if      "if (¥)\r  {\r    ¥\r  }\r¥"
    electricAlias-def ¥C elseif  "\b\b}\r\b\b\b\belse if (¥)\r\b\b{\r¥"
    electricAlias-def ¥C else    "\b\b}\r\b\b\b\belse\r\b\b{\r¥"

    Now MYFILE.C would look like this:
    
    +-------------------
    | MYFILE.C
    +-------------------
    |while (i < 5)
    |  {
    |    if (*c != 0)
    |      {
    |        a = 1;
    |      }
    |    else
    |      {
    |        a = 2;
    |      }
    |   
    |  }
    +-------------------

####################
3.11.4 - QUICK START
####################

'electricAlias' is a general-purpose Tcl package that provides a 
flexible way to automate entering repetitive text. This text can be as 
simple as the current date, or can be a template containing many entry 
points where additional data is added. In this case, 'electricAlias' 
inserts the boilerplate and provides a convenient way to jump between 
entry points. Using electricAlias is as simple as typing a key word and 
hitting the tab key. 

    The following instructions will get you up and running ASAP. You will
    have three new bindings: 
    *1. <Meta-Space> will be bound to 'electricAlias-insert' and 
    *2. <control-tab> will be bound to 'nextStop', which jumps you to the 
       next entry point in the current aliased text.
    *3. <control-shift-j> is bound to 
       'prevStop', which jumps you to the previous entry point. 

    To use, simply place this file place in a folder named 
    $HOME:Tcl:ElectricAlias: and append:

            'source $HOME:Tcl:ElectricAlias:electricAlias.tcl' 

    to AlphaBits.tcl. Also create a folder named 
    $HOME:Tcl:ElectricAlias:Aliases and make sure to place at least a file 
    named 'Aliases' in it with your default aliases. If you wish to use the
    language extensions feature, place respective files 'Aliases.Tcl', 
    'Aliases.C', etc.. there as well. 

    To invoke in the current session you may manually source/load
    it yourself; otherwise, quit and relaunch Alpha.

    Now go read about TEMPLATES below and examine the aliases files
    to understand how it all fits together.

#########################
3.11.5 - PROCEDURE SYNTAX
#########################

    electricAlias-insert

      Invokes alias template insertion.  Text is scanned from
      the current cursor position to the beginning of the line.
      If the non-whitespace text immediately adjacent has an
      alias entry, then template insertion proceeds.

    electricAlias-idefine

      An interactive mode to define aliases.  Crude.

    electricAlias-def MODE NAME ?DEFINITION?

      Defines or displays an alias template.  If DEFINITION
      is omitted and the alias exists, then the current
      definition is returned per TCL 'return'.
      
      Aliases may have embedded variables, TCL commands, stops,
      line-ends and deletes as described under TEMPLATES below.

      If MODE begins with a bullet (¥), then the alias is only effective
      when used as the first token on a line.

    electricAlias-undefine MODE NAME

      Undefines entry for alias MODE and NAME

    electricAlias-exists MODE NAME

      Returns 1 if alias NAME exists; otherwise 0.

    electricAlias-list ?MODE?

      Inserts a sorted list of current definitions.
      Specifying a MODE will restrict the returned list to
      that mode.
  
      List may be used in another TCL.  Uses getalias
      proc.

    electricAlias-mode ?NAME?

      Sets the current alias mode.  This is used to determine
      which alias to use in a given situation.  Leading bullet (¥),
      if any, is removed.  This forces use of the MODE field when
      defining aliases that must occur as the first token of a line.
      
      If the NAME is missing, then the current mode is returned.

    electricAlias-names ?MODE?

      Returns a list of currently defined alias names.
      Specifying a MODE will restrict the returned list to
      that mode.

    electricAlias-off

      Turns electricAlias off

    electricAlias-on

      Turns electricAlias on

    electricAlias-iundefine

      An interactive mode to remove aliases.  Crude.

    electricAlias-removeall ?MODE?

      Removes all alias definitions and variables
      Specifying a MODE will restrict the returned list to
      that mode.

    electricAlias-var MODE NAME ?DEFINITION?

      Defines an alias variable for use in templates.  If the pattern
      ¤{NAME} is found during template insertion, it is replaced with
      the DEFINITION.  This allows a single template to have multiple
      uses.
      
      If the DEFINITION is omitted, then the current definition
      is returned.

    electricAlias-version
    
      Returns the current version info.


############################################################
3.11.6 - Copyright original des electric_alias (avant modif)
############################################################


    Copyright © 1993 by David C. Black
    All rights reserved.

AUTHOR
    
    David C. Black
    Internet: black@mpd.tandem.com
    GEnie:    D.C.BLACK
    USnail:   6217 John Chisum Lane, Austin, Tx 78749-1838


###########################################
3.11.7 - Les alias électriques et les modes
###########################################

  Les electric alias utilisateur sont définis dans 
  le fichier ~/.tk/stead/<nom_de_mode>-mode-user.tcl.

  Les electric alias systemes sont dans 
  STEAD/tclLib/jeditmodes/<nom_de_mode>-mode.tcl,

###############################################
3.11.8 - Indentation dans les alias électriques
###############################################

  Pour les modes verilog, C, csh, Pascal et tcl, les alias inserent automatique-
  ment la chaine d'indentation definie par les preferences utilisateur a la 
  place de la tabulation des version précédente.
     
###########################################  
3.11.9 - L'annulation des alias électriques
###########################################

CONVENTION POUR le UNDO et les electyric ALIAS :

   *1 - electric Alias utilisés comme abbréviations :
   
     EXEMPLE EN TCL :
     si on tape if<meta-space>, on obtient :
                if {} {
                        
                }
     si on fait Undo : on obtient
                if 
                  ^--espace
                  
   *2 - insertion d'un mot cle par le menu :
    
     EXEMPLE EN TCL :
     choix : templates/if, on obtient :
                if {} {
                        
                }
     si on fait Undo, l'ensemble de la commande insérée s'efface
     
   *3 - wrap de la selection     
   
     EXEMPLE EN LATEX :
     choix : blabla selectionné puis templates/section/part
     resultat : \part{blabla}
     
     premier undo : on obtient : \part{} (la selection est remplacee)
     deuxieme undo : on obtient : blabla
     On a donc un undo intermediaire qui permet le remplacement de la selection
     au lieu du wrap....


     
############################
############################
3.12 - Utilisation des modes
############################
############################

Sujet :
    gestion generale des modes (changer de mode et comment utiliser les 
    différents modes existants SANS PARLER DE CONFIGURATION DU MODE)  

###########################
3.12.1 - Changement de mode
###########################

Un bouton en bas droite de l'éditeur permet de changer de mode. A la lecture 
d'un fichier, TE détermine son mode par l'extension du fichier (.c => mode C
par exemple) ou par la première ligne du texte qui contient pour certains 
langages le nom de l'interpréteur. 


##############################################
3.12.2 - Fonctionnalité de base pour les modes
##############################################

3.12.2.1 - La navigation
^^^^^^^^^^^^^^^^^^^^^^^^

 Le bouton de navigation pour les modes Tcl, Latex, C, Verilog, Csh, Pascal
 permet de naviguer dans le fichier suivant :
   - les procédures pour Tcl,
   - les parties, chapitres sections, sous-sections, etc... pour Latex,
   - les fonctions pour C,
   - les procédures et fonctions pour Pascal,
   - les modules pour Verilog
 
 Ce bouton est situé en haut à droite dans la barre de menu. Il ouvre une 
 fenêtre dans laquelle sont affichés les noms des éléments de navigation
 définis ci-dessus. Un click sur un de ces éléments provoque dans le texte
 le déplacement du curseur vers la zone correspondante ainsi qu'un surlignage
 provisoire por faciliter le repérage.
 
 Lorsqu'on désire réinitialiser la liste des éléments (après la modification
 du texte), il suffit d'actionner le bouton rescan situé dans la fenêtre de
 navigation.  
 
 
3.12.2.2 - Le préfixe
^^^^^^^^^^^^^^^^^^^^^

 Il est positionné en fonction du mode (exemple # pour tcl , % pour latex). 
 Il correspond au signe de mise en commentaire pour le langage considéré. 

3.12.2.3 - Le menu portant le nom du mode 
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

Ce menu est censé contenir l'ensemble des fonctionnalités particulière au mode
courant.
De plus chacun de possède les quatres commandes suivantes :
 
 Show System Mode Config : visualise le fichier systeme de configuration des 
                           modes <nom-de-mode>-mode.tcl
 Create New mode Config  : édite le fichier <nom-de-mode>-mode.tcl dans le
                           répetoire utilisateur en vue de remplacer le
                           fichier système
 Customize Mode Config   : édite le fichier <nom-de-mode>-mode-user.tcl dans 
                           le répertoire utilisteur (.tk/stead). pour ajouter
                           des fonctionnalités aux modes
 Apply Mode Config 
 Changes                 : Charger la configuration après avoir modifier les 
                           fichiers précédents.

#######################################
3.12.3 - Description des modes standards
#######################################

3.12.3.1 - Mode Tcl 
^^^^^^^^^^^^^^^^^^^

  Search Proc :           Recherche dans le texte la déclaration de la
                          procédure sélectionnée. Si la procédure n'est
                          pas trouvée dans le texte, le fichier dans lequel
                          elle se trouve (s'il est trouvé par tcl) est ouvert
                          et la procédure est sélectionnée.
                         
  Colorize Proc :         Colorie les noms de procédures dans tous le fichier
  Colorize Comments :     Colorie les commentaires dans tout le fichier    
  Clear Proc Colour :     Efface les couleurs des noms de procédures
  Clear Comments Colour : Efface les couleurs des commentaires
    
3.12.3.2 - Mode LateX
^^^^^^^^^^^^^^^^^^^^^

  latex File :        lance la comamnde latex sur le fichier à analyser
                      Donne un shell pour le compilation interactive.
                      Affiche le fichier .log résultant, ce qui permet la
                      correction des erreurs après la compilation.
                      
  xdvi  File :        lance la commande xdvi sur le fichier résultant de la 
                      commande précédente
  dvips File :        lance la commande dvips sur le fichier .dvi résultant 
                      de la commande latex. Affiche le résultat.
  ghostview File :    lance la commande de prévisualisation ghostview sur
                      le fichier .ps résultant de la commande précédente.
  File to process...: Change le fichier a compiler (par defaut: fichier édité)
  xdvi selection :    lance la commande latex sur la sélection, donne un
                      shell pour l'interactivité. Affiche le résultat de la
                      compilation. et prévisualise avec xdvi.
                      Les entètes et fin de compilation sont prédéfinies 
                      (variables globales LATEX_ENTETE et LATEX_FIN) et
                      peuvent être redéfinies parl'utilisateru dans son 
                      fichier steadrc ou latex-mode-user.tcl.
  ghostview 
  selection :         identique à la précédente mais lance en plus dvips
                      et ghostview. Utile pout prévisualiser des figures.
                      
  Show Label :        ce "CheckButton" permet d'inclure s'il est validé
                      les labels aux éléments de navigation normalement 
                      limités aux parties, chapitres, sections et 
                      sous-sections.
                      
  Colorize Sections : Colorie dans le texte tous les éléments de navigations
                      rencontrés.
                      
  Clear Sections 
  Color             : Efface dans le texte la couleur des éléments de 
                      navigation
                        
 PREVISUALISATION :
 
  les variables globales de préambule et de fin pour la
  pré-visualisation de la sélection s'appellent LATEX_ENTETE et
  LATEX_FIN.
  pour les modifier editez votre fichier .tk/sead/latex-mode-user.tcl
  et placez-y les commandes suivantes (par exemple)

  # entete pour la previsualisation
  
  global LATEX_ENTETE
  set LATEX_ENTETE {\documentstyle[epsf]{article}
  \begin{document}
  }
  
  # fin du fichier pour la prévisualisation
  
  global LATEX_FIN
  set LATEX_FIN {
  \end{document}
  }
             
 NAVIGATION :
 
  l'affichage des labels au sein des section est facultatif. (voir menu
  Latex/show label)
  les sections sont numérotées automatiquement à partir de la première 
  rencontrée dans le fichier (ce qui évidemment ne correspond pas forcément
  à la numérotation finale de votre document)
                   
3.12.3.3 - Mode Verilog
^^^^^^^^^^^^^^^^^^^^^^^

  Colorize Modules :      Colorie les modules dans le texte entier
  Colorize Comments   :   Colorie les commentaires dans le texte entier
  Clear Modules Colour :  Efface les couleurs des noms de modules
  Clear Comments Colour : Efface les couleurs des commentaires
    
3.12.3.4 - Mode Pascal
^^^^^^^^^^^^^^^^^^^^^^
 
  Colorize procedures :         Colorie les procédures et les fonctions dans 
                                le texte entier
  Clear Procedures Colour :     Efface les couleurs des noms de procedures

3.12.3.4 - Mode C
^^^^^^^^^^^^^^^^^
  
  Colorize Functions :     Colorie les fonctions dans le texte entier
  Colorize Comments   :    Colorie les commentaires dans le texte entier
  Clear Functions Colour : Efface les couleurs des noms de fonctions
  Clear Comments Colour :  Efface les couleurs des commentaires
  
                             
##########################
3.12.4 - Le menu Templates
##########################
  
  Pour les modes Pascal, Tcl, Latex, Verilog et csh : il s'agit de la liste
  des instructions du langage. le choix de l'une d'elle insère l'instruction
  ainsi que sa structure (champs) au point d'insertion. 
  On peut naviguer a travers les champs par <Control-Tabulation>.
  Il s'agit du mécanisme d'électric Alias de alpha.
  En présence de la sélection certains "templates" ne l'écrasent pas mais
  la positionne dans l'un de leur champs.
  
  Il est en outre possible d'accéder à ces templates par des alias au clavier.     Pour cela, consultez le fichier système où ces alias sont déclarés. Pour
  cela fiare "Show System Mode Config" dans le menu <nom-de-mode>
  
  la définition d'un alias est de la forme :
  electricAlias-def <nom-du-mode> <alias> <definition>
    
###########################################################################
###########################################################################
###########################################################################

4 - Aller plus loin : personnalisation et programmation en Tcl

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

    
####################################################
####################################################
4.1 - Configurer son éditeur avec le fichier steadrc
####################################################
####################################################

Le fichier steadrc situé dans le répertoire ~/.tk/stead (variable USER_DIR) 
est le fichier de configuration utilisateur, lu chaque fois qu'un nouvel 
éditeur est démarré. Des menus ou des procédures propres à l'utilisateur 
peuvent être déclaréees dans ce fichier au sein d'une procédure nommée
jedit:userhook.
On peut aussi y définir les préférences utilisateur que l'on souhaite
pour l'éditeur (voir "Les préférences utilisateur"). 

Pour l'éditer utilisez "edit User file" dans le menu Config et 
après l'avoir sauvegardé, utilisez "reread User file " dans le 
même menu, cela relance la procédure jedit:userhook.

Lorsqu'on fait "edit User file" et que le fichier n'existe pas
ou est vide, STEAD en propose un par défaut. 
Ce steadrc rajoute un menu de votre nom vous permettant d'editer quelques
fichiers essentiels, de mettre en couleur le fond et l'encre du texte
sélectionné, de mettre en gras le texte ...

#############################################################
4.1.1 - Modification du fichier utilisateur principal steadrc
#############################################################

Rajouter un electric_alias valable que dans un mode donné dans le FICHIER 
PRINCIPAL de l'utilisateur  ~/.tk/stead/steadrc.
En effet, plusieurs alias de meme nom peuvent etre definis dans le 
meme fichier mais ne seront validés que pour des modes différents. ou 
encore, un alias peut etre défini comme etant validé pour tout mode.

On peut toujours regrouper tous les alias dans un fichier separé puis
rajouter la commande suivante dans le fichier ~/.tk/stead/steadrc :
    source NOM_DU_FICHIER
    
On peut également (toujours dans le fichier steadrc) exécuter des 
commandes (créer un nouveau menu,...) qui si le fichier en cours 
d'édition satisfait certains critères particuliers
   

##############################
##############################
4.2 - Fonctionnement des modes
##############################
##############################

######################################
4.2.1 - Selection du mode au lancement
######################################

Les variables générales concernées par les modes sont les suivantes

TE_MODE_DIR : nom du répertoire où se trouvent les fichiers systèmes
              gérant les modes (STEAD/lib/jeditmodes)
MODE :        nom du mode courant

Le choix du mode est défini par la variable globale MODE (valeurs possibles 
listées dans le popup en bas à droite).
Cette variable peut etre affectée de différentes façons (priorité 
décroissante) :

    - directement sur la ligne de commande (***prioritaire***) :
          stead -mode c++  fichier.c
          
    - par la procédure utilisateur "te:mode:set_hook {filename}"
      si celle-ci existe (définie dans le fichier ~/.tk/stead/steadrc)
      exemple :
      
      proc te:mode:set_hook f {
          global MODE
          if [string match *.asm $f] {set MODE asmTMS; return 1}
          if [string match *.s $f] {set MODE asmTMS; return 1}
          return 0
      }
      Si la procédure retourne 0, le processus de recherche automatique du 
      mode est poursuivi.
    
    - par la procédure "jedit:guess_mode" (dans fichier stead)
      C'est la façon automatique standard du choix du mode au lancement.
      c'est elle qui appelle la procedure utilisateur te:mode:set_hook.
      Si MODE n'est toujours par définie, elle effectue les essais suivants
      (dans l'ordre) :
       - examen du nom du fichier (grace à la liste de liste FILE_MODES)
       - examen de la première ligne du fichier pour détecter un interpreteur :
         #!/usr/local/bin/wish
         (utilisation de la variable LINE_MODES)
       - si le mode est sh : on verifie qu'un autre shell n'est pas utilisé
         en regardant la troisième ligne du fichier
       - par défaut, on choisi le mode plain
    
    - Si vous n'êtes pas satisfait, vous pouvez revoir entièrement le 
      choix du mode en redéfinissant la procédure jedit:guess_mode
      
    - à tout moment, vous pouvez changer le mode manuellement par 
      le popup en bas à droite.
    
La variable MODE est affectée automatiquement en fonction du nom du fichier
depuis la procédure jedit:guess_mode (script stead).

Le choix automatique d'un mode est fait par la procedure jedit:set_mode
exécutée au lancement de STEAD (script stead) et lorsqu'on charge un fichier
(procédure jedit:cmd:load dans file.tcl)

########################################
4.2.2 - Fonctionnement général des modes    
########################################

Une fois le choix du mode fait et la variable MODE affectée, la procédure 
jedit:set:mode (dans stead) est appelée.
La procédure jedit:mode:cleanup est ensuite invoquée. Cette procédure, 
déclarée par le mode précédent est censée détruire tout ce qui avait été
apporté par ce mode.

Puis un ou deux fichiers spécifiques à ce mode peuvent etre lus.

Tout d'abord, l'éditeur teste si il existe un fichier chez l'utilisateur 
(dans ~/.tk/stead/) du nom <nom_de_mode>-mode.tcl.

Si c'est le cas, seul ce fichier est exécuté.
Ce fichier peut être créé par l'utilisateur par l'intermédiare du menu
<nom-de-mode>/Create New Mode Config

Sinon, alors un fichier systême par defaut de même nom, situé dans le
réperoire $TE_MODE_DIR, est exécuté.
Ce fichier (transparent pour l'utilisateur non désireux de changer 
l'ensemble des fonctionnalités du mode) définit les menus, commandes, 
raccourcis clavier liés au mode choisi. On peut le lire dans le menu 
<nom-de-mode>/Show Mode Config

un deuxième fichier <nom-de-mode>-mode-user.tcl est lu DANS LE REPERTOIRE 
UTILISATEUR ~/.tk/stead s'il existe , APRES LE FICHIER PRECEDENT. Il 
permet l'utilisateur de conserver les fonctionnalités des modes "systèmes" 
en rajoutant ou écrasant des fonctionnalités et/ou des abbréviations => 
PLACEZ VOS ABBREVIATIONS PERSONNELLES LIEES A UN MODE DANS CE FICHIER. 
(ex en mode latex ~/.tk/stead/latex-mode-user.tcl) 
Ce fichier est accessible par le menu <nom-de-mode>/Customize Mode

  
  
Et maintenant les differentes possibilité (du plus simple au plus complexe) :
 
################################################################
4.2.4 - Créer le fichier utilisateur <nom-de-mode>-mode-user.tcl
###############################################################
 
dans son répertoire personnel (utiliser le menu "<nom-de-mode>/Customize Mode")
pour compléter/modifier le mode par défaut
attention, le fichier <nom-de-mode>-mode-user.tcl est placé dans le
répertoire ~/.tk/stead qui sera créé s'il n'existe pas.

#####################################################
4.2.5 - Maitriser entierement le comportement du mode
##################################################### 
Recopier chez soi (dans ~/.tk/stead/) le fichier système du mode considéré 
<nom_de_mode>-mode.tcl.
utiliser le menu Mode/Create New Mode Config
Le répertoire .tk/stead sera créé s'il n'existe pas.


################################################
4.2.6 - Procedures permettant d'enrichir un mode
################################################

voici les arguments de toutes les procedures 'hook' dont on dispose :

  jedit:pre_read_hook {filename widget}
  jedit:mode_read_proc {filename widget} 
  jedit:post_read_hook {filename widget}
  
  jedit:pre_write_hook {filename widget}
  jedit:mode_write_proc {filename widget}
  jedit:post_write_hook {filename widget}
          
  jedit:pre_quit_hook {widget}
  
  jedit:pre_spacebar_hook {widget}
  jedit:mode_spacebar_proc {widget}
  jedit:post_spacebar_hook {widget}
  
  jedit:pre_tabkey_hook {widget}
  jedit:mode_tabkey_proc {widget}
  jedit:post_tabkey_hook {widget}
  
  jedit:pre_returnkey_hook {widget}
  jedit:mode_returnkey_proc {widget}
  jedit:post_returnkey_hook {widget}
  
  jedit:pre_paste_hook {widget}
  jedit:post_paste_hook {widget}
  
  jedit:pre_xpaste_hook {widget}
  jedit:post_xpaste_hook {widget}
  
  te:mode:navig_label_hook {string}
  te:mode:navig_sort_hook {list}
  te:mode:rescan_hook {}
  te:mode:set_hook {filename}  (affecte MODE en fonction de $filename)


  te:mode:rescan_hook
    procedure executee a chaque fois qu'on effectue un rescan pour la 
    navigation
  te:mode:navig_label_hook : 
    fonction definissant ce qui apparait dans la fenetre de navigation
    (ces deux procedures permettent de faire un mode plan avec
    numerotation et indentation) 
  te:mode:navig_sort_hook : 
    comment trier les elements de navigation (par defaut : ordre dans
    le texte) 

#######################################
4.2.7 - Methodes de coloration du texte
#######################################

Pour chaque mode, il est possible de specifier colorier certaines 
parties d'un texte. Par exemple, dans le mode TCL il est possible 
de colorier en vert les commentaires et les mots clefs du language 
en bleue. Dans stead 2 principes de coloration ont ete implante :
     1) Le mode de coloration globale :
        Il permet de colorier un morceau de texte sur plusieurs lignes. 
        Par exemple les commentaires en language C, commence par "/*" 
        et finnissent par "*/". Ils peuvent s'etendre sur plusieurs 
        lignes. 
        La commande "te:cmd:colorise comment all $commentRegExp" permet 
        de colorier un pattern $commentRegExp dnas tout le fichier 
        "all", dont le nom est comment. Pour rafraichir, les couleurs 
        il faut donc effectuer une coloration de chaque pattern.
        Pour decolorer le pattern "comment" dnas tout le fichier, 
        on utilise la commande :
            "jedit:colours:clear_foreground all comment"
        Il faut specifier a stead tous les patterns, leur noms et 
        l'ordre de coloration de ces patterns. Les tableaux HILIGHT_STRING 
        et HILIGHT_COLOR permettent de memoriser respectivement une 
        chaine reguliere associe a un pattern a colorier et la couleur 
        de ce pattern. La liste HILIGHT_LIST permet de memoriser l'ordre 
        de coloration des patterns. Ex :
            set HILIGHT_LIST ""
            lappend HILIGHT_LIST comment
            set HILIGHT_STRING(comment) "\[ \t\]*#\[^\n\]*"
            set HILIGHT_COLOR(comment) green
        Les commentaires TCL seront donc ici colorier en vert.
     2) Le mode de coloration "ligne par ligne"
        Il permet de colorier un morceau de texte sur une ligne. Par 
        cette methode un commentaire C ne sera donc pas repere.
        On definit une variable MODECOLOR qui contiendra une association
        entre un pattern, 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. 
        Par exemple, on ecrira :
            set MODECOLOR($MODE,colorList) \
            " { simple commentaire $commentaireRegExp {Script TCL}} \
              { complexe commentaireComplexe A SPECIFIER...} "
        Pour indiquer que les commentaires de nom symbolique "commentaire"
        seront reconnaissable par l'expression reguliere $commentaireRegExp.
        Pour chaque, commentaire trouve TCL ajoutera le tag 
        "foreground:commentaire" au commentaire du texte. Pour chaque 
        type "tagge" TCL executera le script "{Script TCL}" specifie 
        dans MODECOLOR.
        Par exemple, pour specifier un commentaire TCL sur une ligne 
        on ecrira : 
            set commentRegExp {"(^|;)\[ \t\]*#\[^\n]*$"}
            set MODECOLOR($MODE,colorList) " \
            {simple commentaire $commentRegExp {-foreground #060}}"
        Ensuite, la ligne de commande suivante permet de colorier 
        un morceau de texte dans le widget texte .main.t, avec les 
        specification de couleurs indique dans MODECOLOR($MODE,colorList) :
            te:cmd:coloriseStruct .main.t $MODECOLOR($MODE,colorList) what
        Si what vaut :
            * all : On colore tout le texte avec tous les patterns 
              coder dans MODECOLOR($MODE,colorList),
            * currentLine : On colore seulement la ligne courante,
            * screen : On colore seulement la partie du texte visible 
              a l'ecran.
         Pour decolorier un texte, on utilise la procedure 
             "te:colours:clear_foregroundStruc .main.t all commentaire"
         qui supprimera la couleur des commentaires dans tout le fichier.
         L'avantage de cette methode est que :
             1) la coloration se fait en tache de fond
             2) la specification des chaines regulieres est + simple
             3) la partie du texte affichee a l'ecran est colorier 
                en temps reel..
         
Il doit etre possible de melanger les 2 modes de colorations. Mais
cela engnedrera peut etre un baisse des performances lors de la coloration.

#############################
4.2.8 - créer un nouveau mode
#############################

Dans le fichier principal stead, il faut :
- ajouter les nom symbolique du mode dans la liste MODE_LIST definie
   dans la procedure jedit:init
- completer la liste FILE_MODES (mais procedure) pour indiquer a stead
  par quel suffixe reconnaitre le mode
- eventuellement completer la liste LINE_MODES qui permeta STEAD (en 
  cas d'echec avec les indications precedentes) de trouver le mode
  d'apres la premiere ligne du fichier.
  
Pour en savoir plus voir aussi le fichier "fonctionnement de l'editeur"
dans le menu help.

###################
###################
4.3 - le menu admin
###################
###################
  
  edit tclindex file : edite le tclIndex du répertoire STEAD/tclLib
  
  Show Globals : liste de toutes les variables globales
  
  Show procedure : ouvre un fichier contenant toutes les procedures.
  
    Remarque : pour l'instant le fichier s'appelle procsiiii.tcl est est 
    cree dans le repertoire TE_USER_DIR (~/.tk/stead) et N'EST PAS DETRUIT
    On peut ameliorer cela en permettant de lancer Stead avec une 
    option -string qui remplirait l'editeur sans creer de fichier...

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

5 - Manuel d'installation sur un nouveau site

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


Voir Menu help/stead-lisez-moi


########################################################################
########################################################################
########################################################################
(Pense-bête pour moi)

exptraction du sommaire de ce document
exec egrep {^[0-9]+(\.[0-9]*)?[^\)\.]} userguide.txt

exec egrep {(^[0-9]+|^[0-9]+\.[0-9]*) - } userguide.txt
