Противоречивые сочетания клавиш в двух второстепенных режимах Emacs - PullRequest
3 голосов
/ 10 марта 2012

У меня есть вспомогательный режим ErgoEmacs , включенный глобально, который определяет множество пользовательских сочетаний клавиш для базового редактирования. Однако когда я открываю любой файл lisp, режим слизи включается автоматически и переопределяет M-p и M-n своими собственными командами. Однако я хочу, чтобы M-p и M-n всегда определялись в ergoemacs-mode. Как установить порядок загрузки второстепенных режимов и определения сочетаний клавиш? Или как повысить приоритет сочетаний клавиш в режиме ergoemacs?

Ответы [ 2 ]

3 голосов
/ 10 марта 2012

Как установить порядок загрузки второстепенных режимов и определения сочетаний клавиш?Или как повысить приоритет комбинаций клавиш в режиме ergoemacs?

Я думаю, вам нужно убедиться, что ErgoEmacs появляется перед режимом слизи в переменной minor-mode-map-alist.Вероятно, есть гораздо лучший способ, но код ниже должен достичь этого.Дайте мне знать, если он делает то, что вы хотите.

(require 'cl)

(add-hook
 'slime-mode-hook
 (lambda ()
    (let ((elem (first
         (remove-if-not
          (lambda (item) (equal 'ergoemacs-mode (car item)))
          minor-mode-map-alist))))
      (setq minor-mode-map-alist (remove elem minor-mode-map-alist))
      (add-to-list 'minor-mode-map-alist elem))))

2 голосов
/ 21 марта 2012

Возможно, более простое решение - удалить привязки Slime:

(add-hook 'slime-mode-hook
  (lambda ()
    (define-key slime-mode-map [?\M-p] nil)
    (define-key slime-mode-map [?\M-n] nil)))

Осторожно: гарантированно 100% не проверено, имя переменной может отличаться от slime-mode-map (и, вероятно, оно будет существовать только после загрузки slime-mode).

...