Emacs Lisp:从 shell 运行 ELisp 文件时抑制"Saving file"文本



要从Shell启动我的Emacs Lisp脚本,我使用此命令:

emacs --script my-script.el -f my-function

在我的脚本中,我将3个缓冲区保存到3个文件。而且运行还可以。但是,当脚本在外壳上运行时,它会打印文本:

Using vacuous schema
Saving file "some-file-to-save"
Wrote "some-file-to-save"

此文本打印3次。我如何抑制此文本?

我不知道如何在ELISP中"正确地"修复它,但是一个简单的解决方案就是放弃输出:

emacs --script my-script.el -f my-function > /dev/null

这告诉Shell将所有STDOUT发送到/dev/null(丢弃所有写入其中的数据)。显然,这需要a)具有/dev/null(即大多数Unices,包括MACOS)的操作系统和b)不吮吸的外壳(即不 cmd.exe)。

标识将这些消息转输入脚本的函数调用。

假设第一个消息来自调用函数 message(files.el)的函数 save-buffer,则只需通过脚本替换 save-buffer(或呼叫)的调用来覆盖 message的行为:

(cl-letf (((symbol-function 'message) #'ignore))
  (save-buffer))

您需要添加

(require 'cl-lib)

在脚本的顶部,如果还没有。

最新更新