デスクトップ保存モードは、あるセッションから別のセッションへEmacsの状態を保存するための機能です。デスクトップ保存モードを使用するためのユーザーレベルのコマンドについては、GNU Emacsマニュアルに記載されています(GNU EmacsマニュアルのSaving Emacs Sessionsを参照してください)。バッファがファイルを参照するモードでは、この機能を利用するために特別な操作を行う必要はありません。
ファイルを参照しないバッファの状態を保存するには、メジャーモードがバッファのローカル変数 desktop-save-buffer に nil
以外の値をバインドする必要があります。
このバッファローカル変数が nil 以外の場合、バッファの状態は desktop save
時にデスクトップファイルに保存されます。値が関数である場合、desktop save 時に引数 desktop-dirname
とともに呼び出され、その値は、呼び出されたバッファの状態とともにデスクトップファイルに保存されます。補助情報の一部としてファイル名が返される場合、それらは
call を用いてフォーマットされる必要があります。
(desktop-file-name file-name desktop-dirname)
ファイルを参照しないバッファを復元するには、メジャーモードがその処理を行う関数を定義しており、かつその関数がalist desktop-buffer-mode-handlers に登録されていなければなりません。
要素を持つリスト
(major-mode . restore-buffer-function)
関数 restore-buffer-function は、引数リストを用いて呼び出されます。
(buffer-file-name buffer-name desktop-buffer-misc)
そして、復元されたバッファを返す必要があります。ここで desktop-buffer-misc
は、desktop-save-buffer に任意でバインドされた関数によって返される値です。