स्थानीय पैकेजों के लिए ऑटोलॉड्स कैसे बनाएं और सक्रिय करें?


9

यह स्पष्ट है कि सभी स्थानीय / कस्टम / व्यक्तिगत पैकेजों को आधिकारिक तौर पर जारी नहीं किया जाना चाहिए, और यह केवल बिल्ट-इन पैकेज प्रबंधन समर्थन से लाभ के लिए ऐसा करना मूर्खतापूर्ण होगा। मैं सोच रहा हूं कि स्थानीय पैकेजों के लिए ऑटोलॉड्स कैसे उत्पन्न करें और सक्रिय करें? यह कैसे package.elELPA से स्थापित संकुल के लिए समान है । पहिया को रोकने से बचने के लिए, क्या इसके लिए "ढोंग" करने का एक तरीका है कि कुछ स्थानीय निर्देशिका (उपनिर्देशिकाओं के साथ जिनमें से प्रत्येक स्थानीय / कस्टम / व्यक्तिगत पैकेज है) ईएलपीए है? मैं भी खुला हूँ el-getअगर इस तरह के परिदृश्य के माध्यम से समर्थन किया जा सकता है, उदाहरण के लिए, कस्टम व्यंजनों।

मुझे यकीन है कि यह कार्य बहुत सामान्य है और जो कोई भी उन्नत स्तर पर Emacs का उपयोग करता है, वह उस बिंदु पर जल्द या बाद में आता है। क्या कोई इस क्षेत्र में अपने अनुभव साझा कर सकता है?


3
update-directory-autoloadsकिसी भी पैकेज प्रबंधक के स्वतंत्र रूप से उपयोग किया जा सकता है।
npostavs

@npostavs, मुझे पता है लेकिन यह पुनरावर्ती नहीं है और यह इस मामले में एक व्यापक समाधान नहीं है। निश्चित रूप से यह पर्याप्त नहीं होगा और मुझे इसे अपने कार्यान्वयन में लपेटना होगा।
अलेक्जेंडर शुकेव

1. आप इसे करने update-directory-autoloadsके लिए, असर में बनाने के लिए dirs (जैसे, एक dir और उसके वंशज) की एक सूची प्रदान कर सकते हैं । 2. आप उस update-file-autoloadsप्रत्येक फ़ाइल के लिए उपयोग कर सकते हैं , जिसमें आपकी रुचि है, चाहे वह किस निर्देशिका में हो।
आकर्षित

FYI करें: package.elगैर-पुनरावर्ती भी है (यानी, यह उपनिर्देशिकाओं के स्रोतों के साथ पैकेज का समर्थन नहीं करता है)।
npostavs

मैंने लिनक्स पर एक स्थानीय MELPA स्थापित किया है। मेरे पास खिड़कियों के लिए कोई अच्छा उपाय नहीं है। मैं वास्तव में चाहते हैं कि emacs इस प्रकार की चीज़ों का समर्थन करें। यह देखने के लिए उपयोग-पैकेज की जाँच के लायक हो सकता है कि क्या यह हो सकता है।
eflanigan00

जवाबों:


7

सही समाधान (IMO) एक पैकेज प्रबंधक का उपयोग करना है जिसका इस उपयोग के मामले में स्पष्ट समर्थन है। यह होगा straight.el, जो मैंने इस उद्देश्य के लिए लिखा था।

आप README में अन्य पैकेज मैनेजरों की तुलना सहित वर्बोज़ डॉक्यूमेंटेशन पढ़ सकते हैं , इसलिए मैं straight.elआपकी विशिष्ट समस्या को हल करने के लिए कैसे उपयोग कर सकता हूं, इस पर टिकूंगा

  1. अपने भंडार में रखें ~/.emacs.d/straight/repos/<my-repo>
  2. इसका उपयोग करके लोड करें

    (straight-use-package '(<my-package> :local-repo "<my-repo>"))
    
  3. हो गया। जब भी आप स्रोत कोड में बदलाव करते हैं, ऑटोलैड पीढ़ी और बाइट-संकलन को फिर से बनाया जाएगा (अगले Emacs स्टार्टअप पर)। आपको निर्भरता प्रबंधन, वैकल्पिक संस्करण नियंत्रण स्वचालन आदि जैसी चीजें भी मुफ्त में मिलती हैं।

  4. जब (यदि) आप पैकेज प्रकाशित करना चाहते हैं, तो बस इसे कहीं धक्का दें और उस गिट रिपॉजिटरी को इंगित करने के लिए नुस्खा को संशोधित करें।
  5. तुम भी उपयोग कर सकते हैं straight.elके साथ use-packageअगर आप (यह अधिकांश भाग के लिए बस वाक्यविन्यास चीनी) पसंद करते हैं।

3

मैं लिनक्स पर निम्नलिखित कार्य करता हूं:

मैं एक स्थानीय melpa रिपॉजिटरी की स्थापना melpa क्लोनिंग द्वारा करता हूं।

मैं उन व्यंजनों को संशोधित करता हूं, जिन्हें मैं अपने स्थानीय पैकेजों में इंगित करना चाहता हूं। निम्नलिखित हैlocal-melpa/recipies/ace-window

(ace-window
  :url "/home/my_home/.emacs.d/packages/ace-window/"
  :fetcher git)

फिर स्थानीय-mepla प्रकार से make allया make recipies/ace-windowपैकेज (ओं) का निर्माण करने के लिएlocal-melpa/packages

फिर make packages/archive-contents, जो संकुल की सूची को पॉप्युलेट करता है।

तो मेरे स्थानीय मेलपा का उपयोग करने के लिए emacs बताने के लिए निम्नलिखित का उपयोग करें

(setq package-archives '(("local-melpa" . "~/.emacs.d/packages/local-melpa/packages/")))

मुझे पता नहीं चला है makeकि खिड़कियों पर कैसे चलना है। लेकिन मैं local-melpaलिनक्स पर संकुल का निर्माण कर सकता हूँ और इसे विंडोज़ पर कॉपी कर सकता हूँ और संकुल को ठीक से समझता और स्थापित करता है।

इसका लाभ यह है कि मैं अपनी ~/.emacs.d/elpa/*निर्देशिका को हटाने और किसी भी पैकेज के लिए किसी भी कस्टम अपडेट को स्थापित करके कभी भी रीसेट कर सकता हूं ।


शायद quelpa भी ब्याज की होगी?
npostavs

मुझे लगता है कि आप सही npostavs हैं। मुझे बैठकर इसे देखना होगा।
Eflanigan00

2

यदि आपने पहले से इंस्टॉल किए गए पैकेज को एक अलग संस्करण के साथ बदल दिया है, और आप सभी गायब हैं तो ऑटोलॉड्स फ़ाइल है, आप इसे उत्पन्न करने के लिए पैकेज-जेनरेट-ऑटोलॉड्स का उपयोग कर सकते हैं:

(package-generate-autoloads "async" "~/.emacs.d/elpa/async-1.9.3/")

मुझे यह तब आसान लगा, जब मैं किसी पैकेज को पहले वाले संस्करण में डाउनग्रेड करने के लिए अद्यतन-निर्देशिका-ऑटोटूल का उपयोग कर रहा था।

वास्तव में मुझे लगता है कि मैंने वास्तव में आपके प्रश्न का उत्तर नहीं दिया है। मैं इस उत्तर को समय के लिए यहाँ छोड़ दूँगा लेकिन मेरा उत्तर यहाँ अधिक प्रासंगिक है: /programming/26348561/how-to-generate-autoloads-for-elpa-packages/50100170

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.