Cx Ccの後で一時停止を設定する方法は?


10

C-x C-cemacsで実行すると、すぐに終了します。設定confirm-kill-emacsするy-or-n-pと、閉じる前に確認を求めてきます。

の代わりにy-or-n-p、一時的なタイマーを3秒に設定してから、emacsを閉じます。だから、私が押すC-x C-cとそれは次のようなものを表示するはずです

Emacsは3秒でシャットダウンされます。Cgを押して停止します

何もしなければemacsをシャットダウンするはずですが、を押すC-gとシャットダウンできなくなります。どうすればこれを達成できますか?

回答:


13

3秒待機し、常にnil以外を返す独自の述語関数をロールできます(それがで中断されない限りC-g)。

(setq confirm-kill-emacs
      (lambda (&rest args)
        (interactive)
        (message "Quitting in 3 seconds. Press `C-g' to stop.")
        (sleep-for 3)
        t))

または任意のキーを読み取るバリアント:

(setq confirm-kill-emacs
      (lambda (&rest args)
        (interactive)
        (null (read-event "Quitting in 3 seconds. Hit any key to stop."
                          nil 3))))

7

plusを使用するsit-for代わりに使用できます。また、関数はコマンド()である必要はありません。sleep-fortinteractive

sit-fort待機したnil場合、およびユーザーが待機を中断した場合に戻ります。

(setq confirm-kill-emacs
      (lambda (&rest _)
        (message "Quit in 3 sec (`C-g' or other action cancels)")
        (sit-for 3)))
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.