Frédéric BOITEUX écrivait :
> Bonjour,
>
> J'utilise Emacs v.21.3 pour écrire une doc, et je viens de
> découvrir le caractère espace insécable > du codage ISO-8859-15
> (merci Patrice !) et le moyen de l'entrer par la touche « Compose
> » : > Compose-<barre d'espace>-<barre d'espace>. Petit
> problème : on ne voit aucune différence dans Emacs (et dans pas
> mal d'autres éditeurs), > c'est difficile de faire ensuite la
> différence ! Quelqu'un connaîtrait-il une astuce pour les
> afficher > d'une manière différente (je ne sais pas, en couleur
> par exemple ?)
>
Voilà la sauce : je compte bien améliorer le tout dès que j'ai réussi
à gagner ma bataille contre Emacs ;-)
(bout de code aimablement volé à Matthieu Moy)
;; espace insécable point bleu foncé
(make-face 'nbsp-face)
(require 'disp-table)
(aset standard-display-table
(make-char 'latin-iso8859-1 (- ?\240 128))
(vector (+ ?\267 (* 524288 (face-id 'nbsp-face)))))
(là, c'est pour unifier latin-1 et -9)
;; encodage latin
(require 'ucs-tables)
(unify-8859-on-encoding-mode 1)
(unify-8859-on-decoding-mode 1)
(là, c'est ma prose, où comment laisser Emacs mettre tout seul les
espaces insécables où il faut sans avoir à réfléchir... Rappel : un
bon informaticien est un informaticien fainéant ;-))
(defun my-french-guill ()
"Insère une paire de guillemets"
(interactive)
(insert "« »");<-- deux espaces insécables
(backward-char 2))
(defun my-point-interrogation ()
"Insère un point d'interrogation précédé d'une espace insécable"
(interactive)
(if (eq (char-before) ?\ ) ; si espace classique
(progn
(backward-delete-char 1)
(insert " ?"));<-- 1 espace insécable
(insert " ?")));<-- itou
(defun my-point-exclamation ()
(interactive)
(if (eq (char-before) ?\ ) ; si espace classique
(progn
(backward-delete-char 1)
(insert " !"));<-- 1 espace insécable
(insert " !")));<-- itou
(defun my-double-point ()
(interactive)
(if (eq (char-before) ?\ ) ; si espace classique
(progn
(backward-delete-char 1)
(insert " :"));<-- 1 espace insécable
(insert " :")));<-- itou
(defun my-point-virgule ()
(interactive)
(if (eq (char-before) ?\ ) ; si espace classique
(progn
(backward-delete-char 1)
(insert " ;"));<-- 1 espace insécable
(insert " ;")));<-- itou
(defun my-double-parenthese ()
(interactive)
(insert "()")
(backward-char 1))
(defun my-double-crochet ()
(interactive)
(insert "[]")
(backward-char 1))
(defun my-double-accolade ()
(interactive)
(insert "{}")
(backward-char 1))
(defun my-double-keys ()
"Touches spécifiques"
(interactive)
;; [...]
(setq skeleton-pair t)
(local-set-key "$" 'skeleton-pair-insert-maybe)
(local-set-key "{" 'my-double-accolade)
(local-set-key "(" 'my-double-parenthese)
(local-set-key "[" 'my-double-crochet)
(local-set-key "?" 'my-point-interrogation)
(local-set-key "!" 'my-point-exclamation)
(local-set-key ":" 'my-double-point)
(local-set-key ";" 'my-point-virgule)
; XEmacs
; (local-set-key 'guillemotleft? 'my-french-guill))
; pour Emacs
(local-set-key [?\253] 'my-french-guill))
(add-hook 'text-mode-hook 'my-double-keys)
(add-hook 'po-subedit-mode-hook 'my-double-keys)
(add-hook 'message-mode-hook 'my-double-keys)
(le mode po sert uniquement lors de l'édition des fichiers po pour la
traduction).
(un truc bien pratique pour le copier-coller depuis le shell et/ou
Mozilla : évite les ^Miso8859-15...)
(setq selection-coding-system 'compound-text-with-extensions)
(décore le shell interne)
(autoload 'ansi-color-for-comint-mode-on "ansi-color" nil t)
(add-hook 'shell-mode-hook 'ansi-color-for-comint-mode-on)
Voilà, c'est un extrait rapide de mon .emacs.
PK
--
|\ _,,,---,,_ Patrice KARATCHENTZEFF
ZZZzz /,`.-'`' -. ;-;;,_
mailto:p.karatchentzeff@free.fr
|,4- ) )-,_. ,\ ( `'-'
http://p.karatchentzeff.free.fr
'---''(_/--' `-'\_)