【发布时间】:2014-04-11 20:19:33
【问题描述】:
我正在尝试执行以下操作:
- 在 emacs 中打开一个 shell 并 cd 进入项目文件夹
- 从存储库执行 mercurial pull。
- “等待”直到拉取完成
- 向 elisp 命令传达拉取已完成的信息,该命令启动 shell 命令开始,以便它可以继续使用编译命令来构建树。
在从 .emacs 文件中启动新的 elisp 命令之前,有没有一种方法/代码可以让我知道 shell 命令何时完成?
【问题讨论】:
-
一旦 Emacs 启动了一个异步进程,真的没有办法知道它什么时候结束。更复杂的是,如果您正在打开一个交互式 shell,当
hg pull完成时,该过程实际上并没有完成,它仍然存在!在这种情况下,大多数项目将只使用两个命令 - 一个用于第 1 步和第 2 步,另一个用于第 4 步。ESS (ess.r-project.org) 在类似的上下文中正是这样做的。 -
这是我使用的 --
start-process和set-process-sentinel: stackoverflow.com/a/18707182/2112489 该示例适用于 latexmk,但它也适用于其他东西。 -
感谢 Lawlist,成功了!