[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

typo automatique sous (X)Emacs



Salut,

Comme promis, j'attache à ce message un emacs.el à mettre dans le
fichier de configuration ad hoc de (X)Emacs. Il a été testé avec
XEmacs et Emacs et fonctionne correctement avec les deux. Enfin, chez
moi en tout cas... en cas de problème, me les renvoyer
directement. Pas la peine de polluer la liste.

Par défaut, ces options s'activent dans les mode texte et le mode
d'édition du mode po (qui n'est pas un mode texte). Vous pouvez
ajouter ensuite autant de mode que vous le voulez...

Comment cela fonctionne-t-il ? Très simplement, après avoir chargé ce
fichier de configuration, vous tapez normalement votre texte ; si
tapez les signes de ponctuation ; : ! ?, (X)Emacs insérera
automatiquement une espace insécable avant le signe et s'il existe une
espace normale, elle sera détruite et remplacée par l'espace
insécable.

Pour les signes de ponctuation double, l'ouvrante et la fermante
seront affichées automatiquement après que vous ayez tapé l'ouvrante
et le cas échéant les signes d'espacement fixes seront ajoutés :

ex. quand on tape «, on obtient automatiquement « _ » ou _ est le
curseur.

ex. quand on tape (, on obtient automatiquement (_) 

(le curseur par défaut chevauche le dernier caractère en fait sous
(X)Emacs).

Enjoy,

PK

-- 
      |\      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:p.karatchentzeff@free.fr
     |,4-  ) )-,_. ,\ (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'\_)       
(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)

Reply to: