emacs elisp (другое окно 0)

Я пытаюсь написать функцию гидры для переключения окон. По сути, я хочу, чтобы C-x o переводил меня в другое окно, а затем "o" циклически перебирал все окна. Поэтому я вставил .emacs

(global-set-key
   (kbd "C-x o")
   (defhydra hydra-other-window (:pre (other-window 1))
     "hydra other window"
     ("o" (other-window 1) "Next window")))

Это не работает. C-x o действительно переводит меня в другое окно, но нажатие "o" ничего не делает. Однако, если я изменю 1 в последней строке на 0, все будет работать, как и ожидалось. Это довольно удивительно, потому что, согласно документации, (other-window 0) просто выберет в текущем окне. Есть ли этому хорошее объяснение? Любая помощь будет оценена.


person user3208    schedule 07.12.2015    source источник


Ответы (1)


Вы можете использовать более простой код:

(defhydra hydra-other-window (global-map "C-x")
  "hydra other window"
  ("o" (other-window 1) "Next window"))
person abo-abo    schedule 07.12.2015
comment
Будет ли C-x 2 и т. д. работать как обычно после вашей модификации? - person user3208; 07.12.2015
comment
Я проверил ваш код. Это прекрасно работает! Большое спасибо. У вас есть идея, почему в моем исходном коде вторая 1 должна быть 0? - person user3208; 07.12.2015
comment
Ваш исходный код вызывает other-window дважды. Вы хотите вызвать его только один раз. - person abo-abo; 08.12.2015