GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/System-Sleep.html ・ emacs-doc.conao3.com

43.21 ブロックシステムのスリープとスリープイベントの処理

関数: system-sleep-block-sleep &optional why allow-display-sleep

この関数は、システムがアイドルスリープ状態に入るのを阻止します。

この特定のブロックの解除には、system-sleep-unblock-sleep に渡す必要があるトークンを返します(他の目的で、別のスリープブロックが同時に有効になっている場合があります)。スリープブロックの解除に失敗した場合は、nil を返します。

why は文字列であり、nil 以外の場合は、システムの検査可能なブロックリストに表示される可能性があるため、スリープブロックを識別するために使用されます。デフォルトは ‘Emacs’ です。

allow-display-sleep が nil 以外の場合、ディスプレイのスリープを許可します。デフォルトでは、ディスプレイはアクティブな状態に保たれます。

なお、Emacs プロセスが終了すると、すべてのプラットフォームでブロックが解放されます。

関数: system-sleep-unblock-sleep token

この関数は、token に関連付けられたスリープブロックの解除を行います。成功した場合は non-nil を、それ以外の場合は nil を返します。

マクロ: with-system-sleep-block (&optional why allow-display-sleep) body…

これは、フォームを body で囲み、body が完了した際に解除されるスリープブロックを付加できる便利なマクロです。これにより、body の実行中にシステムがスリープ状態になることがないことが保証されます。引数の意味は、前述の system-sleep-block-sleep と同様です。

関数: system-sleep-sleep-blocked-p

この述語関数は、アクティブなsystem-sleepブロックが存在する場合はnon-nilを、そうでない場合はnilを返します。

関数: system-sleep-unblock-all-sleep-blocks

この関数は、アクティブなすべてのスリープブロックのロックを解除します。この関数を呼び出す必要はほとんどないでしょう。

ユーザーオプション: system-sleep-event-functions

システムがスリープ状態に入ろうとする際、あるいはそこから復帰した際、この異常フック上の各関数は、スリープイベントである単一の引数 event とともに呼び出されます。その状態は ‘(sleep-event-state event)’ 経由で取得可能です。状態はシンボル pre-sleep または post-wake のいずれかとなります。

pre-sleep イベントの処理は可能な限り迅速に行い、ユーザーに確認を求めることは避けてください。システムは通常、スリープ前の処理時間として2〜5秒程度の非常に短い間隔を設けています。処理が完了していなくてもシステムがスリープ状態になる可能性があるため、可能な限り最小限の処理にとどめるようにしてください。例えば、関数内でアクティブな接続やシリアルポートを閉じるといった対応が考えられます。

post-wake イベントを処理する方が余裕があります。例えば、接続の再確立などに利用してください。

注意:コードやその呼び出し先の関数でシグナルを発生させないようにしてください。そうしないと、すべてのフックが停止します。コードを condition-case ブロックで囲むことができます(エラーを参照してください)。