
如何恢復 Emacs 上次會話的視窗和緩衝區?
我想要的行為就像在網頁瀏覽器中一樣,您可以恢復上次會話中的所有標籤。
答案1
另外自動地恢復你的最後一次 Emacs 會話狀態,您還可以保存任意數量的會話狀態,並在任何其他會話中按需恢復它們,任意次數。 IOW,您可以輕鬆切換不同的桌面。
最簡單的方法是載入庫書籤+並使用 鍵 C-x r K
將目前會話狀態儲存為桌面書籤。然後,您可以使用 key 還原任何會話中的任何桌面書籤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)