কীভাবে স্থানীয় প্যাকেজগুলির জন্য অটোল্যাড তৈরি এবং সক্রিয় করতে?


9

এটি স্পষ্ট যে সমস্ত স্থানীয় / কাস্টম / ব্যক্তিগত প্যাকেজগুলি আনুষ্ঠানিকভাবে প্রকাশ করা উচিত নয় এবং কেবল অন্তর্নির্মিত প্যাকেজ পরিচালনা সহায়তা থেকে উপকার পাওয়ার জন্য এটি করা বোকামি হবে। আমি ভাবছি কীভাবে স্থানীয় প্যাকেজগুলির জন্য অটোলোডগুলি উত্পন্ন এবং সক্রিয় করবেন? এটি কীভাবে package.elইএলপিএ থেকে ইনস্টল করা প্যাকেজগুলির জন্য এটির অনুরূপ । চাকাটিকে পুনরায় উদ্ভাবন এড়ানোর জন্য, কোনও স্থানীয় ডিরেক্টরি (যে স্থানীয় / কাস্টম / ব্যক্তিগত প্যাকেজ প্রত্যেকে প্রত্য-ডিরেক্টরি সহ) ডিরেক্টরিটি "এলপিএ" এর "ভান" করার কোনও উপায় আছে? এই el-getজাতীয় দৃশ্যের সাহায্যে উদাহরণস্বরূপ কাস্টম রেসিপিগুলি সমর্থন করা যায় কিনা তা আমিও উন্মুক্ত ।

আমি নিশ্চিত যে টাস্কটি বেশ সাধারণ এবং যে কেউ উন্নত স্তরে ইমাস ব্যবহার করে তাড়াতাড়ি বা পরে এসে পৌঁছে। এই ক্ষেত্রে কেউ কি তাদের অভিজ্ঞতা ভাগ করে নিতে পারে?


3
update-directory-autoloadsযে কোনও প্যাকেজ ম্যানেজারের স্বাধীনভাবে ব্যবহার করা যেতে পারে।
npostavs

@ এনপোস্টাভস, আমি জানি তবে এটি পুনরাবৃত্ত হয় না এবং এটি এক্ষেত্রে কোনও বিস্তৃত সমাধান নয়। নিশ্চিতভাবেই এটি পর্যাপ্ত হবে না এবং আমাকে এটি আমার নিজস্ব বাস্তবায়নে আবদ্ধ করতে হবে।
আলেকজান্ডার শুকায়েভ

1. update-directory-autoloadsকার্যকরভাবে, এটি পুনরাবৃত্তি করতে আপনি ডায়ারের একটি তালিকা সরবরাহ করতে পারেন (যেমন, একটি দির এবং তার বংশধর) । 2. আপনি ব্যবহার করতে পারেন update-file-autoloadsআপনি আগ্রহী যে ফাইলের জন্য, যা ডিরেক্টরি নির্বিশেষে এটা হয়।
ড্রিউ

এফওয়াইআই: package.elএটিও পুনরাবৃত্ত হয় (যেমন, এটি উপ-ডিরেক্টরিগুলির উত্স সহ প্যাকেজগুলি সমর্থন করে না)।
npostavs

আমি লিনাক্সে একটি স্থানীয় মেল্পা সেট আপ করেছি। উইন্ডোজগুলির জন্য আমার কোনও ভাল সমাধান নেই। আমি সত্যিই চাই ইমাসগুলি বাক্সের বাইরে এই ধরণের জিনিসটিকে সমর্থন করবে। এটি কিনা তা দেখতে ইউজ-প্যাকেজটি মূল্যবান হতে পারে।
eflanigan00

উত্তর:


7

সঠিক সমাধান (আইএমও) হ'ল একটি প্যাকেজ পরিচালক ব্যবহার করা যা এই ব্যবহারের ক্ষেত্রে সুস্পষ্ট সমর্থন রাখে। এটি হবে straight.el, যা আমি এই উদ্দেশ্যে লিখেছি।

