16.2. Visiter des Fichiers

C-x C-f

Visite un fichier (find-file).

C-x C-r

Visite un fichier pour le visualiser, sans permettre de changements à celui-ci (find-file-read-only).

C-x C-v

Visite un fichier différent plutôt que celui visité en dernier (find-alternate-file).

C-x 4 C-f

Visite un fichier, dans une autre fenêtre (find-file-other-window). Ne change pas la fenêtre sélectionnée.

C-x 5 C-f

Visite un fichier, dans un nouveau cadre (find-file-other-frame). Ne change pas le cadre sélectionné.

M-x find-file-literally

Visite un fichier sans convertir son contenu.

Visiter un fichier veut dire copier son contenu dans un tampon d'Emacs pour que vous puissiez l'éditer. Emacs crée un nouveau tampon pour chaque fichier que vous visitez. Nous disons que ce tampon visite le fichier pour lequel il a été créé. Emacs construit le nom du tampon à partir du nom du fichier en enlevant le répertoire, et gardant juste le nom de base. Par exemple, un fichier appelé /usr/rms/emacs.tex aurait un tampon appelé emacs.tex. S'il existe déjà un tampon avec ce nom, un nom unique est construit en ajoutant <2>, <3>, etc, en utilisant le nombre le plus petit possible.

La ligne de mode de chaque fenêtre indique le nom du tampon affiché dans cette fenêtre, de façon que vous connaissiez toujours le tampon que vous éditez.

Les changements qaue vous effectuez avec des commandes d'édition sont faites sur le tampon d'Emacs. Elles ne prennent pas effet sur le fichier que vous avez visité, ou sur tout autre endroit permanent, avant d'enregistrer le tampon. Enregistrer le tampon veut dire qu'Emacs écrit le contenu courant du tampon dans le fichier qu'il visite. Section 16.3.

Si un tampon contient des changements qui n'ont pas été enregistrés, nous disons que le tampon est modifié. C'est important car cela implique que certaines modifications seront perdues si le tampon n'est pas enregistré. La ligne de mode affiche deux étoiles près de la marge gauche pour indiquer que le tampon est modifié.

Pour visiter un fichier, utilisez la commande C-x C-f (find-file). Faites suivre la commande par le nom du fichier que vous voulez visiter terminé par RET.

Le nom du fichier est lu en utilisant le mini-tampon (Chapitre 8), la valeur par défaut et la complétion fonctionnant de manière habituelle (Section 16.1). Depuis le mini-tampon, vous pouvez annuler C-x C-f en tapant C-g.

La confirmation que C-x C-f a fonctionné est l'apparition d'un nouveau texte sur l'écran et un nouveau nom de tampon dans la ligne de mode. Si le fichier spécifié n'existe pas et ne peut pas être créé, ou ne peut pas être lu, vous obtenez alors une erreur, avec un message d'erreur affiché dans la zone de répercussion.

Si vous visitez un fichier qui est déjà dans Emacs, C-x C-f n'en fait pas une nouvelle copie. Il sélectionne le tampon existant contenant ce fichier. Cependant, avant de faire cela, il vérifie que le fichier n'a pas changé depuis la dernière fois que vous l'avez visité ou enregistré. Si le fichier a changé, un message d'avertissement est affiché. Section 16.3.2.

Qu'en est-il si vous voulez créer un fichier ? Visitez-le, cest tout. Emacs affiche (New File) dans la zone de répercussion, mais autrement se comporte exactement comme si vous visitiez un fichier vide existant. Si vous faites des changements et les enregistrez, le fichier est créé.

Si le fichier que vous spécifiez se trouve être un répertoire, C-x C-f appelle Dired, le navigateur de répetoires d'Emacs, pour que vous puissiez "éditer" le contenu du répertoire (Chapitre 30). Dired permet de supprimer, regarder, ou opérer facilement sur les fichiers du répertoire. Cependant, si la variable find-file-run-dired est nil, une erreur survient lorsque vous essayez de visiter un répertoire.

Si vous visitez un fichier que le système d'exploitation ne vous laisse pas modifier, Emacs rend le tampon en lecture seule, pour que vous ne puissiez pas faire de changements que vous ne pourriez pas enregistrer plus tard. Vous pouvez rendre le tampon modifiable avec C-x C-q (vc-toggle-read-only). Section 17.3.

À l'occasion, vous pouvez vouloir visiter un fichier en lecture seule pour vous empêcher de le modifier accidentellement ; faites-le en visitant le fichier avec la commande C-x C-r (find-file-read-only).

Si vous visitez par erreur un fichier non existant (en tapant un mauvais nom de fichier), utilisez la commande C-x C-v (find-alternate-file) pour visiter le fichier que vous vouliez vraiment visiter. C-x C-v est similaire à C-x C-f, mais détruit le tampon courant (après vous avoir proposé de l'enregistrer si vous l'avez modifié). Lorsque cette commande lit le nom du fichier à visiter, elle insére entièrement le nom de fichier par défaut dans le tampon, le point se trouvant juste après la partie répertoire ; ceci est pratique si vous avez fait une erreur de frappe en tapant le nom.

C-x 4 f (find-file-other-window) est similaire à C-x C-f à l'exception que le tampon contenant le fichier spécifié est sélectionné dns une autre fenêtre. La fenêtre qui était sélectionnée avant C-x 4 f continue à montrer le même tampon qu'il montrait auparavant. Si cette commande est utilisée lorsqu'une seule fenêtre est affichée, cette fenêtre est coupée en deux, une fenêtre montrant le même tampon que précédemment, et l'autre fenêtre montrant le fichier demandé. Chapitre 18.

C-x 5 f (find-file-other-frame) est similaire, mais ouvre un nouveau cadre, ou rend visible le cadre existant qui contient le fichier demandé. Cette caractéristique est disponible seulement si vous utilisez un système de fenêtrage. Chapitre 19.

Si vous désirez éditer un fichier sous forme d'une séquence de caractères sans encodage spécial ou conversion, utilisez la commande M-x find-file-literally. Elle visite un fichier, comme C-x C-f, mais n'effectue pas de conversion de format (Section 23.11), de conversion de code de caractère (Section 20.6), ou de décompression automatique (Section 16.11).

Deux variables crochet spéciales permettent aux extensions de modifier l'opération de visiter des fichiers. Visiter un fichier qui n'existe pas appelle les fonctions de la liste find-file-not-found-hooks ; cette variable contient une liste de fonctions, et les fonctions sont appelées une par une jusqu'au moment où une d'elle retourne une valeur non nil. Chaque visite d'un fichier, existant ou non, attend que find-file-hooks contienne une liste de fonctions et les appelle toutes, une par une. Dans les deux cas, les fonctions ne reçoivent pas d'arguments. De ces deux variables, find-file-not-found-hooks prend effet en premier. Ces variables ne sont pas de crochets normaux, et leurs noms finissent par -hooks plutôt que par -hook pour indiquer ce fait. Section 32.2.3.

Il y a plusieurs moyens de spécifier automatiquement le mode majeur à utiliser pour éditer un fichier (Section 21.1), et pour spécifier les variables locales définies pour ce fichier (Section 32.2.5).