为了在 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-buffer
s 定义是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命令?