আপনি অন্য প্যাকেজ পরিচালকদের তুলনা সহ, ভার্জোজ ডকুমেন্টেশনগুলি README এ পড়তে পারেন , তাই আমি straight.elআপনার নির্দিষ্ট সমস্যার সমাধান করতে আপনি কীভাবে ব্যবহার করতে পারবেন তা বদ্ধ থাকি ।

  1. আপনার সংগ্রহস্থলটি ভিতরে রাখুন ~/.emacs.d/straight/repos/<my-repo>
  2. এটি ব্যবহার করে লোড করুন

    (straight-use-package '(<my-package> :local-repo "<my-repo>"))
    
  3. তুমি করেছ. আপনি যখনই উত্স কোডে পরিবর্তন করবেন, অটোলোড জেনারেশন এবং বাইট-সংকলন পুনরায় করা হবে (পরবর্তী ইমাস সূচনাতে)। আপনি নির্ভরতা ব্যবস্থাপনা, managementচ্ছিক সংস্করণ নিয়ন্ত্রণ অটোমেশন ইত্যাদির মতো জিনিসও বিনামূল্যে পান।

  4. যখন (যদি) আপনি প্যাকেজটি প্রকাশ করতে চান, কেবল এটিকে অন্য কোথাও চাপ দিন এবং সেই গিট সংগ্রহস্থলের দিকে নির্দেশ করার জন্য রেসিপিটি পরিবর্তন করুন।
  5. আপনি যদি পছন্দ straight.elকরেন use-packageতবে আপনি এটি ব্যবহার করতে পারেন (এটি বেশিরভাগ অংশের জন্য কেবল সিনট্যাক্স চিনি)।

3

লিনাক্সে আমি নিম্নলিখিতটি করি:

আমি মেলপা ক্লোন করে একটি স্থানীয় মেলপা সংগ্রহস্থল সেটআপ করি।

আমি আমার স্থানীয় প্যাকেজগুলিতে নির্দেশ করতে চাই এমন রেসিপিগুলি সংশোধন করছি। নিচে দেওয়া হলlocal-melpa/recipies/ace-window

(ace-window
  :url "/home/my_home/.emacs.d/packages/ace-window/"
  :fetcher git)

তারপরে স্থানীয়-মাপলা টাইপ থেকে make allবা make recipies/ace-windowপ্যাকেজটি তৈরি করতেlocal-melpa/packages

তারপরে make packages/archive-contents, যা প্যাকেজগুলির তালিকা পপুলেট করে।

তারপরে আমার স্থানীয় মেলপা ব্যবহার করতে ইম্যাকগুলি বলতে নিম্নলিখিতগুলিতে ব্যবহার করুন

(setq package-archives '(("local-melpa" . "~/.emacs.d/packages/local-melpa/packages/")))

makeউইন্ডোতে কীভাবে চালানো যায় তা আমি খুঁজে পাইনি । তবে আমি local-melpaলিনাক্সে প্যাকেজগুলি তৈরি করতে পারি এবং এটি উইন্ডোতে অনুলিপি করতে পারি এবং ইমাকগুলি প্যাকেজগুলি সঠিকভাবে বোঝে এবং ইনস্টল করে।

এর সুবিধা হ'ল আমি আমার ~/.emacs.d/elpa/*ডিরেক্টরিটি মুছতে এবং যে কোনও প্যাকেজে কোনও কাস্টম আপডেট ইনস্টল করে চাইলে যে কোনও সময় পুনরায় সেট করতে পারি ।


সম্ভবত কোয়েলপা কি আগ্রহী হবে?
npostavs

আমি মনে করি আপনি ঠিক npostavs। আমাকে বসে বসে এটি দেখতে হবে।
eflanigan00

2

আপনি যদি ইতিমধ্যে ইনস্টল করা প্যাকেজটিকে অন্য কোনও সংস্করণ দিয়ে প্রতিস্থাপন করে থাকেন এবং আপনি যে সমস্ত অনুপস্থিত তা হ'ল অটোলোডস ফাইল, আপনি এটি তৈরি করতে প্যাকেজ-জেনারেট-অটোলোড ব্যবহার করতে পারেন:

(package-generate-autoloads "async" "~/.emacs.d/elpa/async-1.9.3/")

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

আসলে আমি মনে করি আপনার প্রশ্নের উত্তর আমি সত্যিই দিয়েছি না। আমি আপাতত এই উত্তরটি এখানে রেখে যাব তবে আমার উত্তরটি এখানে আরও প্রাসঙ্গিক: https://stackoverflow.com

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.