Настройка сочетаний клавиш в определенных режимах в 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,

Другие вопросы по тегам