如何将消息/回显输出重定向到 Emacs 中的缓冲区?

unp*_*680 5 emacs

我正在编写几个辅助函数供我使用。他们首先调用org-publish-project该输出,然后调用外部脚本。我想将执行的所有输出收集到弹出的临时缓冲区中。

外部的东西更容易。该函数shell-command接受有关将标准输出发送到何处的缓冲区的第二个参数。但org-publish-project只会将内容回显到迷你缓冲区,并且它会在任何地方显示*Messages*。我可以以某种方式将所有回声重定向到给定的缓冲区吗?

Ste*_*fan 5

不,遗憾的是,没有这样的重定向。您可以尝试建议该message功能,该功能将捕获其中许多消息,但不一定是全部消息。

(defvar my-message-output-buffer nil)

(defadvice message (around my-redirect activate)
  (if my-message-output-buffer
      (with-current-buffer my-message-output-buffer
        (insert (apply #'format (ad-get-args 0))))
    ad-do-it))
Run Code Online (Sandbox Code Playgroud)