要从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)
在脚本的顶部,如果还没有。