2010-08-19 12 views
7

Estoy tratando de aprender org-mode y me di cuenta de que mis archivos se doblaron pulcramente cuando salí de emacs. Al presionar S-TAB en un intento de desplegar todo el archivo, aparece el siguiente mensaje de error en el mini-buffer: M-[ z is undefined. Buscar en Google el error no fue útil. ¿Alguna idea de dónde está ocurriendo el hipo y cómo puedo solucionarlo?Shift-Tab produce un error críptico en Emacs

Estoy usando Mac OS X 10.6.4 con Terminal.app, GNU Emacs 23.2.1.

Edit: Puedo confirmar ahora que el problema es Terminal.app. No recibo este mensaje de error con Carbon Emacs o cuando uso Emacs desde iTerm.app.

Gracias a Gilles por caminarme pacientemente a través de una solución.

+1

¿Qué F1kShift +Tab espectáculo? (o 'M-x describe-key S-Tab') – jfs

+0

Ambos devuelven' M- [z (traducido de M- [Z) no definido' en el mini-buffer. – jrhorn424

+0

Hmm ... Acabo de encontrarme con esto en una ventana 'emacsclient -nw' en una sesión de pantalla de GNU. Utilicé C-x C-c para separar la ventana para volver al indicador del shell (con emacs --daemon aún ejecutándose en segundo plano). Luego abrí una nueva ventana de emacslient y la pestaña S funcionó bien. Vuelvo a conectar la sesión de pantalla desde varios terminales (gnome-terminal, xterm, cygwin mintty) dependiendo de la plataforma en la que me encuentre. No puedo decir que rastreé la causa raíz, pero al abrir una nueva ventana 'emacsclient -nw' "se solucionó" en mi caso. emacs-24.5. Parece en mi caso ser una confusión de mapeo temporal de teclas (no estoy seguro de cómo) – Juan

Respuesta

8

La interfaz entre el terminal y el programa que se ejecuta dentro de este (aquí, Emacs) solo puede enviar caracteres, no claves. Por lo tanto, las teclas especiales o combinaciones de teclas a menudo envían una secuencia de teclas que comienza con ESC. Por ejemplo, su terminal aparentemente envía ESC [ Z para Shift + Tab.

Normalmente, Emacs traduce estas secuencias de caracteres a nombres clave, pero parece que los desarrolladores se perdieron esta. Se puede definir usted mismo con

(Para Emacs < = 22, sólo tiene que utilizar (define-key function-key-map "\e[Z" [backtab]).)

Algunos modos pueden definir fijaciones para S-tab y no backtab. Si tiene Emacs 23, (define-key function-key-map [S-tab] [backtab]), debería hacer que estos modos funcionen.

+0

Necesitamos un par de final adicional para el código de Emacs 23. Ninguno de los dos parece solucionar mi problema. Emacs sigue arrojando el error con esas dos líneas en mi archivo '.emacs'. – jrhorn424

+1

Probablemente sea mejor usar [pestaña posterior] en lugar de [pestaña S]. Al menos en Emacs 23, ese parece ser el nombre canónico al que se asignan S-tab, iso-left-tab y otras variaciones. – JSON

+0

@JSON: gracias, de hecho la mayoría de los modos tienen enlaces para 'backtab' ahora. @ jrhorn424: ¿todavía obtienes exactamente el mismo mensaje de error? ¿Qué sucede si evalúa manualmente '(define-key input-decode-map" \ e [z "[backtab])'? – Gilles

Cuestiones relacionadas