alterando o papel do sublinhado e do sinal de menos apenas no modo LateX

12

Durante o trabalho com arquivos tex com auctex + emacs (modo LateX), uso mais frequentemente _ (sublinhado) em vez de - (sinal de menos). O mesmo que ^ em vez de 6. O inconveniente é que devo pressionar mais frequentemente a tecla Shift.

Seria desejável personalizar o emacs de forma que, quando o emacs estiver no modo LateX ( e apenas nesse modo ), quando eu digitar - os tipos de emacs _ e quando digitar _ os tipos de emacs -. ou seja, as seguintes combinações de teclas:

- dá _

_ dá -

6 dá ^

^ dá 6

É possível?

Nome
fonte

Respostas:

16

Algo assim:

(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
fonte
maravilhoso, seu código funciona perfeitamente.
Name
1
(define-key LaTeX-mode-map "-" "_")e assim por diante deve ser suficiente ( "_"é interpretado como uma macro do teclado), além disso, funciona com TeX-electric-sub-and-superscript.
Constantine
1
Não, @ Constantine. O que você sugere causará recursão.
precisa
Oh, certo. Faz se _e -são mapeados um para o outro.
Constantine