Her gün emacs'i başlatıyorum ve önceki gün açtığım dosyaların aynısını açıyorum. İnit.el dosyasına ekleyebileceğim bir şey var mı, böylece emacs'ten en son çıktığımda kullandığım tüm arabellekleri yeniden açacak mı?
Her gün emacs'i başlatıyorum ve önceki gün açtığım dosyaların aynısını açıyorum. İnit.el dosyasına ekleyebileceğim bir şey var mı, böylece emacs'ten en son çıktığımda kullandığım tüm arabellekleri yeniden açacak mı?
Yanıtlar:
Emacs Desktop kitaplığını kullanabilirsiniz :
Mx desktop-save komutuyla masaüstünü manuel olarak kaydedebilirsiniz. Ayrıca, Emacs'tan çıktığınızda masaüstünün otomatik olarak kaydedilmesini ve Emacs başladığında son kaydedilen masaüstünün otomatik olarak geri yüklenmesini etkinleştirebilirsiniz: masaüstü kaydetme modunu gelecekteki oturumlar için ● olarak ayarlamak için Özelleştirme tamponunu kullanın (bkz. Kolay Özelleştirme) veya ~ / .emacs dosyanızdaki bu satır:
(desktop-save-mode 1)
M-:çalıştırarak hata ayıklamayı açın (setq debug-on-error t), ardından arayın desktop-revertve hata ayıklayıcıda rahatsız edici hatayı yakalayabilir. Benim için bu, çerçeve geri yüklemesinin başarısız olmasına neden olan tampon yerel olması gereken küresel ayardı. (Sadece kullanmak emacs --debug-initda sorunu yakalayabilir, ancak eski yöntemi kullandım.)
Sorunun emacs "masaüstü" işlevini aradığından şüphelenmeme rağmen (yukarıdaki yanıta bakın), Lewap'ın yaklaşımı, birinin kullandığı dosya kümesi gerçekten aynı dosya kümesiyse yararlı olabilir. Aslında, biri düzenli olarak kullanılan farklı dosya kümelerine sahipse, bir adım daha ileri gidip 'profiller' tanımlanabilir ... Quickie örneği:
(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.
Çalışırken düzenli olarak kullanılan farklı dosya kümeleri arasında düzenli olarak geçiş yaptığınızı fark ederseniz, perspektifleri kullanmayı ve her bir perspektifi, düzenli olarak kullanılan istenen dosya kümesiyle doldurmayı düşünün .
Arabellekleri / sekmeleri (özellikle elscreen sekmelerini) depolamak / geri yüklemek için: elscreen kullanıyorum ve masaüstü oturumunu depolamayı / geri yüklemeyi yönetme yöntemim ve elscreen sekmesi yapılandırması .emacs dosyamda aşağıdaki koddur (kullanılan adlar kendi kendini açıklayıcıdır ve saklama / geri yükleme işlevleri emacs her başladığında çalıştırılmayacaksa, satırları "(push # 'elscreen-store kill-emacs-hook)" ve "(elscreen-restore)") ile yorumlayın:
(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)
emacs-configuration-directoryile user-emacs-directoryEmacs zaten sağlayan.
Temel masaüstü özelliğinde yapabileceğiniz yararlı geliştirmeler vardır. Özellikle kullanışlı (IMO), oturum sırasında masaüstünü otomatik kaydetme yöntemleridir, aksi takdirde sisteminiz çökerse, o oturumu başlattığınız masaüstü dosyasında sıkışıp kalacaksınız - Emacs'ı birçok kişi için çalışır durumda tutma eğilimindeyseniz oldukça can sıkıcı bir seferde günler.
http://www.emacswiki.org/emacs/DeskTop
Wiki ayrıca genel olarak oturumlar arasında kalıcı veriler hakkında yararlı bilgiler içerir:
http://www.emacswiki.org/emacs/SessionManagement
Özellikle masaüstü bilgisayarlar için, Desktop Recover'ın özellikle umut verici göründüğünü düşündüm , ancak henüz denemedim.
(find-file-noselect "/my/file")onu sessizce açacak, yani tamponu yükseltmeden. Sadece söylüyorum.
EDIT Bu komut etkileşimli değildir ; Test etmek için, örneğin imleci son parantezden sonra konumlandırıp Cx Ce'ye basarak ifadeyi değerlendirmelisiniz.
Olumsuz oy kullanmak hiç hoş değil ; bu komut kesinlikle çalışır ve sorunun kapsamındadır.