2016-07-27 40 views
0

有什么办法让Emacs Shell-Mode在收到它时显示输出,而不是等待前面的命令完成?显示在Emacs Shell模式下收到的stdout

例如:

python -c "import time; print 'hello'; time.sleep(3); print '...goodbye'" 

将暂停3秒钟,然后打印“你好”和“再见......”在同一时间。我试图让它打印出“你好”,等待三秒钟,然后打印“......再见”。

我在Windows 7上运行的Emacs 25.0.93.1

回答

0

我相信发生的事情是,“你好”被卡在输出缓冲器没有得到,直到程序退出输出(或缓冲填满更多)。当我在bash控制台窗口(emacs之外)中运行代码时,也会发生这种情况。

您可以使用sys.stdout.flush()手动刷新输出缓冲区,这将导致缓冲区中的文本(“hello”)立即显示。

我测试下面的代码在Emacs的外壳,ESHELL和长期模式(注意我也转换的打印语句python3语法):

python -c "import time; import sys; print ('hello'); sys.stdout.flush(); time.sleep(3); print ('...goodbye')" 
+0

sys.stdout.flush()完美工作,谢谢! – nslamberth