ব্যবহার-প্যাকেজ -: init বা: কনফিগার করুন


14

কোন নিয়ম যার দ্বারা ব্যবহারকারী নির্ধারণ করতে পারেন প্যাকেজ কনফিগারেশন প্রয়োজন কিনা তা ব্যবহারকারীকে :initবা :config?

উত্তর:


13

কোন নিয়ম যার দ্বারা ব্যবহারকারী নির্ধারণ করতে পারেন প্যাকেজ কনফিগারেশন প্রয়োজন কিনা তা ব্যবহারকারীকে :initবা :config?

সমস্ত সেটিংস এবং প্যাকেজগুলির ক্ষেত্রে প্রযোজ্য এমন কোনও সাধারণ নিয়ম নেই; আপনি শুধু পড়ার মাধ্যমে এই কীওয়ার্ড অর্থ সঙ্গে নিজেকে পরিচিত করতে প্রয়োজন README ফাইলের এর use-package

সংক্ষেপে, :initব্লকটি শুরুতে চালানো হয়, যেমন আপনি এর উপাদানগুলির ফর্মগুলি শীর্ষ স্তরের (অর্থাত্ একটি সাধারণ কলের বাইরে use-package) এ রেখেছেন user-init-file। এর অর্থ এটি সম্পর্কিত প্যাকেজটি লোড হয়েছে কিনা তা নির্বিশেষে এগুলি সর্বদা চালিত হয়।

:configব্লক, অন্য দিকে, পরে সংশ্লিষ্ট প্যাকেজ লোড হয়েছে চালানো হয়, উপায় দ্বারা eval-after-loadপ্রক্রিয়া।

যেমন, আপনার কাছ থেকে প্রযোজ্য দীর্ঘক্ষন ধরে চলা সেটিংস চলন্ত দ্বারা আপনার প্রারম্ভকালে সময় উন্নত করতে পারেন :initথেকে :config। যদি আপনাকে কোনও ভেরিয়েবল পরিবর্তন করতে হয় যা কেবলমাত্র কোনও নির্দিষ্ট প্যাকেজ লোড করার পরে সংজ্ঞায়িত করা হয়, আপনাকে একইভাবে এটি :configব্লকে রাখা দরকার। কিছু ভেরিয়েবল যেমন gnus-home-directoryসম্পর্কিত প্যাকেজটি লোড হওয়ার আগে সেট করা দরকার, তাই এগুলি স্থাপন করা উচিত :init। আমি দৃ applicable়ভাবে সমস্ত প্রযোজ্য add-hook/ remove-hookকলগুলি :initব্লকে রাখার পরামর্শ দিচ্ছি , যেমন আনবাউন্ড হওয়া সত্ত্বেও হুকগুলি সংশোধন করা যেতে পারে এবং এটি আপনার সেটআপে আরও পরিমিততা দেয়।

আপনি নতুন :customকীওয়ার্ড ব্যবহার করে বা সরাসরি কাস্টমাইজেশন ইন্টারফেসটি সরাসরি ব্যবহার করে কোনও নির্দিষ্ট সেটিংস কোথায় রাখবেন তা নির্ধারণ করা এড়াতে পারবেন ।


2

আমি নিশ্চিত না যে এখানে কোনও সাধারণ নিয়ম রয়েছে (" :initপ্রকৃত প্যাকেজ লোড করার আগে প্রাক কনফিগারেশনের :configজন্য ব্যবহার এবং অন্যান্য, ভাল, কনফিগারেশনের জন্য ব্যবহার" বাদে )।

তবে আমি :initযখন নিজের জন্য ব্যবহার করি , উদাহরণস্বরূপ, "এই" প্যাকেজটির ফাংশনগুলি ব্যবহার করতে আমি কিছু অন্যান্য মোড মানচিত্রের কী-বাইন্ডিং যুক্ত করতে চাই। এবং এখনও "এই" প্যাকেজটি অলস বোঝা হওয়া চাই।

এখানে আলস্য লোড উদাহরণ dired-ranger:

(use-package dired-ranger
  :commands (dired-ranger-copy dired-ranger-paste dired-ranger-move)
  :init
  (add-hook 'dired-mode-hook
            (lambda ()
              (define-key dired-mode-map (kbd "M-w") 'dired-ranger-copy)
              (define-key dired-mode-map (kbd "C-y") 'dired-ranger-paste)
              (define-key dired-mode-map (kbd "C-c C-y") 'dired-ranger-move))))

দ্রষ্টব্য: যদি কিছু নেই :defer, :commands, :modeএবং অন্যদের প্যাকেজ লোড অলস করে তোলে, তারপর :initএবং :configবেশী বা কম একই হতে হবে (কিন্তু :initতার আগে মূল্যায়ন করা হবে :))


4
একটি মোড হুক মানে তারা চালিত হয় কী বাইন্ডিং পরিবর্তন প্রত্যেক সময় আপনি যে মোডে একটি বাফার খুলুন। প্যাকেজটি লোড হওয়ার পরে আপনাকে কেবল একবার কী বাইন্ডিংগুলি পরিবর্তন করতে হবে। আপনি :bindএটির জন্য কীওয়ার্ডটি ব্যবহার করতে পারেন বা :configব্লকের কী বাইন্ডিংগুলিকে সংশোধন করতে পারেন ।
বেসিল

আসলে, এটি সম্পর্কে কখনও ভাবেনি। তবে :configখুব দেরী হয়েছে - অলস লোডিং আমার বাইন্ডিংগুলি প্রয়োগ করবে না। আর :bindসঙ্গে :mapআসলে বাঁধে না।
ম্যাক্সিম কিম

3
:configখুব বেশি দেরি হয় না - ঠিক যখন dired-mode-mapএটি প্রথম সংজ্ঞায়িত হয়। আপনি সম্ভবত এটির পরিবর্তে এটির পরিবর্তে ভুল use-packageসংকেত দিচ্ছেন যেখানে সংজ্ঞা দেওয়া হয়েছে। এটি আপনার কাজ করে না কেন তাও ব্যাখ্যা করতে পারে। মূলত, হয় আপনি কিছু ভুল করছেন বা আপনার একটি বাগ রয়েছে। স্থানীয় কী-বাইন্ডিংগুলিকে এবং অটোল্যাড কমান্ড / কীম্যাপগুলির গ্লোবাল কী-বাইন্ডিংগুলিকে বিভ্রান্ত করবেন না । dired-rangerdireddired-mode-map:binduse-packageeval-after-load
তুলসী

@ বাসিল, থেক্স, আপনি ঠিক বলেছেন। আমার সমস্যাটি হ'ল আমি সেট করে রেখেছি use-package-always-ensureএবং যখন আমি প্যাকেজযুক্ত প্যাকেজ ব্যবহার করার চেষ্টা করি তখন এটি এলপা থেকে আনতে ব্যর্থ হয়। তবে :ensure nilসেখানে থাকা সমস্যার সমাধান করে এবং আমি চেইন প্যাকেজ লোড dired-> dired-rangerব্যবহার করে সেট আপ করতে পারি :after
ম্যাক্সিম কিম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.