टी एल; डॉ:
अपनी इनइट फ़ाइल के शीर्ष पर निम्न पंक्ति जोड़ें ( .emacs.d/init.el
या .emacs
):
(package-initialize)
स्पष्टीकरण
Emacs के रूप में उपयोग हो सकता है जो फ़ाइलों का अधिक बनाना user-init-file
निश्चित रूप से सही दृष्टिकोण नहीं है। क्योंकि मैनुअल यह नहीं कहता है कि यदि कोई विवाद है, तो कम से कम आपके द्वारा उद्धृत किए गए भाग में नहीं है, यह सब भ्रम को जोड़ने के लिए है - अब हम नहीं जानते कि वास्तव में कौन सा है user-init-file
(जिसका मूल्य आप चाहते हैं। पता लगाने के लिए निरीक्षण करना)।
इसलिए सभी उम्मीदवारों को हटाकर शुरू करें, ~/.emacs.d/init.el
जिन्हें आम तौर पर पसंद किया जाता है (उपयोगकर्ताओं द्वारा) क्योंकि यह अपवित्र गंदगी में योगदान नहीं करता है $HOME
और यह सभी Emacs कॉन्फ़िगरेशन फ़ाइलों को रखने की अनुमति देता है, जिसमें सबसे महत्वपूर्ण एक सहित, संस्करण नियंत्रण के लिए केवल एक रिपॉजिटरी का उपयोग करना शामिल है Emacs।
उपयोगकर्ता की init फ़ाइल लोड package-initialize
होने के बाद डिफ़ॉल्ट रूप से Emacs कॉल । यह ऐसा नहीं करता है सब पर है क्योंकि आजकल, सबसे उपयोगकर्ताओं का उपयोग कर अपने पैकेज इंस्टॉल package.el
तो वे कुछ भी करने को लिए इन पैकेजों उपलब्ध कराया जाना नहीं होना चाहिए -।
दूसरी तरफ हर कोई ऐसा नहीं करता है, इसलिए कॉल न करना संभव होना चाहिए package-initialize
। उस फ़ंक्शन को कॉल करने से रोकना (setq package-enable-at-startup nil)
उपयोगकर्ता के इनिट फ़ाइल (जहां आप इसे डाल सकते हैं?) को जोड़कर किया जाता है ।
package-initialize
इससे पहले कि उपयोगकर्ता Emacs यह नहीं करने के लिए कहने के लिए एक परिवर्तन था, और इसलिए यह init फ़ाइल को लोड करने के बाद किया जाना है, तो उपयोगकर्ता को कॉल नहीं किया जा सकता है । जब तक उपयोगकर्ता केवल पैकेजों को स्थापित करता है और तब उनका उपयोग करता है-या कस्टम इंटरफ़ेस का उपयोग करके उन्हें कस्टमाइज़ करता है जो बस ठीक काम करता है। लेकिन अगर आप अपने पैकेजों को कस्टमाइज़ करना चाहते हैं, तो आपको यह सुनिश्चित करना होगा कि वे वास्तव में उन load-path
कार्यों का उपयोग करने से पहले हैं जो वे परिभाषित करते हैं।
यह करना बहुत आसान है और ठीक से प्रलेखित है (यदि मैंने पहले देखा था, तो मुझे ऊपर लिखे गए अधिकांश को नहीं लिखना होगा: - / /
Init फ़ाइल लोड करने के बाद स्वचालित पैकेज लोड होने का कारण यह है कि उपयोगकर्ता विकल्प केवल init फ़ाइल को लोड करने के बाद अपने अनुकूलित मान प्राप्त करते हैं, जिसमें उपयोगकर्ता विकल्प भी शामिल हैं जो पैकेजिंग सिस्टम को प्रभावित करते हैं। कुछ परिस्थितियों में, आप अपनी init फ़ाइल में स्पष्ट रूप से पैकेज लोड करना चाह सकते हैं (आमतौर पर क्योंकि आपकी init फ़ाइल में कुछ अन्य कोड पैकेज पर निर्भर करता है)। उस स्थिति में, आपकी init फ़ाइल को फ़ंक्शन को कॉल करना चाहिए package-initialize
। यह सुनिश्चित करना है कि संबंधित उपयोगकर्ता विकल्प, जैसे कि package-load-list
(नीचे देखें), package-initialize
कॉल से पहले सेट किए गए हैं। आप यह भी तय करना चाहिए
package-enable-at-startup
करने के लिएnil
init फ़ाइल को संसाधित करने के बाद दोबारा पैकेज लोड करने से बचने के लिए। वैकल्पिक रूप से, आप स्टार्टअप पर पैकेज लोडिंग को पूरी तरह से रोक सकते हैं, और मैन्युअल रूप से अपने पैकेज को लोड करने के लिए कमांड 'Mx पैकेज-इनिशियलाइज़' को लागू कर सकते हैं।
इसलिए:
;;; .emacs.d/init.el -- the `user-init-file'
(package-initialize)
(setq package-enable-at-startup nil)
(require 'use-package)
(use-package some-package
:init (setq some-package-variable "foobar")
...
;;; .emacs.d/init.el ends here
बेशक समस्या (या एक अतिरिक्त समस्या) यह भी हो सकती है कि टाइपो Symbol's function definition is void: use-packge
आपकी इनिट फ़ाइल में है और ऐसा तब तक नहीं हुआ जब तक कि आपने इसे emacs.se में टाइप नहीं किया।