2012-12-13 10 views
42

मैं आधार Emacs कॉन्फ़िगरेशन के रूप में prelude का उपयोग कर रहा हूँ। मैंने पैकेज प्रबंधक से बहुत सारे पैकेज स्थापित किए हैं, और मैं अपनी सेटिंग्स को किसी अन्य मशीन पर उपयोग करना चाहता हूं।Emacs 24 में सभी स्थापित संकुलों की सूची कैसे सहेजें?

मैं स्थापित पैकेज नहीं लेना चाहता हूं और मैं मैन्युअल रूप से एक सूची बनाना नहीं चाहता हूं।

सभी स्थापित संकुलों को prelude-package.el या किसी अन्य फ़ाइल में सहेजने का तरीका क्या है ताकि जब मैं इस कॉन्फ़िगरेशन को अपनी दूसरी मशीन पर ले जाऊं, तो वे पहले उपयोग पर स्वचालित रूप से इंस्टॉल हो जाते हैं?

उत्तर

59

आप परिवर्तनीय package-activated-list से वर्तमान में स्थापित संकुल (संकुल में निर्मित को छोड़कर) की एक सूची प्राप्त कर सकते हैं। उन्हें स्वचालित रूप से स्टार्टअप पर स्थापित करने के लिए इस सवाल का देखें: अधिक विशेष रूप से how to automatically install emacs packages by specifying a list of package names?

, चौधरी वी पैकेज सक्रिय-सूची, मूल्य से पता चला प्रतिलिपि यदि आप करते हैं, और prelude-packages के मूल्य के रूप में डालें, Emacs अपने आप सुनिश्चित करेगा उन पैकेजों को स्टार्ट अप पर स्थापित किया गया है।

+0

ओह यह शानदार है। – uchuugaka

+0

यह ध्यान देने योग्य है, पैकेज-सक्रिय सूची संकुल को हटाकर अपडेट नहीं की जाती है, लेकिन केवल पुनरारंभ करने पर ही दिखाई देती है। – uchuugaka

11

कैननिकल पद्धति सर्वोत्तम है (एटाइलर द्वारा वर्णित)। यहां एक और बेकार विधि है।

एम-एक्स सूची-पैकेजसी-एस स्थापित जब तक आप स्थापित पैकेज की पहली पंक्ति नहीं पाते। सी-एसपीसी के साथ चयन करना प्रारंभ करें। जब तक आप अंतर्निहित पैकेज तक नहीं पहुंच जाते तब तक नीचे जाएं। एम-डब्ल्यू के साथ कॉपी करें। नए बफर के लिए सी-एक्स बीसी-वाई के साथ पेस्ट करें। फ़ाइल को सहेजने के लिए सी-एक्स सी-एस

केवल लाभ जो मैं देखता हूं वह यह है कि यह एक और अधिक वर्णनात्मक है। अपने पैकेज का एक छोटा सा विवरण दिखा रहा है। जब आप कुछ संकुल स्थापित करते हैं और इसके बारे में भूल जाते हैं तो उपयोगी होता है।

+0

हां - मुझे यह पसंद है कि यह 'पैकेज-सक्रिय-सूची' की तुलना में थोड़ा अधिक विवरण जोड़ता है –

1

जैसा कि how to automatically install emacs packages by specifying a list of package names? पर बताया गया है, तो आपको आवश्यक पैकेज के संस्करण को भी रिकॉर्ड करना बेहतर होगा।

(defun list-packages-and-versions() 
    "Returns a list of all installed packages and their versions" 
    (mapcar 
    (lambda (pkg) 
    `(,pkg ,(package-desc-version 
       (cadr (assq pkg package-alist))))) 
    package-activated-list)) 

है कि आप (NAME VERSION) जोड़ों की सूची दे देंगे: ऐसा करने के लिए, आप निम्न फ़ंक्शन का उपयोग कर सकते हैं। दुर्भाग्यवश, मैं पैकेज के विशिष्ट संस्करण को स्थापित करने का कोई तरीका नहीं ढूंढ पाया। ऐसा लगता है कि package.el हमेशा नवीनतम उपलब्ध है। क्या मैं अब कर रहा हूँ है:

(defun install-packages-with-specific-versions (package-version-list) 
    "Install the packages in the given list with specific versions. 
PACKAGE-VERSION-LIST should be a list of (NAME VERSION) lists, 
where NAME is a symbol identifying the package and VERSION is 
the minimum version to install." 
    (package-download-transaction 
    (package-compute-transaction() package-version-list))) 

मैं सही संस्करण संख्या मिलान संकुल स्थापित करने के लिए लंबे समय तक समारोह में लिखा है, लेकिन यह विफल रहता है क्योंकि package.el डिफ़ॉल्ट रूप से केवल नवीनतम संस्करण प्रत्येक पैकेज के लिए उपलब्ध प्राप्त करता है। gist

संबंधित मुद्दे