Page précédente Page suivante Table des matières

4. Personnalisation d'Emacs

Toute personnalisation d'Emacs est réalisée via un code Lisp. Vous pouvez modifier les variables qui influencent la façon d'opérer d'Emacs ou même lui ajouter de nouvelles fonctions (ou remplacer les fonctions existantes par les vôtres).

4.1 Personnalisation temporaire

Tant que vous testez la personnalisation d'Emacs, vous souhaiterez probablement le faire de façon temporaire. Si vous réalisez quelque chose d'affreux, tapez simplement C-x C-c pour quitter Emacs, et lancez-le de nouveau. Une fois que vous souhaiterez rendre ces changements permanents, vous pourrez les intégrer à votre propre ~/.emacs pour qu'ils prennent effet à chaque lancement d'Emacs. Cela est abordé dans la section suivante.

Allocations des variables

Les personnalisations les plus simples sont réalisées en changeant la valeur de variables d' Emacs. Le code destiné à cet usage ressemble à cela:

       (setq nom-variable nouvelle-valeur)
       

nom-variable est le nom de la variable et nouvelle-valeur est la valeur à lui donner (en langage Lisp, vous 'attachez' une variable à une valeur). La fonction setq de Lisp est analogue aux opérateurs d'assignement (habituellement =) sous d'autres langages.

NOTA: Je survole de nombreux détails dans un but de simplicité. Vous pourrez utiliser d'autres fonctions Lisp comme set ou setq-default. Si vous êtes réellement curieux, reportez-vous à la documentation de Lisp Emacs.

Regardons de plus près une ligne de mon fichier ~/.emacs

       (setq-default transient-mark-mode t)
       

La variable transient-mark-mode contrôle si une région devient ou non surlignée lorsque je la marque. Dans beaucoup d'applications, si vous cliquez et déplacez la souris pour sélectionner une partie du texte, il devient surligné en inverse vidéo, ou de n'importe quelle autre couleur. Emacs se comportera de la même manière si la variable transient-mark- mode est déclarée (avec une valeur non nil).

Une valeur non QUOI?

Bien. Rapide digression. La plupart des langages intègrent la notion de valeur vraie/fausse. En C/C++ une valeur est considérée comme vraie si elle est non nulle. En Perl, une valeur non nulle ou différente de zéro est vraie. En Lisp, la même idée s'applique, mais les noms et les symboles sont différents.

Vrai est usuellement matérialisé par t et faux (ou nul) l'est par nil. Ceci dit, comme dans d'autres langages, n'importe quelle valeur non vide est considérée comme vraie.

Pour avoir la description complète de ce que transient-mark-mode fait, vous pouvez utiliser l'aide en ligne. Tapez C-h v ou M-x describe-variable puis transient-mark- mode. Si vous êtes aussi fainéant que moi, vous pouvez tirer avantage de la complétion des noms de variables en utilisant la touche Tab. Tapez simplement une partie du nom de la variable puis pressez la touche Tab. Si vous avez tapé assez de texte pour qu'Emacs ne trouve pas d'autres correspondances possibles vous verrez le nom complété pour vous.

Une autre variable fréquemment employée est fill-column. Elle déclare à Emacs la largeur de l'écran à utiliser avant un retour à la ligne (et le mode auto-fill-mode respecte cette valeur). Pour la tester avec une valeur absurde, essayez :

       (setq fill-column 20)
       

Mais la conséquence ne sera pas immédiate. Vous devez demander à Emacs d'évaluer l'expression tapée. Pour ce faire, placez le point (curseur) à la fin de l'expression puis pressez C-x C-e, qui appelle la fonction eval-last-sexp. Une fois ceci fait, notez que la valeur 20 (ou n'importe quelle valeur que vous ayez saisie) s'affiche dans le mini- buffer en bas de l'écran. Il s'agit simplement de la valeur retournée par l'expression que vous avez fait évaluer.

Juste pour voir si cela marche, tapez une phrase ou deux. Si vous êtes en mode auto-fill-mode (ce qui n'est sans doute pas le cas), le texte sera renvoyé à la ligne dès qu'il atteindra la 20ème colonne. Autrement, après avoir terminé votre saisie, tapez M-q qui appelle la fonction fill- paragraph. Elle activera les renvois à la ligne.

Associations d'un type de fichier à un mode

Vous pouvez configurer Emacs pour qu'il réalise automatiquement une action lorsque vous ouvrez un fichier de type particulier (un peu comme les applications qui se lancent automatiquement lorsque vous cliquez sur l'icône d'un fichier particulier). Par exemple, je peux souhaiter qu'Emacs passe automatiquement en text-mode chaque fois que j'ouvre un fichier avec l'extension .txt. Euh... c'est déja ce qu'il se passe. :-) Demandons plutôt à Emacs de toujours basculer en text-mode lorsque vous ouvrez un fichier appelé ``README''.

       (setq auto-mode-alist (cons '("README" . text-mode)
       auto-mode-alist))
       

