1

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

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

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

但是当我在haskell-mode中使用这个键绑定时,会发生这个错误:

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

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

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

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

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

haskell-mode.el文件本身(安装目录中的文件(ELPA)),但我真的不知道这是否有帮助。我还没到可以调试那种东西的地步。

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

haskell-mode-before-save-handler

[...]

保存处理程序后的haskell模式

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

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

4

1 回答 1

5

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

于 2014-08-04T12:41:47.977 回答