Emacsやコンピュータがクラッシュした場合、クラッシュ時に編集していたファイルを自動保存ファイルから復元できます。そのためには、Emacsを再度起動し、コマンド M-x recover-session を入力してください。
このコマンドを実行すると、まず中断されたセッションファイルの一覧が、それぞれの日付とともにバッファに表示されます。どのセッションから復元するかを選択する必要があります。通常、目的とするのは直近のセッションです。選択したセッションにポイントを移動し、C-c C-c と入力してください。
次に recover-session
は、そのセッション中に編集していた各ファイルを確認し、それぞれのファイルについて復元するかどうかを尋ねます。あるファイルに対して y
と答えると、そのファイルと自動保存ファイルの日付が表示され、改めてそのファイルを復元するかどうかを尋ねられます。2回目の質問では、yes で確定する必要があります。そうすると、Emacs
はそのファイルを参照しますが、テキストは自動保存ファイルから取得します。
recover-session が完了すると、復元用に選択したファイルが Emacs
バッファに表示されます。その後、それらを保存してください。ファイル自体を更新するのは、この「保存」という操作のみです。
最終手段として、どのファイルにも関連付けられていない内容のバッファがあった場合や、自動保存のタイミングが遅すぎて重要な変更が記録されていなかった場合には、GDB(GNU Debugger)でetc/emacs-buffer.gdbスクリプトを使用してコアダンプからそれらを復元できます—ただし、コアダンプが保存されており、かつEmacsの実行ファイルからデバッグシンボルが削除されていないことが条件となります。
コアダンプを取得したら、別のクラッシュで上書きされないよう、core.emacs など別の名前に変更してください。
このスクリプトを使用するには、Emacs実行ファイルのファイル名とコアダンプのファイル名(例:‘gdb
/usr/bin/emacs core.emacs’)を指定してgdbを実行してください。(gdb)プロンプトで、リカバリスクリプト‘source
/usr/src/emacs/etc/emacs-buffer.gdb’をロードします。次に、コマンドybuffer-listを入力して、利用可能なバッファを確認します。各バッファについて、バッファ番号が一覧表示されます。バッファを保存するにはysave-bufferを使用します。ここでバッファ番号と、そのバッファを書き込むファイル名を指定します。ファイル名は既存のものではないものを使用してください。ファイルが既に存在する場合、スクリプトは旧内容のバックアップを作成しません。