Toutes les customisations d'Emacs peuvent virtuellement être effectué par du code Lisp. Vous pouvez modifier des variables qui influence la manière d'agir d'Emacs, ou vous pouvez ajouter de nouvelles fonctions à Emacs (ou effacer des fonction existantes, en les remplacant par les vôtres).
Lorsque vous vous habituerez à customiser Emacs, vous voudrez
probablement le faire d'une manière temporaire. Si vous faites quelque
chose de vraiment mauvais, vous pourrez sortir avec C-x C-c
et le relancer. Une fois que vous aurez trouvé les changements qui
vous plaisent, vous voudrez les rendre permanent, vous pourrez alors
les ajouter à votre fichier .emacs
pour qu'ils soient effectif à
chaque lancement d'Emacs. Nous en parlerons dans la prochaine section.
La plus simple des customisations à faire est de changer la valeur d'une variable d'Emacs. Le code pour effectuer cette action ressemble à celui-ci:
(setq nom-variable nouvelle-valeur)
Où nom-variable
est le nom de la variable et
nouvelle-valeur
est la valeur que vous voulez affecter. (En
langage Lisp, vous assignez une variable à une valeur.) La fonction
setq
est analogue à un opérateur d'assignement(courament
=
) dans d'autres langages de programmations.
NOTE: Je passe sur beaucoup de détail dans un soucis de
simplicité. Vous me verez moi, ou d'autres utiliser la fonction Lisp
set
et même setq-default
. Si vous êtes vraiment
curieux, aller voir de quoi il retourne dans la réference Lisp
d'Emacs.
Regarder cette ligne de mon fichier .emacs
.
(setq-default transient-mark-mode t)
La Variable transient-mark-mode
contrôle si une region
doit être surligné ou lorsqu'on la marque. Dans beaucoup d'application
graphique, lorsque vous cliquez et déplacez le pointeur pour
selectionner une partie du texte, elle devient surlignée en mode
inverse, ou dans une autre couleur. Emacs effectuera de même lorsque la
variable transient-mark-mode
aura une valeur non nulle
d'affectée.
QUELLE valeur?
D'accord. Petite digression. Beaucoup de langage de programmation ont des notions de valeurs vrai/fausse (true/false). En C/C++ une valeur est considéré vrai (true) si elle possède une valuer non nulle. En Perl, une valeur non nulle ou différentes de zéro est vrai (true). En Lisp, la même idée s'applique, mais avec des noms et des symboles différents.
Vrai (True) est
courament écris comme ceci t
et faux (False) (ou Null) est
écrit comme nil
. Comme d'autres language, bien sur, toute
valeur non nulle est considéré comme vrai.
Pour donner la description complète de ce que fait
transient-mark-mode
, vous pouvez utilisez l'aide en-ligne.
Tapez C-h v
ou M-x describe-variable
puis
transient-mark-mode
. Si vous êtes fainéant comme moi, vous
pourrez tirez avantage de la complétion des noms de variables en
utilisant la touche Tab
Tapez juste les premières lettres et
appuyez sur la touche Tab
. Si vous avez tapé assez de lettre
pour qu'Emacs puisse l'identifier, vous verez apparaitre le mot entier
complété pour vous.
Une autre variable que l'on utilise souvent
est fill-column
. Si vous dites à Emacs la largeur de
l'écran, il effectura la casse des lignes (et auto-fill-mode
respecte cette valeur). Pour affecter une valeur absurde vous pouvez
tapez:
(setq fill-column 20)
Mais cela ne fait rien maintenant. Vous devrez demander à Emacs
d'évaluer l'expression que vous avez tapé. Pour l'évaluer,
placer le point (le curseur) à la fin de l'expression et tapez C-x
C-e
, qui appelera la fonction eval-last-sexp
. Lorsque
vous ferez cela, notez que 20
(ou ce que vous avez tapé) est
renvoyé dans la mini-buffer en bas de l'écran. C'est la valeur de
retour de l'expression que vous avez évalué.
Juste pour montrer que cela marche, taper une phrase ou deux. Si
vous avez le mode auto-fill-mode
activé (probablement pas)
Vous remarquerez que le texte est cassé à la colonne 20. Autrement
après avoir tapé quelque chose, tapez M-q
qui appelera la
fonction fill-paragraph
. Il effectura alors la casse du
paragraphe.
Vous pouvez configurer Emacs pour qu'il effectue des tâches
automatiques lorsque vous ouvrez des fichiers d'un certain type (comme
certaines interfaces graphiques lance une application lorsque l'on
clique sur un fichier précis). Par exemple, Je veux qu'Emacs passe en
mode text-mode
chaque fois que j'ouvre un fichier avec
l'extension .txt
. Bon, il le fait déjà. :-)
Donc
faisont le passer en mode text-mode
lorsqu'il ouvre un
fichier "README".
(setq auto-mode-alist (cons '("README" . text-mode) auto-mode-alist))
Ouch?
Sans plonger dans des flots de programmation Lisp que vous n'avez
pas besoin de connaitre (mais cela ne vous fera pas de mal d'en
apprendre plus), laisser juste vous expliquer que la variable
auto-mode-alist
contien une liste de paires . Chaque paires
contient une expression régulière et un nom de mode Emacs. Si dans un
fichier que vous ouvrez correspond à l'une des expressions régulières
(dans ce cas, la chaine README
) Emacs lance automatiquement
le mode que vous avez spécifié.
La syntaxte amusante ;-) au dessus est du au fait que nous
rajoutons une paire à ce mode. Vous ne voulez surement pas juste
assigner à auto-mode-alist
une valeur sans vous assurer que
les valeurs contenues ne sont pas perdue.
Et si vous voulez qu'Emacs passe dans le mode
html-helper-mode
chaque fois que j'ouvre un fichier que se
termine par .html
ou .htm
, je n'ai qu'à ajouter à
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))
Les possibilités sont vraiment sans fin.
.emacs
Après avoir passé quelque temps avec Emacs et avoir une idée de base de ce que l'on peut customiser, vous voudrez probablement changer quelques petites options de manière permanente. (ou au moins jusqu'à ce que vous ayez changé d'avis. Si vous utiliser Emacs tout les jours, vous trouverez que votre fichier .emacs grossis de plus en plus. C'est bon puisque cela signifie que vous avez compris comment faire fonctionner Emacs de la manière dont vous voulez. C'est triste de voir que peu de programmes permettent cette approche.
Dans le cas ou vous n'auriez pas encore deviné, chaque fois que
vous lancez Emacs, il cherche dans le fichier .emacs
dans
votre répertoire home. Votre fichier .emacs
est le fichier
où tout le code que vous voulez lancer automatiquement et toutes
sortes de customisations que nous avons vu précedement.
Un autre exemple de mon fichier .emacs
:
(setq inhibit-startup-message t)
La varialbe inhibit-startup-message
contrôle si Emacs doit
afficher le message de bienvenu ou non. Après un certain temps, je
devenais malade en le voyant ( car je savais où trouver l'aide et
autres trucs) donc j'ai cherché une manière de le désactiver.
Comme exercice, essayer de créer un fichier .emacs
par vous
même et en ajoutant cette ligne. Sortez alors d'Emacs, et relancer le.
Vous ne devriez plus voir le message de bienvenue.
Souvent, lorsque vous lisez quelque chose à propos d'un mode
Emacs(ou d'un package), la documentation suggèrera d'ajouter des
lignes à votre fichier .emacs
pour pouvoir faire fonctionner
le package ou le mode d'une manière précise.
La FAQ GNU Emacs (C-h F
) contient quelques unes des
options concernant le fichier .emacs
que vous trouverez
peut-être utile.
Au fur et à mesure du développement d'Emacs en popularité et son
évolution, quelques un ont dis "il y doit y avoie une meilleure
manière de permettre aux novices de customiser Emacs." Et
customize
était né.
Customize procure aux utilisateurs une manière plus intuitive de configurer des parties d'Emacs. Pour l'essayez, visitez le sous-menu Customize
de votre menu Help
, ou tapez M-x customize
.
Customize groupe la configuration dans des groupes logiques, tels que ``Editing'', ``Programming'', ``Files'', et ainsi de suite Quelques groupes contiennent des sous-groupes.
Si vous effectuer des changements en utilisant l'interface Customize
, Emacs sauvegardera vos changements dans votre fichier .emacs
C'est assez pratique, car cle code ajouté peut-être facilement inspecté (et changé)
Je n'utilise pas l'interface Customize
, je ne peut donc pas vous en dire plus..
Comme n'importe quelle application X, Emacs respecte vos ressources
X. Cela signifie que vous pouvez contrôler les couleurs initiales,
(geometrie), et d'autres choses spécifiques que vous pouvez faire avec
un xterm
ou nxterm
, ou autre.
Voici une partie utile de mon fichier ~/.Xdefaults
:
emacs*Background: DarkSlateGray emacs*Foreground: Wheat emacs*pointerColor: Orchid emacs*cursorColor: Orchid emacs*bitmapIcon: on emacs*font: fixed emacs.geometry: 80x25
Voyez les pages man X
pour plus de détails à propos des ressources X.
Chris Gray ( cgray4@po-box.mcgill.ca) dis aussi:
Dans la debian, le fichier~/.Xdefaults
ne semble pas être utilisé. Néanmoins, les utilisateurs de la debian peuvent mettre ce que vous avez mis plus haut dans le fichier/etc/X11/Xresources/emacs
et ils auront toutes les belles couleurs comme si ils utilisaient une RedHat.