2016-07-27 22 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