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

Re: GNU screen, emacs, eñes y acentos



Luis Rodrigo Gallardo Cruz wrote:
On Fri, May 19, 2006 at 11:42:33PM -0300, Gabriel Parrondo wrote:
Hola listeros, tengo un problema bastante molesto.

Cuando uso emacs a través de screen, este reconoce la pulsación de la "ñ" como M-q (o sea, Alt+q) y los acentos no se como que, pero vuelve atrás algunas lineas si hago 'a (para hacer una a con tilde) o cualquier otra letra. El teclado está bien configurado como español, ya que todas las demás teclas funcionan bien... y estas teclas "problemáticas" funcionan perfectamente en otras aplicaciones.

Alguien sabe que tengo que tocar en la conf. de screen o emacs para que funcione todo bien?

Esto es un poquito complicado: Por alguna razón que no he logrado
entender, emacs bajo screen supone que la terminal es una *muy* viejita
que solo envia caracteres ASCII, es decir < 128. Y supone que, como era
común en esas terminales, el 'high-bit' significa que presionaste la
tecla con 'meta'. O sea, el problema que estás viendo.

Entonces, lo que hay que hacer, es decirle a emacs que eso no es cierto.
Eso se hace configurando el 'input method'. Pero no es buena idea
simplemente cambiar el default, por que entonces pasan cosas raras
cuando lo usas bajo X.

Entoooonces, lo que hay que hacer es cambiar el _input method,_ *cuando
estamos en la consola.* Pero el mismo Emacs puede tener _frames_ en X y en
la consola. Entooooooonces, hay que cambiar el _input method_ sólo de
aquellos _frames_ que están en la consola.

¿Todavía conmigo? Pon en tu .emacs (.xemacs/init.el si usas xemacs)

------------------------------------------------------------------------
;; Función que pone el input method 'nil' si el frame actual está en
;; consola. El input method nil no interpreta el 'high-bit'
(defun vk-fix-xterm (&optional console)
  (set-input-mode (car (current-input-mode))
                  (nth 1 (current-input-mode))
                  0 nil console))

;; Ponemos la función anterior en el hook de creación de frames
(add-hook 'create-frame-hook 'vk-fix-xterm)
------------------------------------------------------------------------

Y cuentame si sirve, por que yo sólo lo he probado en xemacs :-)

Otra opción, por supuesto, sería cambiar el _termcap_ de screen, para
que reporte ser una terminal más moderna. Pero eso está completamente
más allá de mi alcance.
Otra solución que encontré fue cambiar $TERM por "linux" y el problema se solucionó. El único problema es que otra aplicación que usa ncurses (mocp) se ven muy mal...



Luego voy a probar lo que me comentas y ver como va en emacs. Aunque lo mejor sería, como dices, cambiar el termcap para decirle a TODAS las aplicaciones que es una terminal mas moderna.



Investigo y les cuento.
Gracias a todos.


--
Gabriel Parrondo
GNU/Linux User #404138

"The only difference between theory and practice is that, in theory, there's no difference between theory and practice."



Reply to: