next up previous contents index
Next: Emacs et X window Up: Emacs Previous: Lancer des commandes

   
Configurer Emacs

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



MATHIEU DECORE
1999-11-03
Merci de me dire ce que pensez de ce document.