我正在尝试通过调试 Emacs 程序来优化其性能。特别是,我在使用 WLAN、手机等远程连接时遇到了非常长的启动时间(与裸 Emacs 相比大约为 5 分钟 vs. 1 分钟)。在这种情况下,任何写入的 message
都没有帮助,因为显示根本没有刷新。
我想要做的是将消息写入 Linux 进程的“标准输出”。我知道有 --batch
模式,但这对我没有帮助,因为我想要交互使用 Emacs。
那么,我该如何将消息输出到 Linux 标准输出(而不是 Emacs 标准输出)中呢?
您可以使用以下方式将输出发送到标准错误输出:
(print "hello world" #'external-debugging-output)
或者(princ "hello world" #'external-debugging-output)
这可能会缓冲,所以要小心。现在无法输出到标准输出。我想要添加它!
以守护进程模式启动emacs (emacs --daemon
),任何在启动过程中的消息都会被发送到stdout或stderr,如lunaryorn所述。
使用emacsclient
连接服务器。
关闭服务器最简单的方法是 M-x kill-emacs
RET
详情请参见 C-hig (emacs) Emacs Server
RET
在 CentOS 6.8(GNU Emacs 23.1.1)中,此方法适用:
(append-to-file "here I come to save the day\n" nil "/dev/stdout")
$ MY_TTY=$(tty) open /Applications/Aquamacs\ Emacs.app &
然后在emacs中:
(append-to-file "here I come to save the day\n" nil (getenv "MY_TTY"))