emacs elisp切换到缓冲区并关注
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了emacs elisp切换到缓冲区并关注相关的知识,希望对你有一定的参考价值。
我正在尝试编写一个命令,该命令将导致Emacs切换到新缓冲区并执行将输出写入缓冲区的操作(在这种情况下,执行shell命令)。
(defun test-func ()
(interactive)
(let ((bname "*temp*")
(default-directory "/home/me"))
(with-output-to-temp-buffer bname
(switch-to-buffer bname)
(shell-command "ls -l" bname))))
在这种情况下,它“工作”,除了它直到命令完成执行后才切换缓冲区。我想立即切换,然后按照输出运行。有没有办法做到这一点?
答案
您需要在redisplay
之后显式调用switch-to-buffer
以使其可见。
请注意,ls
是一个相当“快速”的命令,它不太可能显示零碎。你可能想尝试像这样的shell脚本
while true; do
date
sleep 10
done
并且异步运行(使用async-shell-command
或将&
添加到命令行的末尾)。
另请注意,shell-command
的帮助说:
在Elisp中,通常可以通过直接调用
call-process
或start-process
来提供更好的服务,因为它提供了更多控制并且不强制使用shell(需要引用参数)。
以上是关于emacs elisp切换到缓冲区并关注的主要内容,如果未能解决你的问题,请参考以下文章
让 Emacs shell 命令发送桌面通知 | Linux 中国