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.22.1. Les curseurs
8.2.22.2. Déplacement
8.2.22.3. Recherche
8.2.22.4. Modification
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

Le curseur

1. Les curseurs

2. Déplacement

3. Recherche

4. Modification

4. Modification

La modification textuelle – au point d'insertion – ne concerne que les Buffers.

insertion de caractères

 *" " ... "~"  le caractère est inséré dans "l'angle supérieur gauche" du curseur, lequel est décalé d'une colonne vers la droite.
 *^M  un retour à la ligne est traité comme un caractère « graphique », en respectant les règles d'indentation.
 *^O  identique à ^M, mais le curseur reste à sa position d'écran.

Par exemple :

insertion d'un retour à la ligne NL

destruction

 *DEL ^H  destruction du curseur précédant le curseur courant : ce peut être un caractère ou une zone étendue.
Si le curseur est au début du Buffer local, la destruction est refusée – elle conduirait à supprimer un curseur qui n'appartient pas au Buffer dans lequel on travaille, ce qui serait incohérent.
 *^D  destruction du curseur sur lequel on est placé.
 *ESC-h  destruction du mot précédant le curseur.
Si la zone comprise entre le début du mot et le début du curseur courant chevauche le Buffer local et un autre Buffer, la destruction est limitée aux éléments du Buffer local.
 *ESC-d  destruction du mot suivant le curseur.
Même remarque que pour ESC-h.

fichiers

 *^X-^I  insérer le fichier de nom donné devant le curseur.
 *^X-i  insérer le Buffer de nom donné devant le curseur.
Note : l'insertion est faite « à plat », c'est-à-dire qu'on perd l'information : « la zone de texte provient du Buffer de nom "XXX" ».
 *^X-^O  lire dans le fichier attaché au Buffer l'ancienne version du texte.
 *^X-r  lire le fichier de nom donné, et le placer dans le Buffer.
Note : pour les commandes de lecture de fichier, les fenêtres qui dépendent du Buffer courant sont fermées – parce qu'elles n'existent plus après la lecture.

Kill Buffer

Le Kill Buffer est un Buffer qu'il est spécialement aisé de remplir ou d'insérer dans le Buffer courant. Il peut aussi être édité dans une fenêtre.

Une suite de commandes plaçant des "bouts de texte" dans le Kill Buffer correspond à des ajouts ; mais la première commande écrase le contenu antérieur du Kill Buffer.

Note : l'ajout tient compte de la structure du texte, c'est-à-dire que la zone de texte placée dans le Kill Buffer ne chevauche pas plusieurs Buffers locaux.

 *^K  détruire la ligne et la placer dans le Kill Buffer :
- si le curseur est en fin de ligne, on le place isolément dans le Kill Buffer ;
- sinon, on place l'ensemble des curseurs présents du curseur courant au premier curseur de fin de ligne, on compris ce dernier.
 *ESC-k  identique à ^K, mais ne détruit pas la ligne.
 *^W  détruire la région, c'est-à-dire le texte compris entre la marque (posée par ^@) et le curseur courant, et la placer dans le Kill Buffer.
 *...  identique à ^W, mais ne détruit pas la région.
 *ESC-^A  ajouter en fin de Buffer de nom donné la région.
Note sur la marque : la marque est maintenue à une place cohérente, même si des modifications à d'autres points du texte la déplacent virtuellement.
 *^X-^K  détruire le Buffer local courant et le placer dans le Kill Buffer.
 *^X-k  identique à ^X-^K, mais ne détruit pas le Buffer local.
 
 *^Y  insérer le contenu du Kill Buffer devant le curseur courant.

Du fait du grand nombre de commandes possibles, on inclut une commande assistée :

 *ESC-^K  c'est la commande :
"Copy/Move to Kill Buffer: Buffer/Region"
Copier/Détruire vers le Kill Buffer : le Buffer/la région.

ajout en fin de Buffer local

On introduit un mode d'ajout en fin de Buffer local, parce que :

L'idée de mode est très opposée à la philosophie d'emacs : on l'introduit parce qu'elle se révèle nécessaire, mais on le dit clairement – il s'affiche sur la ligne de contrôle le message : "Append to local Buffer".

Par exemple :

ajout en fin de Buffer local

On est placé automatiquement en mode « ajout » quand on "dépasse", en fin, le Buffer local. On peut aussi s'y placer explicitement :

 *^^  se placer en mode « ajout ».