从comint-redirect-send-command获取结果



我想在 comint 完成的进程启动后读取缓冲区的输出。

(comint-redirect-send-command-to-process 
command-string ;; tested to work in the commint buffer
output-buffer-name ;; random text
buffer-process ;; (get-buffer-process (current-buffer))
nil ;; don't echo input back
t) ;; don't show output buffer immediatly

此 sexp 在运行 comint 进程的缓冲区中进行评估。我想在该过程完成后阅读output-buffer-name的所有文本。

我已经尝试应用发布到这个问题的解决方案:通过在进程启动命令下方添加以下内容来在 emacs lisp 中睡觉:

(defun on-status-change (process status)
(message "status done"))
(set-process-sentinel buffer-process 'on-status-change)

此消息不会出现在*Messages*中。

输出缓冲区文本中没有提示,但我可以编写一个函数,该函数在输出完成后根据完整的输出文本返回t

我如何对缓冲区完成/更改做出反应,或者如何强制 comint 同步运行此函数。


comint-redirect-send-command-to-process的来源在第 3717 行

如果其他人有类似的问题,我最终"解决"了这个问题。

(while (not comint-redirect-completed)
(sleep-for 0.01))

comint-redirect-completed的值为零

文档: 如果重定向已在当前缓冲区中完成,则为非 nil。

显然不是一个很好的解决方案,但我无法获得其他任何工作。

相关内容

  • 没有找到相关文章

最新更新