Настройка сочетаний клавиш в определенных режимах в Emacs (например, ido) - PullRequest
4 голосов
/ 08 июля 2011

У меня есть две проблемы, которые, по-моему, несколько связаны:

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 Ответ

9 голосов
/ 08 июля 2011

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.

...