用于在不读取(确认)缓冲区名称的情况下从文件中区分缓冲区的 Emacs 热键

Emacs hotkey for diffing buffer from file without reading (confirming) buffer name

我创建了一个调用 diff-buffer-with-file 命令的热键,但您必须按回车键确认您所在的文件是正确区分的文件:(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))).

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

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

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