after-init-हुक बनाम eval-after-load / with-eval-after-load


13

मैं नहीं बल्कि उपयोगी पाया है कि कैसे पैकेज Emacs 24 में काम करते हैं , हालांकि, मैं एक अनुभवी उपयोगकर्ता या एक कोर डेवलपर से एक निश्चित उत्तर चाहता हूं कि इनमें से कौन सा वास्तव में 24.4 पर विशिष्ट मामले में पसंद किया जाता है।

Afaik, (add-hook 'after-init-hook ...)संकुल के लिए अनुकूलन स्थापित करने के लिए तथाकथित जानवर-बल दृष्टिकोण है। हालाँकि, eval-after-loadऔर इसके अधिक सघनता से with-eval-after-loadअधिक गतिशील और बारीक दानेदार विन्यास के लिए अधिक उपयुक्त लगता है जो विस्तार के क्रमिक, अलग और आलसी लोडिंग के साथ अच्छी तरह से खेलता है।

क्या मेरी समझ सही है? मुझे और क्या ध्यान रखना चाहिए?

जवाबों:


11

Afaik, (add-hook 'after-init-hook ...)संकुल के लिए अनुकूलन स्थापित करने के लिए तथाकथित जानवर-बल दृष्टिकोण है।

यदि आप अपनी init फ़ाइल में संकुल को कॉन्फ़िगर करना चाहते हैं, तो विशिष्ट दृष्टिकोण (package-initialize)फ़ाइल के शीर्ष पर कॉल करना है, और फिर कॉन्फ़िगरेशन करना है। after-init-hookइस उद्देश्य के लिए अनावश्यक रूप से जटिल है।

हालाँकि, eval-after-loadऔर इसके अधिक सघनता से with-eval-after-loadअधिक गतिशील और बारीक दानेदार विन्यास के लिए अधिक उपयुक्त लगता है जो विस्तार के क्रमिक, अलग और आलसी लोडिंग के साथ अच्छी तरह से खेलता है।

(with-)eval-after-loadउन चीजों के लिए उपयोग किया जाता है जिन्हें आप पैकेज लोड होने के बाद करना चाहते हैं । package-initializeपैकेज लोड नहीं करता है, यह केवल उन्हें "तैयार करता है" (उनके ऑटोलॉड्स लोड करता है)।

यदि आप eval-after-loadकॉन्फ़िगरेशन के हर सेट का उपयोग करते हैं , तो आपको (package-initialize)शीर्ष पर कॉल करने की आवश्यकता नहीं होगी । लेकिन आमतौर पर लोग जो करते हैं, उसे कॉल करना होता है (package-initialize), ताकि अधिकांश कॉन्फ़िगरेशन सीधे init फ़ाइल में लिखे जा सकें, और उसके बाद केवल eval-after-loadकोड जो बहुत लंबा है या जो लोड किए जा रहे पैकेज पर निर्भर करता है।


लेकिन यह अभी भी eval-after-loadकिसी भी पैकेज के लिए सब कुछ डाल करने के लिए ठीक होगा , सही, और बिल्कुल भी उपयोग नहीं (package-initialize)?
एरिक कप्लून

@ErikAllik हाँ। यदि आप कॉन्फ़िगरेशन के प्रत्येक सेट के आसपास eval-after-load का उपयोग करते हैं, तो आपको शीर्ष पर कॉल (पैकेज-इनिशियलाइज़) करने की आवश्यकता नहीं होगी।
मालाबार
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.