প্যাকেজটি মুলতুবি করা থাকলে এগুলি পৃথক, অর্থাৎ প্রয়োজন না হওয়া পর্যন্ত লোড করা হয় না। যে ক্ষেত্রে :init
সময় আপনার Emacs ফাইল প্রথম পড়া হয় এ মৃত্যুদন্ড কার্যকর করা হবে, কিন্তু :config
সময় প্যাকেজ আসলে লোড হয় এ মৃত্যুদন্ড কার্যকর করা হবে না।
আপনার উদাহরণস্বরূপ, mode
প্যাকেজটি লোড করা সুস্পষ্টরূপে ডিফার্স করে। আপনি এইচটিএমএল ফাইলটি প্রথমবার দেখার জন্য প্যাকেজটি লোড করার জন্য কনফিগার করেছেন।
আপনি ব্যবহার করতে পারে :demand
নিশ্চিত প্যাকেজ সবসময় স্টার্টআপে লোড হয় করতে, কিন্তু সম্ভাবনা বেশি তুমি এখানে কি কাজ করতে চান আপনার হুক করা হয় :init
।
ডক্টরসিং থেকে:
:init Code to run when `use-package' form evals.
যেহেতু আপনি এটি আপনার ব্যবহারকারী-init ফাইলে রেখে দিচ্ছেন, এর অর্থ মূলত এটি শুরুতে চালানো হবে।
:config Runs if and when package loads.
সুতরাং, প্যাকেজটি আসলে লোড না হওয়া পর্যন্ত চালাবেন না ..
:defer Defer loading of package -- automatic if :commands, :bind, :bind*, :mode or :interpreter are used.
স্বয়ংক্রিয়ভাবে একটি প্যাকেজ স্থগিত করে এমন জিনিসগুলির তালিকা নোট করুন। মূলত আপনি যদি use-package
এই প্যাকেজটির যে শর্তে আপনার প্রয়োজন তার কথা বললে , ধরে নেওয়া হয় যে এই শর্তগুলি তৈরি না হওয়া পর্যন্ত আপনি এটিকে লোড করতে চান না।
:demand Prevent deferred loading in all cases.
আপনি অন্যান্য বিকল্পগুলি নির্দিষ্ট করেছেন তা বিবেচনা না করে প্যাকেজটি শুরুতে লোড হয়েছে কিনা তা নিশ্চিত করুন।
হালনাগাদ
সাম্প্রতিক মন্তব্যের ভিত্তিতে এটি পুনর্বিবেচনা ... আমি উপরে যা বলেছি তা সব সত্য, তবে আমি মনে করি না এটি সঠিকভাবে প্রশ্নের উত্তর দিয়েছে। এখানে মূল সমস্যাটি আসলে html-mode
প্যাকেজ নয়, প্যাকেজ দ্বারা সংজ্ঞায়িত একটি মোড sgml-mode
। এটি আমার প্রত্যাশার মতো কাজ করে:
(use-package sgml-mode
:mode ("\\.html\\'" . html-mode)
:config (add-hook 'html-mode-hook 'turn-off-auto-fill))
মূল উদাহরণে, :config
অভিব্যক্তিটি কখনও মূল্যায়ন হয় html-mode
না কারণ নামের প্যাকেজটি কখনই লোড হয় না। :init
প্যাকেজটি কখনই লোড হয় কিনা তা বিবেচনা না করেই ডিগ্রি কোডটি সর্বদা মূল্যায়ন করা হয় কারণ একই অভিব্যক্তিটি কাজ করে।