我想解决的具体问题是
telnet
会话message
但一般的问题是向劣等(comint)进程发送命令 并等待输出返回并出现一个新提示,并返回输出。
我有:
(defun dired-vlc-test ()
(interactive)
(let* ((buf (process-buffer dired-vlc-telnet-proc))
(old-max (with-current-buffer buf
(point-max))))
(telnet-simple-send dired-vlc-telnet-proc "get_time")
(accept-process-output dired-vlc-telnet-proc 5)
(message (buffer-substring-no-properties old-max (with-current-buffer buf
(point-max))))))
然而,我总是得到的输出是“get_time”,即Emacs没有等待新的输出。
我从question
获得了accept-process-output
的想法
答案 0 :(得分:3)
accept-process-output
在你的情况下太早返回,因为它在接受一些输出后立即返回,但在你的情况下,你希望继续接受输出,直到你得到一个新的提示。请注意,远程进程不会告诉Emacs“这是一个提示”,因此您必须调整您的进程过滤器以识别“哦,我们收到的内容看似提示”,您必须调用accept-process-output
in一个循环,直到进程过滤器告诉它(可能通过一些全局变量)它已经看到一个提示。