Une variable du Buffer est une "structure" à 4 champs :
- x : entier = abscisse,
- y : entier = ordonnée,
- col : colonne,
- lgn : ligne.
On a quatre règles de cohérence, qui sont normalement respectées :
- x = numéro de la colonne col dans la ligne lgn ;
- y = numéro absolu de la ligne lgn ;
- la colonne col appartient à la ligne lgn ;
- la ligne lgn appartient au Buffer
On adopte plusieurs choix de représentation selon la fréquence d'emploi des variables :
log est en fait définie par les quatre variables : logx, logy, logcol et loglgn – par concaténation des symboles "log" et des suffixes "x", "y", "col" et "lgn".curdeb est un symbole dont la valeur est la liste à quatre champs : (y x lgn col).(x y).Les fonctions suivantes prennent en paramètres des expressions interprétées :
- pour un symbole : comme un symbole de représentation par les listes,
- pour un symbole quoté : comme un symbole de représentation symbolique,
- autrement, comme une représentation immédiate des champs x et y.
affectation du Buffer
set-glo ‹dest1› ‹orig1› ... : affecter à la variable ‹dest1› la valeur ‹orig1› – nombre quelconque (pair) d'arguments.
set-prd ‹dest› ‹orig› ‹tab› : affecter à ‹dest› le prédécesseur dans le Buffer de ‹orig›, ‹tab› étant l'abscisse de début de ligne du Buffer local – en cas de retour en fin de ligne précédente, ‹dest› est placé à une abscisse très grande.
set-mPRD ‹dest› ‹orig› ‹tab› : identique à set-prd, mais en cas de retour en fin de ligne précédente ‹dest› est placé en fin de ligne.
set-olgn ‹dest› ‹orig› : affecter à ‹dest› la position de fin de ligne précédente de ‹orig›, à une abscisse très grande.
set-mOLGN ‹dest› ‹orig› : identique à set-olgn, mais ‹dest› est placé en fin de ligne.
set-pred ‹dest› ‹orig› ‹tab› : identique à set-prd, mais un éventuel retour à ligne précédente n'est pas envisagé.
set-nxt ‹dest› ‹orig› : affecter à ‹dest› le successeur dans le Buffer de ‹orig›.
set-nlgn ‹dest› ‹orig› : affecter à ‹dest› la colonne de début de ligne suivante de ‹orig›.
set-succ ‹dest› ‹orig› : identique à set-nxt, mais un éventuel retour à ligne suivante n'est pas envisagé.
set-col ‹dest› ‹orig› ‹tab› : affecter à ‹dest› la colonne de numéro ‹tab› de la ligne de ‹orig›.
set-eol ‹dest› ‹orig› : affecter à ‹dest› la colonne de fin de ligne de la ligne de ‹orig›, à une abscisse très grande.
set-mEOL ‹dest› ‹orig› : identique à set-eol, mais ‹dest› est placé en fin de ligne.
set-bol ‹dest› ‹orig› : affecter à ‹dest› la colonne de début de ligne de la ligne de ‹orig›.
affectation de la page écran
La page écran utilise deux variables globales beg (début) et end (fin).
set-end : affecter à end sa valeur, compte tenu de la valeur de beg, de la taille du Buffer et de la taille de la fenêtre.
set-beg ‹num› : affecter à beg sa valeur, ‹num› lignes devant sa valeur actuelle, compte tenu de la taille du Buffer.
affectation du curseur
set-deb ‹dest› ‹info-lst› : affecter à ‹dest› la position de début du premier lien de ‹info-lst›.
set-fin ‹dest› ‹info-lst› : affecter à ‹dest› la position de fin du premier lien de ‹info-lst›.
info-debx ‹info-lst› : retourne le champ x de la position de début du premier lien de ‹info-lst›.
info-deby ‹info-lst› : idem, sur le champ y.
info-debcol ‹info-lst› : idem, sur le champ col.
info-deblgn ‹info-lst› : idem, sur le champ lgn.
info-finx ‹info-lst› : identique à info-debx, sur la position de fin du premier lien de ‹info-lst›.
info-finy ‹info-lst› : idem, sur le champ y.
info-fincol ‹info-lst› : idem, sur le champ col.
info-finlgn ‹info-lst› : idem, sur le champ lgn.
info-debp ‹x› ‹lgn› ‹info-lst› : retourne la valeur "vraie" si ‹x› ‹lgn› correspond à la position de début du premier lien de ‹info-lst›.
info-finp ‹x› ‹lgn› ‹info-lst› : identique à info-debp, sur la position de fin du premier lien de ‹info-lst›.
info-deb-eq ‹info-lst1› ‹info-lst2› : retourne la valeur "vraie" si ‹info-lst1› et ‹info-lst2› correspondent à une même position de début du premier lien.
info-fin-eq ‹info-lst1› ‹info-lst2› : identique à info-deb-eq, sur la position de fin du premier lien.
comparaison
glo-< ‹1› ‹2› : retourne la valeur "vraie" si ‹1› devance strictement ‹2› dans le Buffer – le test porte sur les champs entiers x et y ; les paramètres peuvent donc être de représentation immédiate.
glo-<= ‹1› ‹2› : idem, égale ou devance strictement.
glo-> ‹1› ‹2› : idem, suit strictement.
glo->= ‹1› ‹2› : idem, égale ou suit strictement.