Shift-Tab вызывает загадочные ошибки в Emacs - PullRequest
7 голосов
/ 19 августа 2010

Я пытаюсь выучить org-mode и заметил, что мои файлы аккуратно сложены, когда я выхожу из emacs.При нажатии S-TAB в попытке развернуть весь файл я получаю следующее сообщение об ошибке в мини-буфере: M-[ z is undefined.Погуглить ошибку не помогло.Есть идеи, где происходит сбой и как я могу это исправить?

Я использую Mac OS X 10.6.4 с Terminal.app, GNU Emacs 23.2.1.

Изменить: Теперь я могу подтвердить, что проблема в Terminal.app.Я не получаю это сообщение об ошибке при использовании Carbon Emacs или при использовании Emacs из iTerm.app.

Спасибо Жилю за терпеливое прохождение через решение.

Ответы [ 2 ]

9 голосов
/ 19 августа 2010

Интерфейс между терминалом и запущенной в нем программой (здесь, Emacs) может отправлять только символы, а не ключи. Поэтому специальные клавиши или комбинации клавиш часто отправляют последовательность клавиш, начинающуюся с ESC. Например, ваш терминал, очевидно, отправляет ESC [ Z для Shift + Tab .

Обычно Emacs переводит эти последовательности символов обратно в имена ключей, но кажется, что разработчики пропустили это. Вы можете определить это самостоятельно с помощью

(add-hook 'term-setup-hook
          (lambda () (define-key input-decode-map "\e[Z" [backtab])))

(Для Emacs <= 22 просто используйте <code>(define-key function-key-map "\e[Z" [backtab]).)

Некоторые режимы могут определять привязки для S-tab, а не backtab. Если у вас Emacs 23, (define-key function-key-map [S-tab] [backtab]) должен заставить эти режимы работать.

1 голос
/ 13 мая 2012

Как и оригинальный постер, я использую Mac OS X, но версию 10.6.8 и GNU Emacs 23.4.1. У меня были те же проблемы с S-Tab и орг-режимом. Я смог решить эту проблему, выполнив шаги, которые были чрезвычайно полезны по адресу: http://stuff.mit.edu/afs/sipb/user/daveg/Info/backtab-howto.txt

...