Окно переключения emacs на C-TAB и CS-TAB - PullRequest
5 голосов
/ 26 февраля 2010

Я видел здесь вопросы о перемещении курсора из окна в окно с C-x o и M-- C-x o. Хорошо.

Я хочу отобразить это на C-TAB и C-S-TAB.

Это то, что я добавил к своему .emacs:

(global-set-key [C-tab] 'other-window)
(global-set-key [C-S-tab] '(other-window -1))

C-tab работает, но не C-S-tab.

Минибуфер говорит мне:

Wrong type argument: commandp, (other-window -1)

Я пробовал без скобок вокруг другого окна, но это тоже не сработало бы.

Короче говоря, я не уверен, как передавать необязательные аргументы в функции в моем .emacs.

Помогите, пожалуйста?

Изменить, чтобы добавить версию: (emacs 22.3.1 для windows)

Ответы [ 3 ]

7 голосов
/ 26 февраля 2010
(global-set-key [C-S-tab] 
    (lambda ()
      (interactive)
      (other-window -1)))

РЕДАКТИРОВАТЬ: Добавлено в (interactive), для Готье и Питера Харта.

5 голосов
/ 28 февраля 2010

Я нахожусь на своем мобильном телефоне и не могу вспомнить точную последовательность клавиш, но вы можете найти ее в моем файле init.el или в Ch k CS-TAB, так что emacs сообщает вам "<последовательность клавиш, которую вы ищете > Не связывай ни с чем "или с чем-то похожим. http://pablo.rauzy.name/init.el.html: -)

РЕДАКТИРОВАТЬ: Итак, я сейчас на моем компьютере, вот простой способ сделать это:

(global-set-key [C-tab] 'next-buffer)
(global-set-key [C-S-iso-lefttab] 'previous-buffer)
2 голосов
/ 26 февраля 2010

Чтобы уточнить ответ Мэтью, я недавно написал небольшой вспомогательный макрос для таких ситуаций:

(defmacro global-set-key* (keys &rest body)
  `(global-set-key ,keys (lambda () (interactive) ,@body))

Таким образом, я могу написать что-то вроде:

(global-set-key* [(shift control n)] (next-line) (scroll-up 1))
(global-set-key* [(shift control p)] (previous-line) (scroll-down 1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...