Setiap hari saya memulai emacs dan membuka file yang sama persis dengan yang saya buka sehari sebelumnya. Apakah ada sesuatu yang dapat saya tambahkan ke file init.el sehingga akan membuka kembali semua buffer yang saya gunakan saat terakhir kali keluar dari emacs?
91
Jawaban:
Anda dapat menggunakan pustaka Emacs Desktop :
sumber
M-:
mengeksekusi(setq debug-on-error t)
, lalu panggildesktop-revert
dan mungkin menangkap kesalahan yang menyinggung di debugger. Bagi saya itu adalah pengaturan global yang seharusnya menjadi penyangga lokal yang menyebabkan pemulihan bingkai gagal. (Hanya menggunakanemacs --debug-init
mungkin menangkap masalah juga, tetapi saya menggunakan metode sebelumnya.)Meskipun saya menduga pertanyaannya adalah mencari fungsionalitas emacs "desktop" (lihat jawaban di atas), pendekatan Lewap dapat berguna jika kumpulan file yang digunakan benar-benar adalah kumpulan file yang sama persis. Faktanya, seseorang dapat melangkah lebih jauh dan menentukan 'profil' jika seseorang memiliki kumpulan file yang berbeda yang biasa digunakan ... Contoh kilat:
(let ((profile (read-from-minibuffer "Choose a profile (acad,dist,lisp,comp,rpg): ") )) (cond ((string-match "acad" profile) (dired "/home/thomp/acad") (dired "/home/thomp/acad/papers") ) ((string-match "lisp" profile) (setup-slime) (lisp-miscellany) (open-lisp-dirs) ) ((string-match "rpg" profile) (find-file "/home/thomp/comp/lisp/rp-geneval/README") (dired "/home/thomp/comp/lisp/rp-geneval/rp-geneval") ... etc.
Jika Anda menemukan bahwa Anda secara teratur beralih di antara kumpulan file yang digunakan secara teratur berbeda saat Anda bekerja, pertimbangkan untuk menggunakan perspektif dan mengisi setiap perspektif dengan kumpulan file yang digunakan secara teratur yang diinginkan.
sumber
Untuk menyimpan / memulihkan buffer / tab (khusus tab elscreen): Saya menggunakan elscreen dan cara saya mengelola penyimpanan / pemulihan sesi desktop dan konfigurasi tab elscreen adalah kode berikut di file .emacs saya (nama yang digunakan cukup jelas dan jika fungsi penyimpanan / pemulihan tidak boleh dijalankan setiap kali emacs mulai cukup beri komentar pada baris dengan "(push # 'elscreen-store kill-emacs-hook)" dan "(elscreen-restore)"):
(defvar emacs-configuration-directory "~/.emacs.d/" "The directory where the emacs configuration files are stored.") (defvar elscreen-tab-configuration-store-filename (concat emacs-configuration-directory ".elscreen") "The file where the elscreen tab configuration is stored.") (defun elscreen-store () "Store the elscreen tab configuration." (interactive) (if (desktop-save emacs-configuration-directory) (with-temp-file elscreen-tab-configuration-store-filename (insert (prin1-to-string (elscreen-get-screen-to-name-alist)))))) (push #'elscreen-store kill-emacs-hook) (defun elscreen-restore () "Restore the elscreen tab configuration." (interactive) (if (desktop-read) (let ((screens (reverse (read (with-temp-buffer (insert-file-contents elscreen-tab-configuration-store-filename) (buffer-string)))))) (while screens (setq screen (car (car screens))) (setq buffers (split-string (cdr (car screens)) ":")) (if (eq screen 0) (switch-to-buffer (car buffers)) (elscreen-find-and-goto-by-buffer (car buffers) t t)) (while (cdr buffers) (switch-to-buffer-other-window (car (cdr buffers))) (setq buffers (cdr buffers))) (setq screens (cdr screens)))))) (elscreen-restore)
sumber
emacs-configuration-directory
denganuser-emacs-directory
yang sudah disediakan Emacs.Ada peningkatan berguna yang dapat Anda lakukan pada fitur desktop dasar. Khusus berguna (IMO) adalah metode penyimpanan otomatis desktop selama sesi, karena jika sistem Anda macet, Anda akan terjebak dengan file desktop yang Anda gunakan untuk memulai sesi itu - cukup menjengkelkan jika Anda cenderung membiarkan Emacs tetap berjalan untuk banyak orang. hari pada suatu waktu.
http://www.emacswiki.org/emacs/DeskTop
Wiki juga memiliki informasi berguna tentang mempertahankan data antar sesi secara umum:
http://www.emacswiki.org/emacs/SessionManagement
Khusus untuk desktop, saya pikir Desktop Recover tampak sangat menjanjikan, namun saya belum mencobanya.
sumber
(find-file-noselect "/my/file")
akan membukanya tanpa suara, yaitu tanpa menaikkan buffer. Hanya mengatakan.EDIT Perintah ini tidak interaktif ; Untuk mengujinya Anda harus mengevaluasi ekspresi, misalnya dengan memposisikan kursor setelah tanda kurung terakhir dan menekan Cx Ce
Merendahkan ini tidak keren ; perintah ini pasti berfungsi dan berada dalam cakupan pertanyaan.
sumber