我全局启用了ErgoEmacs辅助模式,它定义了许多用于基本编辑的自定义键盘快捷键。但是,当我打开任何lisp文件时,slime-mode会自动打开并使用自己的命令覆盖 M-p 和 M-n 。但是我希望 M-p 和 M-n 始终由ergoemacs-mode定义。如何设置次模式加载和定义键绑定的顺序?或者我如何提高ergoemacs-mode keybindings优先级?
答案 0 :(得分:3)
如何设置次要模式加载和定义键绑定的顺序?或者我如何提高ergoemacs-mode keybindings优先级?
我认为您需要确保ErgoEmacs在变量minor-mode-map-alist
中的slime-mode之前出现。可能有更好的方法,但下面的代码应该实现这一点。如果它符合您的要求,请告诉我。
(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))))
答案 1 :(得分:2)
也许更简单的解决方案是删除Slime的绑定:
(add-hook 'slime-mode-hook
(lambda ()
(define-key slime-mode-map [?\M-p] nil)
(define-key slime-mode-map [?\M-n] nil)))
注意:Guaranted 100%未经测试,变量的名称可能与slime-mode-map不同(并且它可能仅在加载粘液模式后才存在)。