Emacs里异步执行shell命令的正确方法
需求:异步执行一系列shell命令,比如git add . && git commit -am "Update." && git push
,不需要显示结果,也不要改布局,程序执行后做好清理。
分析:因为是shell命令,所以类似start-process
的函数用起来不方便。比较容易想到的是async-shell-command
,也就是M-&
。
尝试1:因为要「无痕」,所以直接用async-shell-command
也不好,我想到的方法是设置display-buffer-alist
让window不显示,同时设计一个在程序执行结束后关掉buffer的sentinel函数,代码类似下面的样子:
1 | (defun kill-buffer-when-done (process signal) |
解决:
其实一句话就可以了😂:
1 | (call-process-shell-command |
但还是有点不方便:没法看程序执行成功还是失败了。不管了,我只是想安静的执行shell命令,别的不管。
或者您可以把评论发在别处,添加指向本页的连接,然后把网址告诉我:
本文标题:Emacs里异步执行shell命令的正确方法
文章作者:Chris
发布时间:2016-03-15
最后更新:2022-03-23
原始链接:https://chriszheng.science/2016/03/15/Async-shell-command-without-output/
版权声明:本博客所有文章除特别声明外,均采用 CC BY 4.0 许可协议。转载请注明出处!
分享