堆栈溢出!在过去的几天里,我尝试对emacs进行一些自定义,但遇到了我不知道该如何处理的问题。

我想做的是定义一个全局键绑定(bind)和一个ido模式键绑定(bind),它们将使用相同的键来执行不同的操作。

身份模式键绑定(bind)是通过以下方式定义的:

(defun ido-my-keys ()
  "Add my keybindings for ido."
  (define-key ido-completion-map (kbd "M-<return>")
    'ido-invoke-in-vertical-split)
  )

(add-hook 'ido-setup-hook 'ido-my-keys)

直到我将以下行放入我的.emacs文件中,它都可以正常工作:
(global-set-key (kbd "M-<return>") 'insert-newline-and-indent)

使用此行,M-return甚至从ido-switch-buffer调用insert-newline-indent。有趣的是,当我交互使用全局设置键时(即不是从init文件而是从M-x调用),一切都会按预期进行。

谢谢你的帮助。对不起我的英语不好。

问题原来是我打开的ergoemacs模式。此模式为导致此效果的global-set-key定义了一个建议。

我通过将global-set-key调用移到ergoemacs初始化上方来解决了这个问题。不是最好的解决方案,而是一个简单的解决方案。

最佳答案

该问题是由ergoemacs-keybindings软件包引起的,或更具体而言,是由ergoemacs-mode.el引起的

该软件包为global-set-key定义了一个建议,实际上,该建议被其自己的ergoemacs-global-set-key取代。但是,由于ergoemacs是次要模式,因此它的键映射具有比全局映射更高的优先级,因此覆盖了ido次要模式的键绑定(bind)。

我看到了针对该问题的三种解决方案:

  • ergoemacs-mode.el中的注释建议。
  • 在打开ergoemacs模式之前,请使用global-set-key。
  • 等待ergoemacs作者修复该错误;)
  • 关于emacs - 全局设置 key 掩盖的ido模式绑定(bind),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9877557/

    10-11 17:49