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

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

Я использую org-mode и хочу переопределить локальную привязку C-c C-x C-z, привязанную org-resolve-clocksпо умолчанию.руководствоговорит

Как описано в разделе Локальные раскладки клавиатуры, основные и второстепенные режимы могут определять локальные раскладки клавиатуры. ... Если вы хотите изменить одну из этих раскладок клавиатуры, вы должны использовать хук режима (см. Хуки).

Итак, у меня есть эти строки в моем ~/.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-mode. Остальные строки определяют хук.

Я запускаю 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).

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

решение1

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

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

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

Связанный контент