我正在尝试用一个comint erlang-shell打开一个后台缓冲区,一旦启动,就在emacs中运行一个函数调用(使用distel将它的二进制文件发送到erlang节点)。
即:
...
(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完成设置?
我尝试在上面函数的参数中发送缓冲区的缓冲区进程上的accept-process-output,但是这只是挂起。
任何帮助表示赞赏:)
托马斯
答案 0 :(得分: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不存在,它的start将返回process-symbol。
答案 1 :(得分:1)
(while (progn
(accept-process-output proc 5)
(null python-preoutput-result)))