2013-12-23 118 views
2

我正在嘗試編寫一個emacs函數,每5秒執行一次shell命令。但是,我無法暫停工作。以下是我的:sleep-for while while循環被忽略

(while '(test) 
    (insert (format "echo hello")) 
    (comint-send-input)) 
    (sleep-for 0 5000) 

我懷疑由於與Lisp功能評估相關的原因,睡眠被忽略。任何有關如何在每次命令評估後都會發生暫停的建議?

+2

也許'(comint-send-input))'從'sleep-for'偷走了最後一個paren? – mishadoff

+0

考慮使用'run-with-timer'而不是'sleep-for'。 – Tobias

+0

是的,移動paren。你也可以嘗試在'comint-send-input'之前放置'sleep-for',而不是在之後(不要)。 – Drew

回答

2

正如評論中提到的那樣,問題出在paren上。

此外,我剛剛嘗試sit-for*scratch*,它比sleep-for執行更平滑。

(while 1 
    (insert "hello") 
    (sit-for 1)) 

但都鎖定了Emacs,因爲它是單線程的,所以你應該小心這種活動。

請考慮使用async包或類似的東西。

+0

+1,特別是針對異步推薦。 –