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

7. Éditer sous Emacs

7.1 Comment créer des caractères accentués ISO sur un clavier non-francophone et les afficher?

Cinq solutions existent.

x-compose

Si ce n'est pas déjà fait, placer dans un fichier de démarrage (.xinitrc, .xsession) la commande : xmodmap -e "keysym Alt_R = Multi_key".

Pour insérer des caractères accentués il suffit dès lors d'utiliser une combinaison de touches alt-droit, accent, lettre. Par exemple, alt-droit, 'ˆ', 'A' produira le A majuscule circonflexe.

GNU Emacs n'affiche pas par défaut les caractères accentués. Il faut pour cela évaluer la fonction standard-display-european, par exemple en incluant directement (standard-display-european t) dans son fichier d'initialisation d'Emacs (souvent ~/.emacs, sous Unix). En revanche la saisie de ces caractères ne pose pas de problème.

Sous XEmacs, c'est le contraire. Il affiche les caractères accentués correctement par défaut. Pour qu'il gère la touche compose il faut cependant l'obliger à charger la bibliothèque x-compose, par exemple en plaçant (require 'x-compose) dans le fichier d'initialisation de XEmacs.

Vous pouvez alors utiliser les tables syntaxiques ISO 8859/1 :

(set-input-mode nil nil 1)
;;; decommenter la ligne suivante si clavier QWERTY
; (require 'x-compose)
;; <compose> c ,   ---> c
;; <compose> e '   ---> e
;; <compose> a `   ---> a
;; <compose> i "   ---> i
;; <compose> o ^   ---> o

(require 'iso-syntax)

iso-accents

Ajouter dans le  /.emacs (standard-display-european t)et (iso-accents-mode t)

Pour obtenir l'accent souhaité il suffit de taper ' (accent aigu) ou ` (accent grave) suivi de la lettre que l'on veut accentuer.

Le c cédille s'obtient avec  c , les trémas avec les guillemets, les accents circonflexes avec ˆ. Il existe aussi des combinaisons avec / Pour obtenir un signe simple ( ' ou bien ` ), il suffit de saisir le signe suivi d'un espace.

iso-insert

Ajouter dans le  /.emacs (require 'iso-insert) puis utiliser le préfixe (par défaut) C-x 8. Par exemple, pour taper un 'é', utiliser C-x 8 ' e, pour un '', utiliser C-x 8 <, pour un '', utiliser C-x 8 C, etc. Pour plus de détails, voir le fichier iso-insert.el de votre distribution.

iso-latin-1

La version 2.0 du mode iso-latin-1 pour Emacs (il marche avec XEmacs et FSF emacs) est disponible sur ftp://ftp.laas.fr/pub/Logiciels/emacs/iso-latin-1.el.

Exemple d'utilisation :

(autoload 'iso-latin-1-mode "iso-latin-1" "Mode for editing accented text" t) (add-hook 'mail-mode-hook '(lambda () (iso-latin-1-mode 1)))

iso-latin-1 existait avant que d'autres modes tels que iso-acc, iso-insert, et d'autres soient distribués avec emacs >=19, et certains préferent cette approche.

set-language-environment

Pour voir les accents sous GNU Emacs 20 :

(set-language-environment 'latin-1)
(set-input-mode (car (current-input-mode)) (nth 1 (current-input-mode)) 0)

Ensuite, on peut avoir des caractères non accessibles au clavier en changeant de méthode de saisie avec la commande toggle-input-method, C-\ (ou C-u C-\ pour choisir sa méthode, notez la disponibilité de french-postfix et de french-prefix)

7.2 J'ai activé les touches mortes mais le circonflexe ne fonctionne pas.

Certains serveurs X semblent renvoyer dead-circumflex au lieu de asciicircum. Rajouter dans son .emacs

(define-key function-key-map dead-circumflex 'compose-circumflex-map)

7.3 Comment obtenir un passage à la ligne automatique?

M-x auto-fill-mode. La variable default-fill-column contient le nombre maximum de caractères par ligne. Utiliser (setq default-fill-column VALEUR) pour la modifier. Vous pouvez rajouter dans votre fichier .emacs pour lancer ce mode par défaut :

(setq default-major-mode 'text-mode)
(setq text-mode-hook 'turn-on-auto-fill)

7.4 Comment afficher le numéro de la ligne où de la colonne courante?

(setq line-number-mode t)
(setq column-number-mode t)

7.5 Comment avoir une vérification automatique des parenthèses ouvrantes et fermantes?

En principe, (load-library "paren" ) suffit. Si vous voulez quelque chose de plus fin :

;; marquage automagique
 (load-library "paren")
 (show-paren-mode 1)
 (make-face 'paren)
 (set-face-background (quote paren) "red")
 (set-face-foreground (quote paren) "black")
 (setq show-paren-face 'paren)

;;; do  parenthesis matching in emacs, as '%' in vi
 (defun match-paren (arg)
 "Go to the matching parenthesis if on parenthesis else insert ."
  (interactive "p")
   (cond ((looking-at "[([{]") (forward-sexp 1) (backward-char))
    ((looking-at "[])}]") (forward-char) (backward-sexp 1))
     (t (self-insert-command (or arg)))))
 (global-set-key (read-kbd-macro "") 'match-paren)

7.6 Comment faire pour que dans un xterm ou un rxvt, la touche backspace ne déclenche pas un appel à l'aide?

Il faut réaffecter C-h à une autre action (par exemple l'effacement de caractère, comme ici) et éventuellement affecter une autre combinaison de touches à l'appel à l'aide :

(global-set-key "\M-?" 'help-command)
(global-set-key "\C-h" 'delete-backward-char)

7.7 Comment reformater un paragraphe en tenant compte de ce qui est spécifié par default-fill-column ?

Placer le curseur dans le paragraphe et faire ESC-Q (ou toute autre combinaison liée à fill-paragraph-or-region). Attention, si une ligne commence par \, elle ne sera pas reformatée (mettre un espace avant pour qu'elle soit prise en compte).

7.8 Comment faire en sorte que l'indentation automatique n'utilise que des blancs et jamais de tabulations?

Utiliser (setq-default indent-tabs-mode nil)


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