8

lambda()私はこのような関数を追加しましたrun-with-idle-timer

(run-with-idle-timer my-configurable-idle-time t
                 (lambda ()
                    ;;; do something
                  ) )

後でアイドルタイマートリガーからこの機能を再び削除することは可能ですか?

4

3 に答える 3

14

はい、に渡すことができるオブジェクトをrun-with-idle-timer返します。timercancel-timer

timerオブジェクトを保持していない場合はtimer-idle-list、手動で変更できます。

実行中の Emacs タイマーのリストを取得するも参照してください。

于 2013-03-07T13:51:36.520 に答える
8

また、開始したタイマーを強制終了したいという同様の状況にも遭遇しました。

(setq my-timer (run-with-timer 5 5 'my-func))

でも、

(cancel-timer my-timer) 

my-timer が設定されていないと言われたため、機能していませんでした(なぜこれが起こったのかわかりません)。

最初のポスターの方法に加えて、次の方法で殺すことができます。

(cancel-function-timers 'my-func)

これにより、関数 my-func を呼び出すすべてのタイマーがキャンセルされます。

私もテストしたタイマーリストを変更してそれを殺すために、私は次のことをしました:

(length timer-list)  ;; I had two timers..one good, one bad
(cdr timer-list)  ;; I verified the last was the one I wanted to keep
(setq timer-list (cdr timer-list)) ;; I reset timer-list 

明らかに、このリスト構造はさまざまであるため、それに応じて調整する必要があります。(run-with-idle-timer) でタイマーを開始した場合は、「timer-idle-list」に置き換えます。

これは、'gamegrid-start-timer' でタイマーを開始し、'gamegrid-kill-timer が機能しない場合にも機能するはずです。

于 2015-01-08T00:26:42.720 に答える