最後のセッションから Emacs のウィンドウとバッファを復元するにはどうすればよいでしょうか?

最後のセッションから Emacs のウィンドウとバッファを復元するにはどうすればよいでしょうか?

最後のセッションから Emacs のウィンドウとバッファを復元するにはどうすればよいでしょうか?

私が望む動作は、Web ブラウザーのように、最後のセッションからすべてのタブを復元できることです。

答え1

に加えて自動的に復元する最後のEmacsセッションセッション状態をいくつでも保存しておき、必要に応じて他のセッションで何度でも復元することができます。つまり、異なるデスクトップ

これを行う最も簡単な方法は、ライブラリをロードすることですブックマーク+そして、キーを使用して C-x r K、現在のセッション状態をデスクトップ ブックマークとして保存します。その後、キーを使用して、任意のセッションで任意のデスクトップ ブックマークを復元できますC-x j K

答え2

.emacs ファイルに移動して (desktop-save-mode 1) と入力します。これにより、現在のすべてのバッファが「デスクトップ」ファイルに保存されます。フレームの実際のレイアウトは保存されませんが、「レジスタ」で確認できます。

答え3

ここにそれを実行するコードがあります。コードが動作するには、「tapestry」Lispライブラリがインストールされている必要があります。VMメーラーを使用する場合は、ライブラリはすでにインストールされています。そうでない場合は、ここからダウンロードしてください

次のコードを .emacs ファイルに追加します。最後の Emacs セッションからウィンドウとフレームの設定を復元する場合は、 と入力しますM-x load-my-tapestry RET

(require 'tapestry)

(defvar my-tapestry-file "~/.tapestry")

(defun load-my-tapestry ()
  (interactive)
  (let ((b (find-file-noselect my-tapestry-file)))
    (sit-for 0)
    (set-tapestry (read b))
    (kill-buffer b)))

(defun save-my-tapestry ()
  (interactive)
  (let ((tap (tapestry)))
    (with-temp-buffer
      (let ((standard-output (current-buffer)))
        (setcar tap (make-list (length (car tap)) nil))
        (print tap)
        (write-region (point-min) (point-max) my-tapestry-file)))))

(add-hook 'kill-emacs-hook 'save-my-tapestry)

関連情報