অলস উদ্যোগটি একটি ভাল উদ্যোগ।
(আইএমও)
কখন ব্যবহার করতে হবে with-eval-after-load
with-eval-after-loadলোড হয় একবার যখন একটি নির্দিষ্ট বৈশিষ্ট্য বা ফাইল হয় প্রথম , লোড তাই একটি কীম্যাপ-পরিবর্তন পরিষ্কারভাবে ভিতরে এই এক যায়। না অন্তত কারণ কীম্যাপ Init-টাইম [মত ব্যবহার করে দেখুন কিছু পরিচিত নাও হতে পারে (define-key message-mode-map (kbd "C-c f") 'Footnote-add-footnote)মধ্যে emacs -q]। একটি হুক একটি নয় চমৎকার সমাধান এখানে যেহেতু এটি একটি কী ফাংশন binds যে সময় হুক শুরু হয়। হিসাবে tarsius নোট, আপনি যা করতে পারেন আরও পড়তে কেন সম্পর্কে না করতে local-set-keyআঙ্গুলসমূহ হবে।
পরিশেষে, নোট করুন যে with-eval-after-loadGNU Emacs 24.4 এর চারপাশে একটি 2 লাইনের মোড়ক রয়েছে eval-after-loadযেখানে bodyউদ্ধৃতি দেওয়ার দরকার নেই।
হুকস কখন ব্যবহার করবেন
হুকগুলি প্রতিটি মানদণ্ড পূরণের সাথে সাথে লোড হওয়া ফাংশনগুলির তালিকা, যেমন একটি নির্দিষ্ট মোড শুরু হয়। আঙ্গুলসমূহ একটি সাধারণ ব্যবহারের যেমন ছোটখাট-মোড, লোড হয় flyspell-modeবা hl-line-mode। যেমন (add-hook 'org-agenda-mode-hook 'hl-line-mode)। রুমি যেমন উল্লেখ করেছে, add-hooksস্মার্ট এবং হুক-ভেরিয়েবলটি এখনও লোড না হওয়া পর্যন্ত সঠিক কাজটি করবে। তবুও, আমার নীচের মতো অনেকগুলি ধারা রয়েছে, যা গতি-লাভের জন্য তুচ্ছ হতে পারে তবে এটি সংগঠন এবং নির্ভরতা-কাঠামোর অনুভূতি দেয়:
(with-eval-after-load 'org-agenda
(add-hook 'org-agenda-mode-hook 'hl-line-mode))
কেন পরে হুক যুক্ত org-agenda? সর্বদা হিসাবে, C-h v org-agenda-mode-hook C-jবিতরণ। হুক বর্ণিত org-agenda.elহিসাবে সংজ্ঞায়িত করা হয় *help*।
অতিরিক্ত বৈশিষ্ট্য লোড হচ্ছে with-eval-after-load
with-eval-after-loadঅতিরিক্ত বৈশিষ্ট্য লোড করার জন্যও গুরুত্বপূর্ণ। আপনি সম্ভবত (with-eval-after-load 'org (require 'org-inlinetask))org ইনলিনেটাস্কগুলি লোড করার মতো কিছু চান । কেন তা দেখতে হবে (find-library "org-inlinetask")। যেহেতু org-inlinetasks.elপ্রত্যক্ষভাবে (require 'org), autoloadআপনার বন্ধুত্বপূর্ণ ইমাস ম্যানেজাররা যে দুর্দান্ত যে সরবরাহের জন্য দুর্দান্ত যত্ন নিয়েছিল সেগুলি সমস্তই "উপেক্ষা করা" হবে এবং সমস্ত কিছু org.el(c)লোড হবে।
তবে যদি আপনার (ব্যক্তিগত) defunবেশ কয়েকটি জায়গার প্রয়োজন হয়? আপনি যদি সত্যিই বাছাই করেন, আপনি নিজের defunঅন্য কোনও ফাইলে গুলি রেখে কুকিগুলি load-pathযুক্ত autoloadকরতে পারেন, বা ফাংশনটির সাথে ফাংশনটি কোথায় পাবেন তা ইমাসকে বলতে পারেন autoload। তাহলে এর মতো কিছু কাজ করবে:
(autoload 'org-cdlatex-mode "org" "cdlatex mode from org.")
(with-eval-after-load "latex"
(add-hook 'TeX-mode-hook 'org-cdlatex-mode))
অথবা আপনি ঠিক require orgযেমন এটি ঘুরিয়ে নিতে পারেcdlatex
এবং, সত্যি বলতে, ব্যক্তিগত ডিফুন বেশিরভাগ সময় ডিএন টাইমের জন্য বেশি কিছু করে না। আমার 1150 লাইনের ব্যক্তিগত ডিফুনগুলি (84 ডিফুনগুলি) init.elভ্যানিলা ইমাকগুলিতে 0.02 সেকেন্ড যুক্ত করে।
শুরুর সময় পরিমাপ করা
আনুমানিক অন্তর্মুখীকরণের একটি সহজ উপায়
time emacs --eval "(kill-emacs)"
(বিরুদ্ধে বেঞ্চমার্ক emacs -q।
তবে আরম্ভের বাধা কোথায় স্কেফারের চেক আউট রয়েছে তার আরও বিশদ সান্নিধ্য পেতে esup।
অবশেষে, লোডিংয়ের সময়টি যাদুতে অদৃশ্য হয় না। আপনি কেবল এটি এগিয়ে রেখে চলেছেন (প্রতিটি সেশনে আপনি সমস্ত বৈশিষ্ট্য ব্যবহার করেন তা প্রসারিত করতে)।
with-eval-after-loadএকবারে লোড হয় , তাই একটি কী-ম্যাপ-পরিবর্তন সেখানে যায়। প্রতিবার মোড চালানোর সময় হুক্স লোড হয় , যেমন মোডের সাথে যুক্ত একটি নতুন ফাইল লোড করার সময়, বা তবে হুক সংজ্ঞায়িত করা হয়। আপনি যেমনflyspell-modeবাhl-line-modeএকটি হুক লোড হবে । আমার মধ্যেinit.elআমিwith-eval-after-loadপ্রায় 160 বার এবংadd-hook110 বার ব্যবহার করি । অলস উদ্যোগটি একটি ভাল আরম্ভ (আইএমও)।