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