由于其定义无效,无法重新绑定Cx C以使用haskell模式特定函数

Gui*_*ern 1 emacs emacs24 haskell-mode

为了在haskell模式下执行保存的特定操作,此页面建议重新C-x C-s绑定要使用的键绑定haskell-mode-save-buffer而不是仅使用标准save-buffer命令:

(define-key haskell-mode-map(kbd"Cx Cs")'haskell-mode-save-buffer)

预期的行为是能够将haskell模式特定的挂钩添加到标准save命令.所以我已将它添加到我的~/.emacs文件中.

但是当我在haskell模式下使用此键绑定时,会发生以下错误:

符号的函数定义为void:haskell-mode-save-buffer

我还在.emacs文件中添加了这一行:

(add-hook'haskell-mode-hook'haskell-mode-save-buffer)

但它没有帮助.我想它似乎没有做任何事情,因为haskell-mode'save-buffers定义是void,所以我想将它添加到东西将无济于事.我也尝试添加该行

(define-key haskell-mode-map(kbd"Cx Cs")'haskell-mode-save-buffer)

haskell-mode.el文件本身(已安装目录(ELPA)中的文件),但我真的不知道这是否有帮助.我不能调试那种东西.

我试图找出是否在haskell-mode中定义了这个函数.M-x describe-variable "haskell-mode-"使用TAB 运行表明它在这组变量中不存在.编辑:正如评论中指出的,我应该describe-function尝试找到这个功能.M-x describe-function "haskell-mode-"使用TAB 运行显示haskell-mode-save-buffer在此处找不到.有趣的是,这里列出了两个似乎暗示能够提供预期功能的功能:

哈斯克尔模式 - 之前保存处理程序

[...]

哈斯克尔模式 - 后保存处理程序

haskell-mode.el文件中搜索"haskell-mode-save-buffer"不会产生任何结果.

在我的结尾有什么问题,我是如何重新绑定密钥的(没有明确提到我应该添加该行.emacs,无论如何,这只是我的假设),或者这是添加钩子的方式到haskell-mode中不再使用的save命令了吗?

leg*_*cia 5

在对haskell模式进行此更改时,该函数haskell-mode-save-buffer不再存在,并且它用于执行的任务由为Haskell模式缓冲区设置的保存处理程序自动执行.因此,绑定的意见C-x C-s,以haskell-mode-save-buffer已经过时.