afficher >><< masquer ]
SAMPI - Editeur structuré
1. Le Problème et la Proposition
2. Le Langage Primitif de Représentation Textuelle
2.1. Présentation de la Syntaxe Concrète
2.2. Notations
2.3. Exemple de structuration des données
2.4. Exemple de structuration des traitements
2.5. Exemple de structurations connexes
3. Le Langage Complété pour la Structuration des Textes
3.1. Présentation de la Syntaxe Complétée
3.2. Etude quantitative de l'évolution des programmes
3.3. L'édition syntaxique
3.4. étude de cas : le langage LTR3 et l'atelier ENTREPRISE
4. L'Enrichissement du Langage par de Nouveaux Concepts
4.1. Présentation de la Syntaxe Abstraite
4.2. Les difficultés
4.3. Compléter la Syntaxe
5. La Formalisation des Solutions Techniques
5.1. L'évaluation fonctionnelle
5.2. La structuration par les objets
5.3. Modèle sémantique comparé de l'évaluateur
5.4. Comparaison critique
5.5. Construction de la Syntaxe Abstraite
6. Les Comparaisons avec d'autres Approches
7. Les Perspectives
8. Les Editeurs
8.0. brisé sur la barrière de la complexité (une fois de plus)
8.1. L'éditeur ligne : Manuel de l'utilisateur
8.2. L'éditeur page : Guide de l'utilisateur
8.2.0. L'état des travaux
8.2.1. Généralités
8.2.2. Le curseur
8.2.3. Les fenêtres
8.2.4. Les tampons
8.2.5. Les fichiers
8.2.6. Le mode "Défaire"
8.2.7. Commandes du Buffer
8.2.8. Commandes du Buffer-Edit
8.2.9. Résumé
9. Les Aspects d'Implantation
9.1. Contexte d'évaluation
9.2. La Syntaxe Abstraite : Manuel du concepteur
9.3. L'éditeur page : Guide de l'implanteur
Références
Rubrique Perl-Javascript

Commandes du Buffer

On a encore trois commandes relatives spécifiquement aux Buffers, qui sont :

commandes d'aplatissement

 *^X-   (contrôle-X et blanc) le curseur courant est aplati : la zone étendue qu'il représente devient une suite de curseurs appartenant en propre au Buffer local.
La commande est refusée si les caractères qui composent le curseur appartiennent déjà en propre au Buffer local : la situation se présente quand on est placé sur un caractère sous un holophraste au moins égal à la profondeur dans le texte structuré de ce caractère – le curseur est vu comme un caractère, et ne peut être aplati.

A plus long terme, la commande permettrait de procéder comme suit :

C'est le classique schéma Copier/Coller qu'on retrouve presque toujours dans un éditeur.

Note : l'aplatissement préserve l'indentation, c'est-à-dire qu'on inclut des caractères blancs si nécessaire. Par exemple :

aplatissement des textes

commandes de sélection

 *^X-^@  début de sélection. On sélectionne une zone du tampon qui s'affiche alors en inverse vidéo. Pour des raisons de cohérence, cette zone reste confinée à un Buffer local donné.

La sélection est un mode, avec ses commandes propres. Du fait de la réponse « graphique » très visible, l'inconvénient lié à la définition d'un mode est mineur – en plus de l'affichage en inverse vidéo on a un message de "Selection" dans la ligne de contrôle.

 *déplacement toutes les commandes de déplacement présentées précédemment sont utilisables ; le déplacement est seulement limité au Buffer local courant.
 *^G  abandon ; on est replacé au point de début de sélection.
 *q  quitter ; on reste au point atteint.
 *?  aide en ligne.
 *" "  (blanc) valider.
 *j  valider et entrer en mode de justification.

Valider une sélection, c'est définir la zone sélectionnée comme la zone d'affichage d'un nouveau texte structuré ; c'est donc définir un nouveau nœud dans le texte structuré.

A plus long terme, la validation de la sélection demanderait aussi de donner un nom symbolique de « texte » à cette zone et de placer ce « texte » dans l'arbre des tampons : la zone sélectionnée deviendrait la zone d'affichage d'une utilisation use d'un « texte ».

Note : la sélection cherche à satisfaire au mieux l'indentation, en supprimant les blancs de début de ligne tout en préservant les alignements.
Par exemple :

(sélection)(validation)

sélection - validation

sélection - validation

sélection - validation

commandes de justification

 *^X-^J  début de justification.

La justification est aussi un mode. Elle permet la justification d'un curseur par des ajouts ou suppressions de blancs en début de ligne.

 *^G  abandon ; on est replacé au point de début de justification.
 *ESC  quitter ; on reste au point atteint.
 *?  aide en ligne.
 *a  empiler un niveau de justification, de type absolu : on supprime ou on insère le nombre de blancs nécessaire pour obtenir un nombre fixe de blancs (un nombre négatif équivaut à zéro).
 *r  empiler un niveau de justification, de type relatif : on supprime un nombre constant de blancs (on insère des blancs si ce nombre est négatif).
 *q  dépiler un niveau de justification ; au premier niveau, quitter.
 
 *n  ligne suivante – pas de modification.
 *p  ligne précédente – pas de modification.
 
 *" "  (blanc) justifier d'après le type retenu, et passer à la ligne suivante.
 *c  supprimer tous les blancs.
 *i  insérer un blanc.
 *d  détruire un blanc.
 *,  (pause) justifier et rester sur la même ligne.
 *!  justifier automatiquement jusqu'à la fin du curseur – on quitte le mode interactif.

Les empilements de types de justification permettent de définir une justification globale mais de justifier localement selon d'autres critères.

Par exemple :

exemple de justification  donne :  exemple de justification
a0 = absolu 0 : détruire tous les blancs.
r3 = relatif 3 : détruire 3 blancs.