हर दिन मैं emacs शुरू करता हूं और ठीक उसी फाइलों को खोलता हूं जो मैंने एक दिन पहले खोली थी। क्या ऐसा कुछ है जिसे मैं init.el फ़ाइल में जोड़ सकता हूं, इसलिए यह उन सभी बफ़र्स को फिर से खोल देगा जिन्हें मैं अंतिम बार emacs छोड़ने पर इस्तेमाल कर रहा था?
हर दिन मैं emacs शुरू करता हूं और ठीक उसी फाइलों को खोलता हूं जो मैंने एक दिन पहले खोली थी। क्या ऐसा कुछ है जिसे मैं init.el फ़ाइल में जोड़ सकता हूं, इसलिए यह उन सभी बफ़र्स को फिर से खोल देगा जिन्हें मैं अंतिम बार emacs छोड़ने पर इस्तेमाल कर रहा था?
जवाबों:
आप Emacs Desktop लाइब्रेरी का उपयोग कर सकते हैं :
आप डेस्कटॉप को कमांड Mx डेस्कटॉप-सेव से मैन्युअली सेव कर सकते हैं। जब आप Emacs से बाहर निकलते हैं, तो डेस्कटॉप की स्वचालित बचत को सक्षम कर सकते हैं, और Emacs शुरू होने पर अंतिम सहेजे गए डेस्कटॉप की स्वचालित बहाली: भविष्य के सत्रों के लिए t- डेस्कटॉप-सेव-मोड को सेट करने के लिए अनुकूलन बफर (आसान अनुकूलन देखें) का उपयोग करें, या जोड़ें यह लाइन आपकी ~ / .emacs फ़ाइल में है:
(desktop-save-mode 1)
M-:
निष्पादन द्वारा डिबगिंग चालू (setq debug-on-error t)
करें, फिर कॉल करें desktop-revert
और यह डिबगर में आपत्तिजनक त्रुटि को पकड़ सकता है। मेरे लिए यह वैश्विक सेटिंग थी जिसे बफर लोकल होना चाहिए था क्योंकि फ्रेम रिस्टोरेशन विफल हो गया था। (बस emacs --debug-init
इस मुद्दे को भी पकड़ सकता है, लेकिन मैंने पूर्व पद्धति का उपयोग किया है।)
हालांकि मुझे संदेह है कि सवाल emacs "डेस्कटॉप" कार्यक्षमता (उत्तर के ऊपर देखें) के लिए देख रहा था, एलयूपी का दृष्टिकोण उपयोगी हो सकता है यदि फ़ाइलों का उपयोग करता है जो वास्तव में एक ही फ़ाइल सेट है। वास्तव में, कोई एक कदम आगे जा सकता है और 'प्रोफाइल' को परिभाषित कर सकता है यदि किसी के पास नियमित रूप से उपयोग की जाने वाली फाइलों के अलग-अलग सेट हों ... क्विक उदाहरण:
(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.
यदि आप पाते हैं कि आप नियमित रूप से उपयोग की जाने वाली फ़ाइलों के विभिन्न सेटों के बीच नियमित रूप से आगे और पीछे स्विच करते हैं, तो परिप्रेक्ष्य का उपयोग करने और नियमित रूप से उपयोग की जाने वाली फ़ाइलों के वांछित सेट के साथ प्रत्येक दृष्टिकोण को पॉप्युलेट करने पर विचार करें।
बफ़र्स / टैब (विशेष रूप से एल्कॉन टैब) को संग्रहीत / पुनर्स्थापित करने के लिए: मैं एल्कस्क्रीन का उपयोग करता हूं और जिस तरह से मैं डेस्कटॉप सत्र को संचय / बहाल करता हूं और एल्कॉन टैब का कॉन्फ़िगरेशन मेरे .emacs फ़ाइल में निम्न कोड है (उपयोग किए गए नाम स्व-व्याख्यात्मक हैं) और अगर स्टोरिंग / रिस्टोरिंग फंक्शंस को हर बार नहीं किया जाना चाहिए, तो एमएसीएस केवल "" (# # पर क्लिक करें- 'elscreen-store किल-एमएसीएस-हुक) "और" (एल -स्क्रीन-रिस्टोर) "के साथ लाइनों को शुरू करता है।
(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-directory
साथ user-emacs-directory
Emacs पहले से ही प्रदान करता है।
उपयोगी संवर्द्धन हैं जो आप मूल डेस्कटॉप सुविधा के लिए कर सकते हैं। विशेष रूप से उपयोगी (IMO) सत्र के दौरान डेस्कटॉप को ऑटो-सेव करने के तरीके हैं, अन्यथा यदि आपका सिस्टम क्रैश हो जाता है, तो आप उस डेस्कटॉप फ़ाइल के साथ फंस जाएंगे जो आपने उस सत्र के साथ शुरू की थी - बहुत कष्टप्रद अगर आप Emacs को कई के लिए चालू रखते हैं एक समय में दिन।
http://www.emacswiki.org/emacs/DeskTop
विकी के पास सत्रों के बीच सामान्य रूप से डेटा को बनाए रखने के बारे में उपयोगी जानकारी है:
http://www.emacswiki.org/emacs/SessionManagement
विशेष रूप से डेस्कटॉप के लिए, मुझे लगा कि डेस्कटॉप रिकवर विशेष रूप से आशाजनक लग रहा है, हालांकि मैंने अभी तक इसे आज़माया नहीं है।
(find-file-noselect "/my/file")
इसे चुपचाप खोल देंगे, अर्थात w / o बफर को बढ़ा देगा। बस केह रहा हू।
संपादित करें यह आदेश इंटरैक्टिव नहीं है ; इसका परीक्षण करने के लिए आपको अभिव्यक्ति का मूल्यांकन करना होगा, उदाहरण के लिए अंतिम कोष्ठक के बाद कर्सर की स्थिति और Cx Ce से टकराने से
डाउनवोटिंग यह शांत नहीं है ; यह आदेश निश्चित रूप से काम करता है और प्रश्न के दायरे में है।