Как обрабатывать конфликтующие привязки клавиш

paredit связывает M-<up> и M-<down>, но я хочу windmove, чтобы использовать эти привязки. У меня есть режим paredit-mode, который активируется только в определенных режимах, но windmove настроен на запуск в глобальном масштабе. Я хочу, чтобы windmove выиграл, но paredit крадет эти привязки при загрузке.

Как я могу легко остановить paredit от топания на поворотных ключах? Я входил в paredit.el и комментировал строки, которые устанавливали привязку клавиш, но это далеко не идеально (я должен помнить об этом каждый раз, когда я обновляю paredit).

В более общем смысле, могу ли я загрузить файл elisp при "защите" определенных привязок клавиш от изменения?

Ответ 1

Вы можете использовать eval-after-load для настройки поведения paredit после его загрузки, как описано в его комментариях:

;;; Customize paredit using `eval-after-load':
;;;
;;;   (eval-after-load 'paredit
;;;     '(progn ...redefine keys, &c....))

Итак, например:

(eval-after-load 'paredit
  '(progn
     (define-key paredit-mode-map (kbd "<M-up>") nil)
     (define-key paredit-mode-map (kbd "<M-down>") nil)))

Ответ 2

На этот вопрос был дан ответ: Глобальное переопределение привязки ключей в Emacs

Вы создаете свой собственный второстепенный режим с помощью предпочтительных привязок клавиш и включаете его по всему миру, чтобы он перекрывал все другие привязки клавиш.