Я использую org-mode и хочу переопределить локальную привязку C-c C-x C-z
, по умолчанию привязанную к org-resolve-clocks
. Руководство говорит
Как описано в Local Keymaps, основные режимы и второстепенные режимы могут определять локальные сопоставления клавиш. ... Если вы хотите изменить одну из этих комбинаций клавиш, вы должны использовать ловушку режима (см. Хуки).
Итак, у меня есть эти строки в моем ~/.emacs
:
(global-set-key (kbd "C-c C-x C-SPC") 'my-function)
(global-set-key (kbd "C-c C-x C-z") 'my-function)
(add-hook 'org-mode-hook
(lambda ()
(local-set-key (kbd "C-c C-x C-z") 'my-function)))
Первая строка связывает несвязанный ключ с функцией. Вторая строка связывает ключ, уже связанный в режиме org, с функцией. Остальные строки определяют крючок.
Я запускаю Emacs заново и описываю ключи. C-c C-x C-SPC
связан с my-function
а C-c C-x C-z
связан с часами по умолчанию org-resolve-clocks
в орг-буфере и с my-function
другом месте. Если я запускаю код привязки интерактивно в орг-буфере с помощью M-:
:
(local-set-key (kbd "C-c C-x C-z") 'my-function)
тогда ключ привязан к my-function
а не по умолчанию.
Я также попробовал другой ответ в этой теме об установке привязок клавиш в основном режиме в emacs, и это не удалось:
(with-eval-after-load 'org-mode
'(define-key org-mode-map (kbd "C-c C-x C-SPC") 'my-function)
)
Я использую Emacs 25.3 (9.0).
Как я могу переопределить привязку в наборе в основном режиме?