2010-08-19 7 views
7

Ich versuche zu lernen, org-mode und bemerkte, dass meine Dateien sauber gefaltet werden, wenn ich emacs verlassen. Wenn ich in einem Versuch versuche, die gesamte Datei zu entfalten, erhalte ich die folgende Fehlermeldung im Minipuffer: M-[ z is undefined. Das googlen des Fehlers war nicht hilfreich. Irgendeine Idee, wo der Schluckauf passiert und wie ich es beheben könnte?Shift-Tab erzeugt kryptischen Fehler in Emacs

Ich benutze Mac OS X 10.6.4 mit Terminal.app, GNU Emacs 23.2.1.

Edit: Ich kann jetzt bestätigen, dass das Problem Terminal.app ist. Ich erhalte diese Fehlermeldung nicht mit Carbon Emacs oder wenn ich Emacs in iTerm.app verwende.

Danke an Gilles, der mich geduldig durch eine Lösung geführt hat.

+1

Was bedeutet F1kUmschalt +Tab zeigen? (oder 'M-x beschreiben-Taste S-Tab') – jfs

+0

Beide liefern' M- [z (übersetzt von M- [Z) ist undefiniert' im Minipuffer. – jrhorn424

+0

Hmm ... Ich bin gerade in einem 'emacsclient -nw'-Fenster in einer GNU-Bildschirmsitzung dazu gekommen. Ich habe C-x C-c verwendet, um das Fenster abzutrennen, um zur Shell-Eingabeaufforderung zurückzukehren (wobei emacs --daemon immer noch im Hintergrund läuft). Dann öffnete ich ein neues Emacslient-Fenster und S-Tab funktionierte gut. Ich befestige die Bildschirmsitzung von verschiedenen Terminals (gnome-terminal, xterm, cygwin mintty) abhängig von der Plattform, auf der ich gerade bin. Ich kann nicht sagen, dass ich die Ursache gefunden habe, aber das Öffnen eines neuen 'emacsclient -nw'-Fensters hat es in meinem Fall "repariert". Emacs-24.5. Scheint in meinem Fall ein temporäres Schlüsselmapping zu sein (nicht sicher wie) – Juan

Antwort

8

Die Schnittstelle zwischen dem Terminal und dem darin laufenden Programm (hier Emacs) kann nur Zeichen und keine Schlüssel senden. So senden spezielle Tasten oder Tastenkombinationen oft eine Tastenfolge beginnend mit ESC. Zum Beispiel sendet Ihr Terminal scheinbar ESC [ Z für Shift + Tab.

Normalerweise übersetzt Emacs diese Zeichenfolgen zurück in Schlüsselnamen, aber es scheint, dass die Entwickler diesen einen verpasst haben. Sie können es selbst definieren mit

(Für Emacs < = 22, nur (define-key function-key-map "\e[Z" [backtab]) verwenden.)

Einige Modi Bindungen für S-tab definieren können und nicht backtab. Wenn Sie Emacs 23 haben, sollten diese Modi funktionieren (define-key function-key-map [S-tab] [backtab]).

+0

Wir brauchen einen zusätzlichen End-parend für den Emacs 23 Code. Keiner scheint mein Problem zu lösen. Emacs wirft immer noch den Fehler mit beiden Zeilen in meiner '.emacs' Datei. – jrhorn424

+1

Es ist wahrscheinlich besser, [BackTab] als [S-Tab] zu verwenden. Zumindest in Emacs 23 scheint dies der kanonische Name zu sein, dem S-Tab, iso-left-tab und andere Variationen zugeordnet sind. – JSON

+0

@JSON: Danke, in der Tat haben die meisten Modi Bindungen für 'Backtab' jetzt. @ jrhorn424: Bekommst du immer noch genau die gleiche Fehlermeldung? Was passiert, wenn Sie '' define-key input-decode-map \ '[z "[backtab])' 'manuell auswerten? – Gilles

Verwandte Themen