#emacs #org-mode
#emacs #org-mode
Вопрос:
Я использую пользовательские привязки клавиш для org-mode:
(eval-after-load "org"
'(progn
(define-key org-mode-map (kbd "<M-S-left>") nil)
(define-key org-mode-map (kbd "<M-S-right>") nil)
(define-key org-mode-map (kbd "<M-S-up>") nil)
(define-key org-mode-map (kbd "<M-S-down>") nil)
(define-key org-mode-map (kbd "<M-left>") nil)
(define-key org-mode-map (kbd "<M-right>") nil)
(define-key org-mode-map (kbd "<M-right>") nil)
(define-key org-mode-map [C-S-right] 'org-shiftmetaright)
(define-key org-mode-map [C-S-left] 'org-shiftmetaleft)
(define-key org-mode-map [C-right] 'org-metaright)
(define-key org-mode-map [C-left] 'org-metaleft)
(define-key org-mode-map [C-up] 'org-metaup)
(define-key org-mode-map [C-down] 'org-metadown)
(define-key org-mode-map [C-S-return] 'org-insert-todo-heading)
))
Я хотел бы использовать эти же привязки клавиш в режиме orgstruct, который я запускаю поверх режима сообщений. То, что я пробовал, не работает:
(define-key orgstruct-mode-map (kbd "<M-S-left>") nil)
(define-key orgstruct-mode-map (kbd "<M-S-right>") nil)
(define-key orgstruct-mode-map (kbd "<M-S-up>") nil)
(define-key orgstruct-mode-map (kbd "<M-S-down>") nil)
(define-key orgstruct-mode-map (kbd "<M-left>") nil)
(define-key orgstruct-mode-map (kbd "<M-right>") nil)
(define-key orgstruct-mode-map (kbd "<M-up>") nil)
(define-key orgstruct-mode-map (kbd "<M-down>") nil)
Как я могу изменить сопоставление ключей для orgstruct-mode?
Ответ №1:
Определение ключа для его отмены. nil
Отвязывая ключ в orgstruct-mode-map
(второстепенном режиме), вы открываете message-mode-map
привязки (в основном режиме). Вы можете переопределить message-mode-map
привязки клавиш, активно связывая эти ключи orgstruct-mode-map
, но если вы хотите их отменить, вам также нужно будет отменить привязку ключей message-mode-map
.
Вот способ отменить привязку всех этих ключей на обеих картах:
(cl-dolist (map '(message-mode-map orgstruct-mode-map))
(cl-dolist (key '("<M-S-left>" "<M-S-right>" "<M-S-up>" "<M-S-down>"
"<M-left>" "<M-right>" "<M-up>" "<M-down>"))
(define-key (eval map) (kbd key) nil)))
Комментарии:
1. Я поместил это в свой .emacs, но, похоже, это работает, только если я оцениваю его вручную. Должен ли я обернуть это в какой-то код оценки после загрузки?