Emacs热键用于从文件中区分缓冲区而不读取(确认)缓冲区名称

时间:2015-06-23 03:45:25

标签: emacs elisp

我制作了一个调用diff-buffer-with-file命令的热键,但是你必须按Enter键确认你所在的文件是正确区分的文件:(global-set-key (kbd "C-c e") 'diff-buffer-with-file)

我查看了文档并看到你也给了&optional BUFFER,那么如何指定文件名呢?

我在网上看到文件名存储在buffer-file-name中,所以我尝试了(global-set-key (kbd "C-c e") '(diff-buffer-with-file (buffer-file-name))),但错误时出现错误:Wrong type argument: commandp, (diff-buffer-with-file (quote (buffer-file-name)))

1 个答案:

答案 0 :(得分:1)

您只能将命令(或键盘宏)绑定到某个键。 (diff-buffer-with-file (buffer-file-name))不是命令。如果这是您想要的代码,那么您需要使用defun来定义使用该代码的命名命令,或者您需要使用使用它的匿名命令(lambda格式)。而且您不需要将文件名作为参数传递。

(global-set-key (kbd "C-c e") (lambda () (interactive) (diff-buffer-with-file)))

您遗漏的主要内容是interactive规范,它将函数转换为命令。