Heu?

Sans rentrer dans les méandres de la programmation Lisp que vous n'avez pas réellement besoin de connaître (même si cela ne vous ferait pas de mal), disons simplement que la variable auto-mode- alist contient une liste de couples. Chaque couple rassemble une expression régulière et un nom de mode d'Emacs. Si le fichier que vous ouvrez s'apparente à l'expression régulière, (dans le cas présent la chaîne README) Emacs lance le mode que vous avez spécifié.

L'étrange syntaxe que nous venons d'employer est liée au fait que nous ajoutons un nouveau couple à la liste. Nous ne voulons pas simplement donner une nouvelle valeur au mode auto-mode-alist sans être certains que les valeurs qui sont déja dans la liste ne soient pas perdues.

Et si je souhaitais qu'Emacs passe automatiquement en mode html-helper-mode chaque fois que j'ouvre un fichier se terminant par .html ou .htm, j'ajouterais ceci à mon fichier ~/.emacs :

       (setq auto-mode-alist (cons '("\\.html$" . html-helper-
       mode) auto-mode-alist))
       (setq auto-mode-alist (cons '("\\.htm$" . html-helper-
       mode) auto-mode-alist))
       

4.2 Utilisation d'un fichier ~/.emacs

Aprés avoir consacré un peu de votre temps à Emacs et vous être fait une idée de ce qui pourrait vous être utile, vous voudrez sans doute figer définitivement certaines choses (ou du moins jusqu'à ce que vous changiez d'avis). Si vous utilisez Emacs de façon quotidienne, vous constaterez que votre fichier ~/.emacs grossira à mesure que le temps passera. C'est une Bonne Chose car cela signifie que vous façonnez la manière de travailler d'Emacs conformément à ce que vous voulez qu'elle soit. C'est une honte que la plupart des logiciels ne permettent pas cela.

Au cas vous vous ne vous seriez pas déjà posé la question, chaque fois que vous lancez Emacs, il cherche un fichier ~/.emacs situé dans votre répertoire personnel. Ce fichier est là où vous devez placer tout code Lisp que vous voulez exécuter automatiquement lors du démarrage d'Emacs, ce qui inclus la personnalisation que nous venons d'évoquer.

Un autre extrait de mon fichier ~/.emacs:

   (setq inhibit-startup-message t)
   

La variable inhibit-startup-message contrôle si Emacs doit ou non afficher le message de bienvenue au démarrage. Après quelques temps, j'ai fini par être las de le voir apparaître (car je savais comment atteindre l'aide et ainsi de suite), et j'ai donc cherché le moyen de le désactiver.

À titre d'exercice, essayer de vous créer un fichier ~/.emacs personnel et ajoutez-lui cette ligne. Sortez d'Emacs, et relancez-le. Vous ne devriez plus voire le message de bienvenue.

Souvent lorsque vous découvrirez un mode d'Emacs (ou un paquetage), la documentation vous suggèrera quelques codes à ajouter à votre fichier ~/.emacs pour faire réagir le mode ou le paquetage d'une façon particulière.

La FAQ d'Emacs GNU (C-h F) rassemble quelques extraits de fichiers qui pourraient vous être utiles.

4.3 Le paquetage Customize

A mesure qu'Emacs s'est étoffé et a évolué, d'aucuns affirmaient ``Il faudrait trouver une façon plus simple de permettre aux utilisateurs novices de personnaliser leur Emacs.'' Customize était né.

Customize permet une méthode de personnalisation plus intuitive du comportement d'Emacs. Pour la tester, visitez le sous-menu Customize de votre menu d'aide Help, ou tapez M-x customize.

Customize rassemble les options disponibles en groupes logiques, comme ``Edition (Editing)'', ``Programmation (Programming)'', ``Fichiers (Files)'', et ainsi de suite. Quelques groupes ont des sous-groupes.

Si vous réalisez des changements par le biais de l'interface customize, Emacs enregistrera les modifications dans votre fichier ~/.emacs. Ce qui est très pratique, car vous pouvez ainsi facilement visualiser (et modifier) les changements réalisés pour vous.

N'utilisant pas l'interface Customize, je ne pourrai pas vous en dire beaucoup plus..

4.4 Affichage sous X Window

Comme toutes les applications X bien faites, Emacs respecte vos ressources X. Ce qui signifie que vous pouvez contrôler les couleurs initiales, la géométrie et d'autres paramètres spécifiques à X, comme vous le feriez avec xterm, nxterm, et autres.

Voici à quoi ressemble mon fichier ~/.Xdefaults:

   emacs*Background: DarkSlateGray
   emacs*Foreground: Wheat
   emacs*pointerColor: Orchid
   emacs*cursorColor: Orchid
   emacs*bitmapIcon: on
   emacs*font: fixed
   emacs.geometry: 80x25
   

Consultez votre documentation X pour de plus amples détails sur les ressources X.


Page précédente Page suivante Table des matières