gpt4 book ai didi

shell - 如何加速异步 shell 命令的 emacs 输出?

转载 作者:行者123 更新时间:2023-12-01 22:19:50 29 4
gpt4 key购买 nike

我正在使用 shell 命令在 emacs 缓冲区中运行应用程序的输出。

(shell-command "verbose-app &" "*verbose-app*")

问题是这个命令非常冗长。以至于 emacs 缓冲区有时需要几秒钟才能跟上。与实际输出滞后几秒。

有什么方法可以通过禁用某些东西来加速输出滚动吗?喜欢正则表达式匹配或语法突出显示?

供将来引用:

详细的应用程序是 adb logcat。我改变了现有的功能:

(defun adb-logcat ()
(interactive)
(shell-command "adb logcat -v threadtime&" "*adb-logcat*")
(pop-to-buffer "*adb-logcat*")
(buffer-disable-undo))

至以下内容:

(defun adb-logcat ()
(interactive)
(start-process "*adb-logcat*" "*adb-logcat*" "/bin/sh" "-c" "adb logcat -v threadtime")
(pop-to-buffer "*adb-logcat*")
(buffer-disable-undo))

现在滚动速度更快了。耶!

最佳答案

如文档所述,shell-command 在下级 shell 中运行该命令,这意味着 shell-mode。如果您只想要输出而不需要任何功能,那么使用 start-process 运行命令可能更接近您想要的。

(start-process "*verbose-app*" "*verbose-app*"
"/bin/sh" "-c" "verbose-app")

将其包装到函数中应该不会太难。您可能想了解 shell-command 如何实现异步命令;例如,如果您尝试在另一个进程已存在的情况下创建一个进程,它会询问是否应该终止现有进程。 http://git.savannah.gnu.org/cgit/emacs.git/tree/lisp/simple.el#n2447可能是一个很好的起点。 (如果链接出错,这是一个到内部 defun shell-command 的链接,指向有关处理&符号的注释。如果存在,该命令将异步运行。)

关于shell - 如何加速异步 shell 命令的 emacs 输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12083228/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com