Как повторно привязать привязку из основного режима

273
mmorin

Я использую 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в буфере org и в my-functionдругом месте. Если я в интерактивном режиме запускаю код привязки в буфере org с помощью 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).

Как я могу переопределить привязку в наборе в основном режиме?

0

1 ответ на вопрос

1
manandearth

Вы можете связать свою функцию в режиме org, используя define-key:

(define-key org-mode-map (kbd "C-c C-x C-z") 'my-function) 

Он будет переопределять любые глобальные привязки и работать только в буфере режима org.

Похожие вопросы