changer le rôle du soulignement et du signe moins uniquement en mode LateX

12

Lors du travail avec des fichiers tex avec auctex + emacs (mode LateX), j'utilise plus fréquemment _ (souligné) au lieu de - (signe moins). Identique à ^ au lieu de 6. L'inconvénient est que je dois appuyer plus fréquemment sur la touche Maj.

Il serait souhaitable de personnaliser emacs de telle manière que lorsque emacs est en mode LateX ( et juste dans ce mode ), lorsque je tape - les types emacs _ et quand je tape _ les types emacs -. c'est-à-dire les raccourcis clavier suivants:

- donne _

_ donne -

6 donne ^

^ donne 6

C'est possible?

Nom
la source

Réponses:

16

Quelque chose comme ça:

(add-hook 'LaTeX-mode-hook 'my-latex-hook)

(defun my-latex-hook ()
  (require 'tex-site)
  (define-key LaTeX-mode-map "-" (lambda () (interactive) (insert "_")))
  (define-key LaTeX-mode-map "_" (lambda () (interactive) (insert "-")))
  (define-key LaTeX-mode-map "6" (lambda () (interactive) (insert "^")))
  (define-key LaTeX-mode-map "^" (lambda () (interactive) (insert "6"))))
abo-abo
la source
merveilleux, votre code fonctionne parfaitement.
Nom du
1
(define-key LaTeX-mode-map "-" "_")et ainsi de suite devrait être suffisant ( "_"est interprété comme une macro de clavier), en plus cela fonctionne avec TeX-electric-sub-and-superscript.
Constantine
1
Non, @Constantine. Ce que vous proposez provoquera une récursivité.
abo-abo
Oh, c'est vrai. Il le fait si _et -sont mappés les uns aux autres.
Constantine