Re: affichage d'un blanc insécable dans Emacs...

Top Page

Reply to this message
Author: Patrice Karatchentzeff
Date:  
To: guilde
Subject: Re: affichage d'un blanc insécable dans Emacs...
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
    '---''(_/--'  `-'\_)