3

我正在尝试使用 comint erlang-shell 打开一个后台缓冲区,一旦启动,在 emacs 中运行一个函数调用(使用 distel 将其二进制文件发送到 erlang 节点)。

IE:

...
(let ((args (append (list "-sname" node-name "-pa") path)))
    (get-buffer-create buffer-name)
    (apply #'make-comint-in-buffer node-name buffer-name "erl" nil args)
  (erl-check-backend (make-node-name node-name))
...

问题是当我调用 distel 时,节点还没有启动(epmd 没有注册名称)所以它失败了。我猜这是因为劣质进程还没有机会运行。有没有办法等到 comint-buffer 完成设置?

我在作为参数发送到上述函数的缓冲区的缓冲区进程上尝试了接受进程输出,但这只是挂起。

任何帮助表示赞赏:)

托马斯

4

2 回答 2

1

在 python-mode.el 中,以这种方式检查正在运行的进程

(or (get-buffer-process (py-buffer-name-prepare pyshellname))
      (get-buffer-process 
          (py-shell nil dedicated pyshellname 
               switch sepchar py-buffer-name t)))))

即如果一个Python shell 不存在,它的开始将返回进程符号。

于 2012-08-06T11:26:27.920 回答
1

在 Dave Love 编写的 python.el 中,使用了以下内容:

(while (progn
     (accept-process-output proc 5)
     (null python-preoutput-result)))
于 2012-08-20T06:05:17.280 回答