即使我调用emacs -batch(即批处理模式而没有实际执行任何操作),emacs也会呕吐出一大堆消息:
$ emacs -batch
Loading 00debian-vars...
Loading /etc/emacs/site-start.d/50autoconf.el (source)...
Loading /etc/emacs/site-start.d/50cmake-data.el (source)...
Loading /etc/emacs/site-start.d/50devhelp.el (source)...
Loading /etc/emacs/site-start.d/50dictionaries-common.el (source)...
Loading debian-ispell...
Loading /var/cache/dictionaries-common/emacsen-ispell-default.el (source)...
Loading /var/cache/dictionaries-common/emacsen-ispell-dicts.el (source)...
Loading /etc/emacs/site-start.d/50psvn.el (source)...
Run Code Online (Sandbox Code Playgroud)
有没有办法让这些消息沉默?谷歌对此并没有太大的帮助.
Cra*_*tro 10
那些通常会显示在*Messages*缓冲区中的消息,而不是stderr.这里有几种方法可以使它变得沉默,按照复杂程度的增加顺序:
最简单的解决方法是重定向stderr,如果你不打算使用它:
emacs -batch 2>/dev/null
Run Code Online (Sandbox Code Playgroud)这些消息来自站点范围初始化中加载的内容.如果您不需要初始化文件中的任何其他功能,可以尝试:
emacs -batch --no-site-file ... # ignore system-wide
emacs -batch -Q ... # ignore everything
Run Code Online (Sandbox Code Playgroud)从理论上讲,人们可以通过这种方式来实现这一目标(setq force-load-messages nil),但是网站文件是这里打印的事实意味着您可能无法尽早完成.
建议load功能,以便始终调用它NOMESSAGE.这是一个草图:
(defadvice load (before quiet-loading
(&optional NOMESSAGE)
activate)
(setq NOMESSAGE t))
(load site-run-file t)
Run Code Online (Sandbox Code Playgroud)
这应该只是强制负载总是传递t的NOMESSAGE参数,然后加载site-run-file,忽略错误,如果没有这样的文件存在.(请注意,至少在我使用emacs的所有2台机器上,没有site-run-file;我不知道它是多么常见.)
| 归档时间: |
|
| 查看次数: |
996 次 |
| 最近记录: |