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 f

Visite un fichier, dans une autre fenêtre (find-file-other-window). N'altère pas ce qui est affiché dans la fenêtre sélectionnée.

C-x 5 f

Visite un fichier, dans un nouveau cadre (find-file-other-frame). N'altère pas ce qui est affiché dans 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 (Chapter 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.

Lorsqu'Emacs est construit avec un toolkit adéquat, il ouvre le dialogue de Sélection de Fichier de ce toolkit plutôt que de demander le nom de fichier dans le mini-tampon. Sur les plateformes Unix et GNU/Linux, Emacs fait cela lorsqu'il est construit avec les toolkits LessTif et Motif ; sur MS-Windows, la version graphique le fait par défaut.

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éé.

Emacs reconnaît à partir du contenu d'un fichier quelle convention il utilise pour séparer les lignes--newline (utilisé sous GNU/Linux et sous Unix), carriage-return linefeed (utilisé sous les systèmes Microsoft), ou seulement carriage-return (utilisé sous Macintosh)--et convertit automatiquement le contenu dans la convention Emacs normale, qui est de séparer les lignes avec le caractère newline. C'est une partie de la fonctionnalité plus générale de conversion de système de codage (Section 20.6), et rend possible l'édition de fichiers importés de différents systèmes d'exploitation avec facilité égale. Si vous changez le texte et enregistrez le fichier, Emacs exécute la conversion inverse, en changeant les caractères newline en carriage-return linefeed ou carriage-return seulement si approprié.

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 (Chapter 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.

Les fichiers qui sont des collections d'autres fichiers, ou fichiers archive, sont visités dans des modes spéciaux qui invoquent un environnement du style Dired pour permettre des opérations sur les membres de l'archive. , pour plus d'informations sur ces fonctionnalités.

Si le nom de fichier spécifié contient des caractères générique de sytle shell, Emacs visite tous les fichiers correspondants. Les caractères génériques comprennent ?, * et les séquences […]. Section 16.13, pour savoir comment visiter un fichier dont le nom contient des caractères génériques. Vous pouvez désactiver la fonctionnalité des caractères génériques en personnalisant find-file-wildcards.

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.

Si vous trouvez un fichier qui existe mais qui ne peut être lu, C-x C-f signale une erreur.

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é. Chapter 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. Chapter 19.

Si vous désirez éditer un fichier sous forme d'une séquence de caractères ASCII 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), et n'ajoute pas de caractère newline final dû à require-final-newline. Si vous avez déjà visité le même fichier de la manière habituelle (non litérale), cette commande vous demande si vous désirez plutôt le visiter litéralement.

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 (sans arguments) jusqu'au moment où une d'elle retourne une valeur non nil. Ce n'est pas une fonction crochet habituelle, et le nom se termine par -hooks plutôt que -hook pour indiquer ce fait.

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, sans arguments. Cette variable est une vraie fonction crochet, mais a un nom anormal pour une comptabilité historique. Dans le cas d'un fichier non existant, les crochets find-file-not-found-hooks sont exécutées en premier. 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).