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.


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.


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.


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)

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.