Configurer Emacs consiste à écrire un fichier .emacs se composant de code LISP. Par exemple, pour créer un racourcis clavier, comme lancer RMAIL lorsqu'on tape C-c r :
; Lecture du courrier. (global-set-key "\C-cr" 'rmail)
Cette définition est faite pour tous les modes. On peut définir une nouvelle fonction et l'affecter à un racourcis clavier (en mode C dans l'exemple qui suit) :
; Insere dans un fichier le bloc suivant ("\n" passe a la ligne) :
;
; if () {
; }
;
; et met le curseur entre les parantheses ("backward-char 6", revient
; 6 caracteres en arriere).
(defun start-if-block()
(interactive)
(insert "if () {\n}\n")
(backward-char 6)
)
; Affectation d'une sequence de touches a cette fonction.
(define-key c-mode-map "\C-ci" 'start-if-block)
On peut aussi reconfigurer le clavier :
; Reconfiguration du clavier.
; Touche Backspace = retour arriere.
;
; "?" signifie "le code ASCII de"
; "?\C-h" signifie donc "le code ASCII de Ctrl enfonce avec h".
; Ce code (8) est le meme que "retour arriere".
; "\C-?" represente la touche supprime.
(keyboard-translate ?\C-h ?\C-?)
; Ctrl-\ ("?\C-\\") = Ctrl-h.
(keyboard-translate ?\C-\\ ?\C-h)
; Encore des modifications de touches...
(global-set-key "\C-a" 'scroll-up)
(global-set-key "\C-q" 'scroll-down)
; "global-unset-key" libere une sequence de touche.
; "overwrite-mode" provoque la bascule du mode insertion/remplacement.
(global-unset-key "\C-r")
(global-set-key "\C-r" 'overwrite-mode)
; La touche Entree indente la ligne suivante.
(define-key indented-text-mode-map "\C-m" 'newline-and-indent)
Enfin, voici quelque modifications succinctes qui permettent d'améliorer l'apect visuel du texte :
; Mode par defaut pour edition de texte qui indente les lignes. (setq default-major-mode 'indented-text-mode) ; Validation de la saisie au kilometre par "text-mode-hook". ; Longueur maximum de chaque ligne a 72 caracteres. (setq text-mode-hook 'turn-on-auto-fill) (setq fill-column 72)
Ce ne sont ici que quelque exemples de base qui peuvent largement être améliorés.
;;
;; Fichier .emacs: initialisation d'emacs
;; Fichier de base : Guide du Rootard
;;
(display-time) ;; Pour avoir l'heure dans la barre d'etat
(setq display-time-24hr-format t) ;; Format 24 heures
;; Nouveaux modes
(autoload 'c++-mode "cplus-md" "C++ Editing Mode" t)
(autoload 'perl-mode "perl-mode" "Perl Editing Mode" t)
(autoload 'c-mode "c-mode" "C Editing Mode" t)
; mieux vaudrait utiliser le "cc-mode"
;; Auto-Mode Settings : positionne le mode selon l'extension
(setq auto-mode-alist
(append '(("\.c$" . c-mode) ;; utilise le mode C++ meme pour C
("\.h$" . c-mode)
("\.C$" . c++-mode)
("\.H$" . c++-mode)
("\.cc$" . c++-mode)
("\.C$" . c++-mode)
("\.pl$" . perl-mode) ;; Perl
("/tmp/snd\.[0-9]*" . text-mode);; Text (pour le mail)
("[Rr][Ee][0-9]*" . text-mode)
("\.ada$" . ada-mode) ;; Ada
("\.spec$" . ada-mode)
("\.body$" . ada-mode))
auto-mode-alist))
# Remapes varies
(global-set-key "\eg" 'goto-line) ;; ESC G = Goto line
(global-set-key "\eo" 'overwrite-mode)
(put 'eval-expression 'disabled nil)
;; Accents...
(standard-display-european 1)
(load-library "iso-syntax")
;; Sous X-Window, textes en couleurs (C/C++/Shell/Makefile,etc)
(cond (window-system
(setq hilit-mode-enable-list '(not text-mode)
hilit-background-mode 'light
hilit-inhibit-hooks nil
hilit-inhibit-rebinding nil)
(require 'hilit19)
))
(if (not (equal window-system ""))
(global-set-key "\C-?" 'delete-char))
))
;; mieux vaudrait employer font-lock