अगली पीढ़ी के पैकेज प्रबंधन के साथ straight.el
package.el
अपने पैकेजों को प्रबंधित करने के लिए + क्वेलपा का उपयोग करने के लिए एक लंबे और निराशाजनक संघर्ष के बाद , मैंने बुलेट को थामा और अपने पैकेज मैनेजर को लिखा । यह पूरी तरह से package.el
एक पैकेज प्रबंधन अनुभव प्रदान करके प्रतिस्थापित करने का इरादा है जो लगभग हर तरह से बेहतर है ।
आप इसकी सभी विशेषताओं के बारे में जानने के लिए बहुत व्यापक दस्तावेज पढ़ सकते हैं , लेकिन इस प्रश्न के लिए सबसे अधिक प्रासंगिक यह है कि यह सही प्रजनन क्षमताstraight.el
पर केंद्रित है । इसका मतलब यह है कि यह कोई फर्क नहीं पड़ता कि आप एमएसीएस को सामान्य रूप से शुरू कर रहे हैं, या इसे एक नई मशीन पर शुरू कर रहे हैं, और यह कि किसी भी स्थानीय परिवर्तन को संस्करण-नियंत्रित किया जाता है और इसे एक विहित स्थिति में वापस लाया जा सकता है। व्यावहारिक रूप से, यह Git रिपॉजिटरी के रूप में (1) क्लोनिंग पैकेज द्वारा प्राप्त किया जाता है, और अपने राज्य के प्रबंधन के लिए स्वचालित उपकरण प्रदान करता है; (2) पैकेज प्रबंधन राज्य के लिए सत्य के एकमात्र स्रोत के रूप में init-file का उपयोग करना , जिसमें कोई भी अन्य परिवर्तनशील डेटा संग्रहीत नहीं है; और (3) वैकल्पिक पैकेज लॉकफाइल्स का उपयोग करके प्रत्येक पैकेज के सटीक गिट संशोधन, साथ ही किसी भी रेसिपी रिपॉजिटरी और निर्दिष्ट करने के लिएstraight.el
अपने आप।
आरंभ करने के लिए, बूटस्ट्रैप स्निपेट डालें , जो इंस्टॉल और सक्रिय हो जाएगा straight.el
। फिर, यह सुनिश्चित करने के लिए कि एक पैकेज स्थापित है, बस straight-use-package
अपने इनिट-फाइल में कॉल करें :
(straight-use-package 'projectile)
हाँ, यह इतना आसान है। package-refresh-contents
किसी कचरे से या किसी भी तरह का व्यवहार नहीं । यदि आप अपनी आईआईटी-फाइल से इस फॉर्म को निकालते हैं और Emacs को पुनरारंभ करते हैं, तो प्रोजेक्टाइल अब लोड नहीं होगा (इसके विपरीत package.el
)। इसका मतलब है कि आपको किसी नई मशीन पर काम न करने के लिए अपने कॉन्फ़िगरेशन के बारे में चिंता करने की ज़रूरत नहीं है क्योंकि आप गलती से अघोषित पैकेज पर निर्भर हैं।
आप अपनी इन-फाइल (जहां एक ही बिंदु पर उनकी सूची घोषित करने की कोई आवश्यकता नहीं है) आप जहां भी और जब भी चाहें पैकेज स्थापित कर सकते हैं। बेशक आप भी बस कर सकते हैं
(dolist (package '(ace-jump-mode ... zzz-to-char)) (straight-use-package package))
यदि आप सूची पसंद करते हैं। मैं हालांकि यह सलाह देता हूं कि आप use-package
अपने पैकेज कॉन्फ़िगरेशन को प्रबंधित करने के लिए उपयोग करें। पहले आपको इसे स्थापित करना होगा:
(straight-use-package 'use-package)
फिर, चूंकि straight.el
अंतर्निहित एकीकरण के साथ use-package
, निम्नलिखित "बस काम करता है":
(use-package projectile
:straight t
:init (projectile-mode 1))
एक बार जब आप अपनी init- फाइल लिख लेते हैं, तो इसकी जरूरत के पैकेज को इंस्टॉल करने के लिए, M-x straight-freeze-versions
एक संस्करण लॉकफाइल को बचाने के लिए चलाएँ ~/.emacs.d/straight/versions/default.el
। straight.el
जब आप पहली बार एक नई मशीन पर Emacs लॉन्च करते हैं, तो आपको इस फ़ाइल को संस्करण नियंत्रण में रखना चाहिए, क्योंकि यह आपके सभी पैकेजों के सही संस्करणों की जांच करने की अनुमति देगा । (आप लॉकफ़ाइल का उपयोग करके निर्दिष्ट संस्करणों में मैन्युअल रूप से वापस आ सकते हैं M-x straight-thaw-versions
।)
मशीन-स्थानीय डॉटफ़ाइल्स के विचार का समर्थन करने के लिए जिसका मैंने अपने अन्य उत्तर में उल्लेख किया था , straight.el
एक प्रोफाइल सिस्टम प्रदान करता है । मैं अभी भी आपके dotfiles (यदि इस मामले में init.el
, आपकी स्थानीय init- फ़ाइल लागू हो, और यदि आप एक का उपयोग करना चाहते हैं, तो संस्करण लॉकफाइल) आपके सिम्फ़लिंक के लिए सिम्लिंक का उपयोग करने की सलाह देते हैं ।
यदि आप सोच रहे हैं कि straight.el
अन्य पैकेज प्रबंधकों के साथ तुलना कैसे की जाए , तो व्यापक तुलना अनुभाग देखें । लेकिन बाकी सब चीजों पर बहुत अधिक प्रलेखन है।
init.el
आस-पास घूम सकते हैं (उदाहरण के लिए git का उपयोग करके), यह दृष्टिकोण भी काम करता है (आधारितuse-package
): lunaryorn.com/posts/…