Emacsの終了時の状態を保存する
Emacsの desktop
というパッケージを使うと、Emacsの終了状態を、再起動後に自動で復元することができます。
保存される範囲
保存の対象として
- いくつかのグローバル変数
- ファイルバッファ(特定のファイルを開いているバッファ)
- メジャーモード
- ディレクトリ
- ポイント(カーソル)の位置
- 選択範囲
- バッファ読取専用の状態
- いくつかのロカール変数
- フレームとウィンドウの設定
があります。さらに設定を追加することで
- kill-ring(コピーの履歴)
も保存されます。
注意すべき点は、復元できる情報に制限があることです。
例えば、org-agendaのように動的に生成されるバッファは復元されません。
またtext-scale-modeを使って文字サイズを大きくしていたとしても復元されませんでした。
desktop機能を使う
この機能を有効にする手順は
まず M-x customize-option
を実行して、カスタマイズ変数 desktop-save-mode
を ONに変更します。
次に M-x desktop-save
を実行します。状態が記録されるディレクトリを聞かれますので指定してください。現地点でのEmacsの状態が保存されます。
もし kill-ring も保存の対象にする場合、カスタマイズ変数 desktop-globals-to-save
へ kill-ring
を追加します。
30秒毎に自動保存
desktop-save-mode
が有効な場合、標準の設定では30秒毎に保存されます。 この秒数の変更するには、 desktop-auto-save-timeout
をカスタマイズしてください。
desktop-auto-save-timeout
をOFFにして自動保存を無効にすることもできます。無効にした場合、 M-x desktop-save
をその都度、手動で実行する必要があります。Emacsの起動時、固定した内容で復元する場合に使えそうです。
一時的に機能を無効にする
desktopの復元を行わずに、Emacsを起動したい場合、 Emacsのコマンドラインに --no-desktop
を指定します。 代りに初期設定ファイルの読み込まないオプション --no-init-file
を指定しても復元されません。
Mac OS XのCocoa版Emacsを使っている場合は、
$ open -a Emacs --args --no-desktop
や
$ open /Applications/Emacs.app/ --args --no-desktop
のように実行します。
複数の保存先を切り換える
保存先は切り替えられるので、複数の環境を切り替えて使うことも可能です。
M-x desktop-save
を実行して任意のディレクトリへ保存しておきます。
ディレクトリを変更するコマンド M-x desktop-change-dir
を実行して、そのディレクトリを復元できます。
覚えるべきコマンド
desktop-revert
保存された最新の状態に戻します。
desktop-save-in-desktop-dir
現在、使用されているディレクトリへ上書きします。
desktop-change-dir
保存先のディレクトリを変更して内容を復元します。
他にも desktop-remove
や desktop-clear
などもあります。詳しくは EmacsのInfo、44 Saving Emacs Sessions を参照してください。
動作確認環境
動作環境に使用したEmacsのバージョンは次の通りです。
GNU Emacs 25.0.50.2 (x86_64-apple-darwin14.5.0, NS appkit-1348.17 Version 10.10.5 (Build 14F27))