我使用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命令在下面的shell中运行命令,这意味着shell模式。如果您只想输出并且没有任何功能,则使用start-process运行命令可能更接近您想要的。
原文链接:/bash/387552.html(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内部,指出了一个关于处理和号的注释,如果它在那里,命令将异步运行。)