Emacs Lisp:压制"保存文件"从shell运行ELisp文件时的文本

时间:2016-12-26 08:52:55

标签: elisp

要从shell启动我的Emacs Lisp脚本,我使用以下命令:

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

在我的脚本中,我将3个缓冲区保存到3个文件中。 它工作正常。但是当脚本在shell上运行时,它会打印文本:

Using vacuous schema

Saving file "some-file-to-save"

Wrote "some-file-to-save"

此文字打印3次。我怎么能压制这个文字?

2 个答案:

答案 0 :(得分:0)

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

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

这告诉shell将所有stdout发送到/dev/null(丢弃写入它的所有数据)。显然这需要a)一个操作系统/dev/null(即大多数Unices,包括macOS)和b)一个不吸吮的shell(即不是cmd.exe)。

答案 1 :(得分:0)

识别在脚本中转储这些消息的函数调用。

假设第一条消息来自调用函数save-buffer(files.el)的函数message,只需在脚本中替换message,即可覆盖save-buffer的行为。通过以下方式调用(cl-letf (((symbol-function 'message) #'ignore)) (save-buffer)) (或任何被调用的人):

(require 'cl-lib)

您需要添加

VMC_FWD2

在你的脚本之上,如果还没有。