Le 02-08-2008, Erwan David a écrit :
Astier écrivait :
On 29 juil, 10:52, Jacques L'helgoualc'h <lhh+no_s...@free.fr> wrote:
[...]
Pour avoir des raccourcis adaptés aux modes, il ne faut pas les laisser
se battre à coups de global-set-key :)
Arf...
Pour AucTeX, j'ai un raccourci conditionnel :
(define-key LaTeX-mode-map (kbd "C-c f") 'my-frac-or-foot)
[...]
(defun my-frac-or-foot ()
"Insère une fraction ou une footnote selon le contexte"
(interactive)
(if (texmathp)
(my-fraction)
(my-footnote)))
Ah oui c'est un peu plus "complexe" que je ne pensais :/ Je vais
essayer de faire ça.
Là, c'est à cause du sous-mode mathématique d'AucTeX, qui n'est actif
que dans certaines parties du buffer...
Sinon, une autre solution consisterait à avoir plusieurs .emacs
portant chacun les spécificités des modes ; à moins que cette approche
soit totalement "ridicule" ou inutile ?
Tu peux faire ce que tu veux, avec plusieurs instances spécialisées
d'Emacs au besoin. Par exemple, pour accélérer l'appel de mon Éditeur
favori, j'utilise un Emacs serveur lancé une fois pour toutes, et
l'appelle par gnuclient : j'ai donc dans mon ~/.xsession une ligne
emacs -iconic -l ~/.elisp21/server.el &
qui charge, après ~/.emacs, le supplément suivant :
,----[ server.el ]
| ;;; serveur de gnuclient
| (when window-system
| (when (fboundp 'gnuserv-start)
| (gnuserv-start)
| (defun adieu ()
| (unless (y-or-n-p "Ça va pas, la tête... ?! ")
| (keyboard-quit)))
| (add-hook 'server-switch-hook
| (lambda ()
| (set-frame-position (make-frame) 0 0)))
| (add-hook 'server-done-hook 'delete-frame)))
`----
et dans mon ~/.emacs, la définition générale d'adieu
(defun adieu ()
(unless (y-or-n-p "Fermer cette instance d'Emacs ?")
(keyboard-quit)))
(add-hook 'kill-emacs-hook
'adieu)
pour ne pas fermer l'Emacs serveur par inadvertance.
S'il y a global-set-key, c'est aussi qu'il y a "local-set-key" qui
modifie la keymap pour le buffer uniquement. En mettant ces localset-key
dans le hook du mode, tout roule...
Le « local-set-key » est encore plus spécialisé, il me semble que la
méthode du *-mode-map est mieux adaptée aux raccourcis qui sont définis
une fois pour toutes au premier chargement du mode :
(eval-after-load "latex" '(my-LaTeX-init))
avec mes ajouts de LaTeX-mode-map dans la fonction appelée.
--
Jacques L'helgoualc'h