1

Я использую 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).

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

1 ответ1

2

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .