2011-04-15 15 views
10

जैसा कि मैं अपने emacs 'init.el में अधिक से अधिक प्लगइन और कॉन्फ़िगरेशन जोड़ता हूं, यह स्टार्टअप अधिक से अधिक धीमी हो रही है। क्या इससे बचने का कोई तरीका है?मेरे अनुकूलित emacs को तेज़ी से कैसे लोड करें?

+2

संभावित डुप्लिकेट [मैं Emacs को तेजी से कैसे शुरू कर सकता हूं?] (Http://stackoverflow.com/questions/778716/how- Can-i-make-emacs-start-up-fast) –

उत्तर

19

आपका .emacs या init.el कई require या load आदेशों नहीं होना चाहिए कर सकते हैं, यह ज्यादातर autoload होना चाहिए। autoload फ़ंक्शन Emacs को बताता है "अगर आपको कभी भी इस फ़ंक्शन की आवश्यकता है, तो उस फ़ाइल को लोड करें"। इस तरह, फ़ाइल केवल तभी लोड की जाती है जब आप वास्तव में फ़ंक्शन का उपयोग करते हैं। आप केवल require (या बहुत कम ही load) दो मामलों में की जरूरत है:

  • वहाँ एक अनुकूलन के प्रभाव में तुरंत जाने के लिए (जैसे (require 'cl), एक रंग विषय) की जरूरत है कि अगर;
  • क्या आप लोड कर रहे हैं तो आप इस पहले से ही नहीं कर रहे हैं, जैसी चीजों के लिए autoload बुला है कि एक पैकेज के autoloads और अन्य स्टार्ट-अप निर्धारणों वाली एक छोटी फ़ाइल (जैसे (require 'tex-site)

है अगर मोड-विशिष्ट अनुकूलन आपके स्टार्टअप समय को काफी कम कर सकते हैं, क्योंकि Emacs को कम फ़ाइलों को लोड करना होगा।

इसके अलावा, सुनिश्चित करें कि आपकी फ़ाइलें बाइट-संकलित हैं; वे थोड़ा तेज (कम CPU समय) लोड करेंगे। प्रत्येक .el फ़ाइल पर M-x emacs-lisp-byte-compile, या M-x byte-recompile-directory (ये आदेश Emacs-L में हैं आईएसपी मेनू)।

अंत में, कि लोड समय बात इतना नहीं है ध्यान दें क्योंकि आप starting Emacs at most once per session होना चाहिए। जब आप लॉग इन करते हैं, तो विंडो या पृष्ठभूमि में --daemon विकल्प के साथ स्वचालित रूप से Emacs प्रारंभ करें। फिर, फ़ाइल को संपादित करने के लिए, emacsclient चलाएं। यदि आप लॉग इन करते हैं तो आप इसे tell emacsclient to start Emacs if it's not running yet पर भी शुरू नहीं कर सकते हैं।

+1

लोगों को डिमन मोड और संपादक रंगों में समस्याएं होने के लिए, यह बहुत उपयोगी है: http://www.emacswiki.org/emacs/SettingFrameColorsForEmacsClient – dermatthias

+0

यदि आप प्रत्येक निर्देशिका और/या फ़ाइल की पुष्टि करना पसंद नहीं करते हैं: '(बाइट -recompile-directory "~/where-i-put-my-packages /" nil nil) 'या पुनर्मूल्यांकन को मजबूर करने के लिए कुछ नॉन-शून्य को अंतिम शून्य मान बदलें। '(वर्णन-कार्य 'बाइट-रीकंपाइल-निर्देशिका)' चट्टानें :) – clintm

2

आप compile it एक .elc फ़ाइल (एम एक्स बाइट-संकलन फ़ाइल) के रूप में

+0

[48.4 Emacs प्रारंभिक फ़ाइल] से [http://www.gnu.org/software/emacs/manual/html_node/emacs/Init-File.html# इनिट-फाइल): * "आपकी init फ़ाइल को बाइट-कंपाइल करने की अनुशंसा नहीं की जाती है ... यदि आपकी init फ़ाइल कई फ़ंक्शंस को परिभाषित करती है, तो उन्हें अपनी इनिट फ़ाइल में लोड की गई एक अलग (बाइट-संकलित) फ़ाइल पर ले जाने पर विचार करें।" * – DavidRR

+0

... ने कहा, आपके Emacs प्रारंभिक फ़ाइल के बाइट-संकलित संस्करण को स्वचालित रूप से बनाए रखने के लिए तंत्र सुझाए गए हैं। उदाहरण के लिए, [यहां] देखें (http://stackoverflow.com/a/779145/1497596) और [यहां] (http://stackoverflow.com/a/780735/1497596)। – DavidRR

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