13.6. Défilement

Si un tampon contient du texte trop long pour tenir entièrement dans une fenêtre affichant ce tampon, Emacs affiche une portion contigüe du texte. La portion affichée contient toujours le point.

Faire Défiler veut dire déplacer le texte vers le haut ou vers le bas dans la fenêtre pour que différentes parties du texte soient visibles. Faire défiler vers l'avant veut dire que le texte se déplace vers le haut, et du nouveau texte appara^it en bas. Faire défiler en arrière déplace le texte vers le bas et du nouveau texte appara^it en haut.

Le défilement arrive automatiquement si vous déplacez le point au delà du haut ou du bas de la fenêtre. Vous pouvez aussi demander explicitement un défilement avec les commandes décrites dans cette section.

C-l

Efface l'écran et réaffiche, faisant défiler la fenêtre sélectionnée pour y centrer le point verticalement (recenter).

C-v

Fait défiler vers l'avant (une fenêtre entière ou un nombre spécifié de lignes) (scroll-up).

NEXT

Même chose, fait défiler vers l'avant.

M-v

Fait défiler vers l'arrière (scroll-down).

PRIOR

Même chose, fait défiler vers l'arrière.

arg C-l

Fait défiler pour que le point soit en ligne arg (recenter).

C-M-l

Fait défiler heuristiquement pour porter des informations utiles à l'écran (reposition-window).

La commande de défilement la plus élémentaire est C-l (recenter) sans argument. Elle efface entièrement l'écran et réaffiche toutes les fenêtres. De plus, elle fait défiler la fenêtre sélectionnée pour que le point soit à mi-chemin entre le haut et le bas de la fenêtre.

Les commandes de défilement C-v et M-v vous permettent de déplacer tout le texte de la fenêtre de plusieurs lignes vers le haut ou le bas. C-v (scroll-up) avec un argument vous montre autant de ce nombre de lignes en bas de la fenêtre, déplaçcant le texte et le point ensemble vers le haut, comme C-l le ferait. C-v avec un argument négatif vous montre de nouvelles lignes en haut de la fenêtre. M-v (scroll-down) est similaire à C-v, mais déplace le texte dans la direction opposée. Les touches de fonction NEXT et PRIOR sont équivalentes à C-v et M-v.

Les noms de commandes de défilement sont basés sur la direction dans laquelle le texte se déplace dans la fenêtre. Ainsi, la commande pour faire défiler vers l'avant est appelée scroll-up car elle déplace le texte vers le haut.

Pour lire un tampon une fenêtre à la fois, utilisez C-v sans argument. Elle prend les deux dernières lignes en bas de la fenêtre et les place en haut, et les fait suivre d'une fenêtre entière de lignes non visibles précédemment. Si le point se trouvait dans le texte disparu en haut de la fenêtre, il est déplacé au nouveau début de fenêtre. M-v sans argument fait défiler en arrière, avec un chevauchement similaire. Le nombre de lignes de chevauchement lors d'un C-v ou M-v est contrôlé par la variable next-screen-context-lines ; elle est égale à 2 par défaut.

Certains utilisateurs préfèrent que les commandes de défilement par écran laissent le point sur la même ligne de l'écran. Pour utiliser cette fonctionnalité, mettez la variable scroll-preserve-screen-position à une valeur non nil. Ce mode est commode pour parcourir un fichier en le faisant défiler écran par écran ; si vous revenez à l'écran d'où vous avez commencé, le point se retrouve sur la ligne initiale. Cependant, ce mode n'est pas commode lorsque vous vous déplacez vers l'écran suivant afin d'y placer le point.

Un autre moyen de faire défiler le texte est avec C-l avec un argument numérique. C-l n'efface pas l'écran lorsqu'on lui passe un argument ; elle fait seulement défiler la fenêtre sélectionnée. Avec un argument positif n, elle repositionne le texte pour placer le point sur la nième ligne. Un argument égal à zéro place le point sur la première ligne. Le point ne se déplace pas en respect avec le texte ; plus exactement, le texte et le point se déplacent de façon rigide sur l'écran. C-l avec un argument négatif place le point au nombre spécifié de lignes du bas de l'écran. Par exemple, C-u - 1 C-l place le point sur la ligne du bas, et C-u - 5 C-l le place à 5 lignes du bas. C-u seul comme argument, comme dans C-u C-l, déplace le point au centre de la fenêtre sélectionnée.

La commande C-M-l (reposition-window) fait défiler la fenêtre courante heuristiquement de façon à obtenir des informations intéressantes à l'écran. Par exemple, dans un fichier Lisp, cette commande esasie de faire tenir le defun courant en entier dans lécran, si c'est possible.

Le défilement arrive automatiquement si le point est déplacé en dehors de la portion visible du texte lorsqu'il est temps d'afficher. Normalement, le défilement automatique centre le point verticalement dans l'écran. Cependant, si vous mettez la variable scroll-conservatively à une faible valeur n, alors si vous déplacez le point juste en dehors de l'écran (moins de n lignes), Emacs fait défiler le texte juste suffisamment pour faire revenir le point à l'écran. Par défaut, scroll-conservatively est à 0.

Lorsque la fenêtre défile d'une longue distance, vous pouvez contrôler l'agressivité du défilement, en définissant les variables scroll-up-aggressively et scroll-down-aggressively. La valeur de scroll-up-aggressively doit être soit nil, soit une fraction f entre 0 et 1. Une fraction spécifie où placer le point sur l'écran lors d'un défilement vers le haut. Plus précisément, lorsqu'une fenêtre défile vers le haut car le point est au dessus du début de la fenêtre, la nouvelle position de départ est choisie pour placer le point à une fraction f de la hauteur de la fenêtre à partir d'en haut. Plus grand est f, plus agressif est le défilement.

nil, qui est la valeur par défaut, place le point au centre. C'est donc équivalent à 0.5.

De même, scroll-down-aggressively est utilisé pour les défilements vers le bas. La valeur, f, spécifie à combien du bas de la fenêtre doit être placé le point ; ainsi, comme pour scroll-up-aggressively, une valeur plus grande est plus agressive.

La variable scroll-margin indique à quelle distance le point peut s'approcher du haut ou du bas d'une fenêtre. Sa valeur est un nombre de lignes d'écran ; si le point est déplacé dans ce nombre de lignes en haut ou en bas de la fenêtre, Emacs recentre la fenêtre. Par défaut, scroll-margin est à 0.