Bagaimana cara mengembalikan jendela dan buffer Emacs dari sesi terakhir?

4

Bagaimana cara mengembalikan jendela dan buffer Emacs dari sesi terakhir?

Perilaku yang saya inginkan seperti di browser web yang Anda dapat mengembalikan semua tab dari sesi terakhir.

qazwsx
sumber
1
Lihat jawaban untuk pertanyaan ini .
Tom

Jawaban:

1

Selain memulihkan keadaan sesi Emacs terakhir Anda secara otomatis , Anda juga dapat menyimpan sejumlah status sesi dan mengembalikannya sesuai permintaan di sesi lain apa pun, berapa kali. TKI, Anda dapat dengan mudah beralih di antara berbagai desktop .

Cara termudah untuk melakukannya adalah dengan memuat pustaka Bookmark + dan gunakan tombol C-x r Kuntuk menyimpan status sesi saat ini sebagai bookmark desktop. Anda kemudian dapat mengembalikan bookmark desktop apa pun di sesi apa pun menggunakan tombol C-x j K.

Drew
sumber
2

buka file .emacs Anda dan ketik (desktop-save-mode 1) ini akan menyimpan semua buffer saat ini ke file "desktop", itu tidak akan menyimpan tata letak sebenarnya dari frame Anda tetapi Anda dapat melihat ke "register" untuk itu.

Shantanu
sumber
1

Inilah beberapa kode untuk melakukannya. Agar kode bisa berfungsi, Anda perlu pustaka Lisp "tapestry" diinstal. Jika Anda menggunakan mailer VM, perpustakaan Anda sudah diinstal. Kalau tidak, Anda dapat mengunduhnya dari sini .

Masukkan kode berikut dalam file .emacs Anda. Saat Anda ingin mengembalikan pengaturan jendela dan bingkai dari sesi Emacs terakhir Anda, ketikkan 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)
Kyle Jones
sumber
Ketika saya melakukannya M-x load-my-tapestry RET, saya hanya mendapatkan (New file) set-tapestry: End of file during parsingbuffer mini dan tidak ada yang dimuat di jendela Emacs.
qazwsx
Jalankan M-x save-my-tapestrysekali dan prosesnya harus bootstrap.
Kyle Jones
Melakukan; kemudian memberikan let: Wrong type argument: listp, configkesalahan dalam mini-buffer sekarang.
qazwsx
Hmmm, tidak ada configvariabel dalam kode jawaban saya atau di tapestry.el. (setq debug-on-error t) dan dapatkan stacktrace. Itu harus menunjukkan di mana kesalahan terjadi.
Kyle Jones
Sebenarnya ketika saya jalankan kembali, saya mendapatkan set-tapestry: End of file during parsingkesalahan lagi. Saya membuka sesi Emacs, membuka dua frame, dan memuat dua file berbeda di masing-masingnya, lalu M-x save-my-tapestry, lalu tutup. Buka kembali Emacs, lalu lakukan M-x load-my-tapestry RET, itu memberi set-tapestry: End of file during parsing.
qazwsx