Настройка сочетаний клавиш в определенных режимах в Emacs (например, ido)
У меня есть две проблемы, которые в некоторой степени связаны, я считаю:
1) В IDO я бы хотел изменить ido-restrict-to-match на то же самое, что и C-SPC или C- @. К сожалению, я не знаю, как сказать Emacs, что я хочу другой ярлык (скажем, C-0).
2) Я хотел бы защитить свой C-; но всякий раз, когда работает режим flyspell, он обгоняет C-;, Мое определение в.emacs как:
(global-set-key (kbd "C-;") 'mark-paragraph)
но, очевидно, flyspell перезаписывает это... (хотя даже тогда, если я смотрю в помощь Mh k C-; он говорит mark-paragraph
)
Может ли кто-нибудь сказать мне, как связать / развязать ключи в этих условиях? Он должен работать без изменения ido.el и flyspell.el и перестроения, верно?
Спасибо большое!
1 ответ
Flyspell предоставляет настройки для C-;
привязка, так что вы можете либо M-x customize RET flyspell-auto-correct-binding RET
или положить что-то подобное в вашем ~/.emacs
:
(setq flyspell-auto-correct-binding (kbd "C-~")) ; or a binding of your choice
Что касается ido
, ваш вопрос немного сбивает с толку, потому что это подразумевает, что бывают случаи, когда вы используете ido вне минибуфера...
Документация в ido.el содержит следующие рекомендации:
;; To modify the keybindings, use the ido-setup-hook. For example:
;;(add-hook 'ido-setup-hook 'ido-my-keys)
;;
;;(defun ido-my-keys ()
;; "Add my keybindings for ido."
;; (define-key ido-completion-map " " 'ido-next-match)
;; )
Используя эти знания, вы можете изменить привязки клавиш, например, в своей собственной функции "ido-my-keys":
(define-key ido-completion-map (kbd "C-SPC") nil)
(define-key ido-completion-map (kbd "C-@") nil)
(define-key ido-completion-map (kbd "C-0") 'ido-restrict-to-matches)
Для минибуфера тоже есть дополнительный хук ido, но не понятно, зачем вам это нужно: ido-minibuffer-setup-hook
,