আমি কীভাবে ইমাস প্যাকেজ প্যাচ করব?


16

আমি একটি প্যাকেজ পরিবর্তন করতে ইচ্ছুক, এটি পরীক্ষা এবং আশা করি এর পরে একটি টান অনুরোধ জমা দিন। আমি কীভাবে এটি নিরাপদ এবং কার্যকর উপায়ে করব? প্রশ্নটি খুব বিস্তৃত মনে হতে পারে, আমি নিম্নলিখিত বিষয়গুলি অন্তর্ভুক্ত উত্তরটি গ্রহণ করব:

  1. আমি একটি প্যাকেজের পৃথক শাখা ইনস্টল করার আশা করব এবং এটি যখন প্রয়োজন তখন স্বয়ংক্রিয়ভাবে পুনঃসংশোধন সম্পাদন করে এটি এবং স্থিতিশীল শাখার মধ্যবর্তী স্থানে পরিবর্তন করতে সক্ষম হব, তবে package.elএটি করার জন্য কোনও সরলতর উপায় বলে মনে হয় না। ইমাসস-এসই-এর এই উত্তরটি আমাদের জানিয়ে দেয় যে "যদি কোনও প্যাকেজের একাধিক অনুলিপি ইনস্টল করা হয় তবে প্রথমে একটিটি লোড করা হবে" সুতরাং আমি অনুমান করি যে কোনওটি ম্যানুয়ালি গণ্ডগোল করতে পারে load-pathতবে এটি দৃust় মনে হয় না। ইনস্টলডদের মধ্যে প্যাকেজের নির্দিষ্ট সংস্করণ নির্বাচন করার স্ট্যান্ডার্ড উপায় কী?

  2. এমনকি যদি আমি ইমাসকে বেশ কয়েকটি শাখা প্রকাশ করতে পরিচালিত করি, তাৎপর্যপূর্ণ টুইটের জন্য আমাকে নিশ্চিত করা দরকার যে আনপ্যাচড শাখাটি "আনলোড করা" এবং এর পার্শ্ব-প্রতিক্রিয়াগুলি বিচ্ছিন্ন। এটি কি unload-featureসঠিকভাবে পরিচালনা করে বা সম্ভবত এটির আইডিসিয়েন্স্রেসিগুলি রয়েছে যেগুলি বহু-সংস্করণযুক্ত প্যাকেজগুলির প্রতিটি পরীক্ষককে জানা উচিত?

  3. আমি কীভাবে স্থানীয় সংস্করণ ইনস্টল করব এবং পরীক্ষা করব? উত্তরটি প্যাকেজটি সহজ (= এক ফাইল) বা মাল্টিফাইল কিনা তার উপর নির্ভরশীল বলে মনে হচ্ছে। ইমাস্কউইকি মাল্টিফাইল প্যাকেজ সম্পর্কে বলেছেন: " মেলপা আপনার জন্য প্যাকেজ তৈরি করে "। আমি সন্দেহ করি যে প্রতিবারই আমি মাল্টিফাইলে defunপ্যাকেজে কোনও ফর্ম পরিবর্তন করতেই আমাকে মেলপা (বা হওয়া উচিত) সাথে কথা বলতে হবে তবে প্রশ্ন এখনও রয়ে গেছে। কমপক্ষে আমাকে স্থানীয় সংস্করণ সম্পর্কে প্যাকেজ ম্যানেজারকে বলতে হবে, এবং যদি তা হয় তবে আমি কীভাবে এটি করব?

  4. প্যাকেজগুলির স্থানীয় সংস্করণগুলিতে আমার কোন নামগুলি অর্পণ করা উচিত? মনে করুন আমি এক সাথে একাধিক বৈশিষ্ট্য বা বাগগুলিতে কাজ করতে চাই যার অর্থ কয়েকটি শাখা রয়েছে। ইমাসগুলি বর্ণনামূলক পদ্ধতিতে (এর লাইনের সাথে 20170117.666-somebugorfeature) সংস্করণগুলির নাম দেওয়ার অনুমতি দেবে না । আমি অনুমান করি যে আমি নিজেই প্যাকেজটির নামকরণ করতে পারি, শাখায় প্রত্যয় প্রত্যয়, তবে আবার, ম্যানুয়ালি load-pathকিউ 1-তে মেসেজ করার মতো , এটি একটি কুরুচিপূর্ণ হ্যাক, তাই আমি এটি প্রবাহিত প্রেরণের উদ্দেশ্যে এমন কিছু দিয়ে চেষ্টা করব না যতক্ষণ না এটি ব্যাপকভাবে গ্রহণযোগ্য অনুশীলন হয় ।

প্রশ্নগুলি সম্ভবত নির্বোধ, যেহেতু আমি কখনও প্যাচ লিখিনি না গিট বা অনুরূপ ভিসি সহ একটিও প্রয়োগ করি নি। তবে, প্রচুর ইমাক্স ব্যবহারকারীদের জন্য, ইমাস প্যাকেজটি প্যাচিং করা তাদের প্রথম (বা সম্ভবত একমাত্র) সামাজিক প্রোগ্রামিংয়ের প্রচেষ্টা হতে পারে, এ কারণেই, আমি বিশ্বাস করি, এই প্রশ্নের উত্তরগুলি এখনও মূল্যবান হতে পারে।

উত্তর:


7

প্যাকেজগুলির বিভিন্ন সংস্করণ লোড করার জন্য কিছুটা ভিন্ন কাজের প্রবাহের সাথে জড়িত হওয়ার জন্য, আমি যা করছি তার কয়েকটি পরিবর্তন রয়েছে, উভয়ই load-pathআমি কোন সংস্করণটি ব্যবহার করছি এটি নিয়ন্ত্রণ করতে ব্যবহার করে (প্যাকেজের নাম পরিবর্তন করা একটি খারাপ ধারণা যদি নির্ভরতা থাকে)। আমি "সুন্দর প্যাকেজ" ইনস্টল বর্তমান সংস্করণ আছে ~/.emacs.d/elpaব্যবহার M-x package-install, এবং প্যাকেজ রেপো ক্লোন ~/src/nice-packageসঙ্গে git clone ...

ব্যবহার-প্যাকেজ সহ

ইন init.el এ, আমার আছে

(use-package nice-package
  :load-path "~/src/nice-package"
  ...)

:load-pathঅনাবৃত লাইনটি দিয়ে , এটি প্যাকেজের গিট সংস্করণ ব্যবহার করবে। এই লাইনটি মন্তব্য করা, এবং ইম্যাকগুলি পুনরায় লোড করা ইলপা সংস্করণ ব্যবহার করে।

ব্যবহার-প্যাকেজ ছাড়াই অনুরূপ

ইন ডি.এল.

(add-to-list 'load-path "~/src/nice-package")
(require 'nice-package)
...

এখন প্রথম লাইনের সাথে একই মন্তব্য করার কৌশলটি করুন।

ব্যবহার emacs -L

এটি একই ধারণা, তবে load-pathকমান্ড লাইন থেকে হেরফের করছে । আপনি প্যাকেজের গিট সংস্করণ দিয়ে ইমাসের একটি উদাহরণ লোড করতে পারেন

emacs -L ~/src/nice-package

যা এই পথটিকে লোড-পাথের সামনের দিকে সরিয়ে ফেলে। এইভাবে, আপনি অন্য emacsএকটি টার্মিনাল থেকে লঞ্চ করতে পারেন এবং পাশাপাশি প্যাকেজটির পুরানো এবং নতুন সংস্করণটি পাশাপাশি চলতে পারেন।

বিভিন্ন মন্তব্য

  1. আপনার M-x eval-bufferতৈরি করা নতুন সংজ্ঞা লোড করতে একটি প্যাকেজ ফাইল সম্পাদনা করার পরে ব্যবহার করুন ।
  2. সংকলকটি কী বলছে তা পরীক্ষা M-x emacs-lisp-byte-compileকরাও সহজ y

আমি emacs -Lপ্যাকেজের স্থানীয় সংস্করণটি লোড করার জন্য পদ্ধতির ব্যবহার করছি যা আমি ক্যাস্ক ব্যবহার করে বিশ্বব্যাপী ইনস্টল করেছি। একটি জিনিস যা আমাকে ছুঁড়ে ফেলেছিল তা হ'ল চলমান <package>-versionসর্বদা বিশ্বব্যাপী ইনস্টল করা সংস্করণটি ফিরিয়ে দেয়, এমনকি যখন আমি আসলে স্থানীয় পরিবর্তিত সংস্করণটি চালাচ্ছিলাম। দেখা যাচ্ছে কারণ <package>-versionএই প্যাকেজটির জন্য সংস্করণটি পেয়েছে packages.el
এনটিসি

3

ভাল প্রশ্ন! উত্তরটি হ'ল এখন অবধি কোনও ভাল উত্তর ছিল না, যেহেতু বিদ্যমান প্যাকেজ পরিচালকদের কেউই এই ব্যবহারের ক্ষেত্রে নকশাকৃত হয়নি ( বর্গ ব্যতীত , তবে বর্গ নির্ভরতা হ্যান্ডলিংয়ের মতো অন্যান্য সাধারণ প্যাকেজ পরিচালনার কাজ পরিচালনা করার চেষ্টা করে না)

তবে এখন, straight.elইমাকদের জন্য পরবর্তী প্রজন্মের প্যাকেজ ম্যানেজার রয়েছে যা এই সমস্যাটিকে যথাসম্ভব ব্যাপকভাবে সম্বোধন করে। দাবি অস্বীকার: আমি লিখেছি straight.el!

বুটস্ট্র্যাপ স্নিপেট সন্নিবেশ করার পরে , প্যাকেজ ইনস্টল করা যতটা সহজ

(straight-use-package 'magit)

এটি Magit এর জন্য গিট সংগ্রহস্থলটিকে ক্লোন করবে, প্যাকেজটিকে পৃথক ডিরেক্টরিতে সিলেট করে প্যাকেজটি তৈরি করবে, বাইট-কম্পাইল করবে, অটোলোড উত্পন্ন করবে এবং মূল্যায়ন করবে এবং load-pathসঠিকভাবে কনফিগার করবে । অবশ্যই, যদি প্যাকেজটি ইতিমধ্যে ক্লোন করে তৈরি করা হয় তবে কিছুই ঘটে না এবং আপনার আরম্ভের সময় ক্ষতিগ্রস্থ হয় না।

আপনি কীভাবে পরিবর্তনকে পরিবর্তন করতে পারেন? এটা তুচ্ছ! শুধু ব্যবহার M-x find-functionবা M-x find-libraryসোর্স কোড ঝাঁপ দিয়ে চলে হ্যাক! ইমাস লিসপ বিকাশের সাধারণ অনুশীলনের মতো আপনিও তাদের পরিবর্তনগুলি সরাসরি পরীক্ষার জন্য মূল্যায়ন করতে পারেন এবং আপনি যখন ইমাস পুনরায় চালু করবেন তখন প্যাকেজটি স্বয়ংক্রিয়ভাবে পুনর্নির্মাণ, পুনরায় সংকলন, ইত্যাদি হবে। এটি সম্পূর্ণ স্বয়ংক্রিয় এবং বুদ্ধিমানের।

আপনি যখন আপনার পরিবর্তনগুলি নিয়ে সন্তুষ্ট হন, কেবল প্রতিশ্রুতিবদ্ধ হন, চাপ দিন এবং একটি টানার অনুরোধ করুন। আপনার স্থানীয় প্যাকেজগুলির উপর আপনার সম্পূর্ণ নিয়ন্ত্রণ রয়েছে। তবে আপনার কনফিগারেশনটি এখনও 100% পুনরুত্পাদনযোগ্য হতে পারে কারণ আপনি straight.elএমন একটি লকফিল তৈরি করতে বলতে পারেন যা আপনার straight.elনিজের, মেলপা এবং অন্যান্য সমস্ত প্যাকেজগুলির গিট সংশোধনগুলি সংরক্ষণ করে।

straight.elমেলপা, জিএনইউ ইএলপিএ, বা ইম্যাকস মিরর থেকে যে কোনও প্যাকেজ ইনস্টল করতে পারে। তবে এর একটি অত্যন্ত নমনীয় রেসিপি ডিএসএলও রয়েছে যা আপনাকে যে কোনও জায়গা থেকে ইনস্টল করার পাশাপাশি প্যাকেজটি কীভাবে তৈরি তা কাস্টমাইজ করতে দেয়। এখানে একটি উদাহরণ যা কিছু বিকল্প দেখায়:

(straight-use-package
 '(magit :type git 
         :files ("lisp/magit*.el" "lisp/git-rebase.el"
                 "Documentation/magit.texi" "Documentation/AUTHORS.md"
                 "COPYING" (:exclude "lisp/magit-popup.el"))
         :host github :repo "raxod502/magit"
         :upstream (:host github :repo "magit/magit")))

straight.elহাস্যকরভাবে বিস্তৃত ডকুমেন্টেশন রয়েছে। গিটহাব এ সম্পর্কে সব পড়ুন ।


2

এই সব ভাল প্রশ্ন!

ইমাকস একটি মেমরি-চিত্রের মডেলটিতে কাজ করে, যেখানে নতুন কোড লোড করা চলমান ঘটনার মেমরি চিত্রকে পরিবর্তন করে। নতুন ফাংশন এবং ভেরিয়েবলগুলি সংজ্ঞায়িত করা সহজেই পূর্বাবস্থায় ফিরে আসে, আপনি যদি সেগুলির একটি তালিকা রাখেন তবে মডিউলটির অনেকগুলি পার্শ্ব প্রতিক্রিয়া রয়েছে যা আপনি পূর্বাবস্থায় ফিরে আসতে চান। দেখে মনে হচ্ছে unload-featureএটি যদিও বেশ ভাল করে তোলে।

আমি মনে করি আপনি যা করতে যাচ্ছেন তা হ'ল লাইভ কোডিং এবং মাঝেমধ্যে ইম্যাক্স পুনরায় চালু করা, আপনি যে শাখাটি ইনস্টল করেছেন সেখান থেকে আপনার শাখা থেকে লোড করা মডিউলটি লোড করা। যদি আপনি এই শাখাগুলির অনেকগুলি সমাপ্ত করে থাকেন তবে আপনি এমন একটি শেল স্ক্রিপ্ট চাইবেন load-pathযা এই মুহুর্তে আপনি যেটির জন্য কাজ করছেন তার সঠিকটির সাথে ইম্যাক্স চালু করে। কোনও অবস্থাতেই আমি প্যাকেজটির নাম পরিবর্তন করব না; আমি মনে করি এটি আরও বিভ্রান্তিকর হবে যেহেতু ইমাকগুলি তখন উভয়টি লোড করতে পারে।

আপনি আপনার প্যাচগুলি বিকাশ করার সাথে সাথে আপনি সরাসরি আপনার সরাসরি ইমাস সেশনে যে পরিবর্তনগুলি পরিবর্তন করছেন তা কেবল নতুন করে সংজ্ঞা দিয়ে শুরু করতে পারেন। এটি আপনাকে ইম্যাকস ছাড়াই তাত্ক্ষণিকভাবে নতুন সংজ্ঞা পরীক্ষা করতে দেয়। বিশেষত, আপনি যখন একটি এলিস্প ফাইল সম্পাদনা করেন আপনি আপনার বর্তমান ইমাস সেশনে বর্তমান ফাংশনটি মূল্যায়ন করতে C-M-x( eval-defun) ব্যবহার করতে পারেন । তারপরে আপনি এটি কল করতে পারেন তা নিশ্চিত হয়ে যায় যাতে এটি কাজ করে। আপনি যদি ইমাসস স্টার্টআপে ঘটে এমন কোনও কিছু পরিবর্তন করে থাকেন তবে সম্ভবত এটি পরীক্ষা করতে ইমাকগুলি শুরু করতে এবং থামাতে হবে; আপনি একটি পৃথক ইম্যাকস প্রক্রিয়া শুরু এবং থামিয়ে দিয়ে এটি করতে পারেন যাতে আপনার সম্পাদনা সেশনটি বাধা না দেয়।


2

আমি এখনও মনে করি না যে এর একটি ভাল উত্তর আছে (আমি আশা করি আপনি ক্যাসকের সাথে আংশিক সমাধান পেতে পারেন, তবে এটির ব্যবহার করে আপনাকে ভাল উত্তর দেওয়ার জন্য আমি এর সাথে যথেষ্ট পরিচিত নই; আশা করি অন্য কেউ পাবেন) তবে এখানে আমি কী করব (আমি খুব কমই এ্যালিস্প প্যাকেজটিতে স্থানীয় পরিবর্তন না করে ব্যবহার করি, তাই এটি সত্যিই আমার "স্বাভাবিক" উপায়):

  • cd ~/src; git clone ..../elpa.git
  • প্রতিটি প্যাকেজ জন্য cd ~/src/elisp; git clone ....thepackage.git
  • cd ~/src/elpa/packages; ln -s ~/src/elisp/* .
  • cd ~/src/elpa; make
  • আপনার ~/.emacsসংযোজন

    (eval-after-load 'package
     '(add-to-list 'package-directory-list
                   "~/src/elpa/packages"))
    

এইভাবে, সমস্ত প্যাকেজগুলি "গিট থেকে সরাসরি" ইনস্টল করা আছে, একটি সরল cd ~/src/elpa; makeযা প্রয়োজন তাদের পুনরায় সংকলন C-h o thepackage-functionকরবে এবং গিটের অধীনে উত্স ফাইলে যাবে।

"এটির মধ্যে একটি স্নিগ্ধের উপর স্থিতিশীল শাখা" পরিবর্তন করতে, আপনার প্রয়োজন হবে git checkout <branch>; cd ~/src/elpa; make; এবং যদি আপনি এটি ইমাস সেশনগুলি চালিত করতে প্রভাবিত করতে চান তবে এটি আরও কাজ করবে। আমি সাধারণত unload-featureব্যতিক্রমী পরিস্থিতিতে বাদে ব্যবহার না করার পরামর্শ দিই (এটি একটি ভাল বৈশিষ্ট্য, তবে এটি বর্তমানে যথেষ্ট নির্ভরযোগ্য নয়)।

এটি আপনার অনেক প্রয়োজনীয়তাও পূরণ করে না। এবং এটিতে কিছু অতিরিক্ত ডাউনসাইড রয়েছে, বেশিরভাগ ক্ষেত্রে প্যাকেজগুলির গিট ক্লোনটি এলপা.git এর মেকফিল দ্বারা প্রত্যাশিত বিন্যাস এবং সামগ্রীর সাথে মেলে না, তাই আপনাকে সেই প্যাকেজগুলি টুইটার করে শুরু করতে হবে (সাধারণত এমন জিনিস যা করতে হবে <pkg>-pkg.el, যেহেতু এল্পা.সিতের মেকফিলটি এই ফাইলটি সরবরাহ করা <pkg>.elনা থেকে এই ফাইলটি তৈরির প্রত্যাশা করে তবে আরও সমস্যাযুক্তভাবে, সংকলনটি অন্যভাবে সম্পাদন করা হয়, তাই কখনও কখনও আপনাকে গুলিটি খেলতে হবে require)।

ওহ এবং অবশ্যই এটির অর্থ হ'ল আপনি সেই প্যাকেজগুলি হাতে হাতে ইনস্টল করছেন, তাই আপনাকে নির্ভরতার দিকে মনোযোগ দিতে হবে। এই সেটআপটি সঠিকভাবে ইনস্টল করা অন্যান্য প্যাকেজগুলির সাথে সঠিকভাবে যোগাযোগ করে package-install, তাই এটি এত ভয়ানক নয়।


2

আমার অন্যান্য উত্তর সহ এই প্রশ্নের অন্য উত্তরগুলি এর কোডে পরিবর্তন করে ইমাস প্যাকেজ প্যাচ করার কথা বলে। গুগলের মাধ্যমে এই প্রশ্নটি খুঁজে পাওয়া লোকেরা যখন "পাম্প একটি ইম্যাকস প্যাকেজ" বলবে তখন তারা অন্য কিছু নিয়ে ভাবতে পারে - যথা, এর উত্স কোডটি সংশোধন না করেই তার আচরণকে ওভাররাইড করে।

এটি করার পদ্ধতিগুলি অন্তর্ভুক্ত করে ক্রমবর্ধমান ক্রমহ্রাসমান ক্রম:

প্রথম দুটি বিকল্পের শক্তি থাকা সত্ত্বেও, আমি নিজেকে প্রায়শই তৃতীয় রুটটি নিয়ে যেতে দেখলাম, কারণ কখনও কখনও অন্য কোনও উপায় নেই। কিন্তু তারপর প্রশ্ন, মূল ফাংশন সংজ্ঞা পরিবর্তন হলে কি হবে? আপনার সংজ্ঞার যে সংস্করণটি আপনি অনুলিপি করেছেন এবং আপনার ডিআইডি-ফাইলটিতে এটি অনুলিপি করেছেন এবং যে সংজ্ঞাটি দিয়েছেন তা আপডেট করার দরকার নেই!

যেহেতু আমি জিনিসগুলি প্যাচিংয়ে আচ্ছন্ন, আমি প্যাকেজটি লিখেছিলাম el-patch, যা এই সমস্যাটি যতটা সম্ভব সমাধান করা যায়। ধারণাটি হ'ল আপনি নিজের আর-ফাইলটিতে এস-এক্সপ্রেশন ভিত্তিক ডিফগুলি সংজ্ঞায়িত করেছেন যা মূল ফাংশন সংজ্ঞা এবং এতে পরিবর্তনগুলি উভয়ই বর্ণনা করে। এটি আপনার প্যাচগুলি আরও বেশি পঠনযোগ্য করে তোলে এবং আপনার প্যাচ তৈরির el-patchপর থেকে মূল ফাংশন সংজ্ঞাটি আপডেট হয়েছে কিনা তা পরে বৈধ করার অনুমতি দেয় । (যদি তা হয় তবে এটি আপনাকে এডিফের মাধ্যমে পরিবর্তনগুলি দেখায়!) নথি থেকে উদ্ধৃত:

company-statisticsপ্যাকেজে সংজ্ঞায়িত নিম্নলিখিত ফাংশনটি বিবেচনা করুন :

(defun company-statistics--load ()
  "Restore statistics."
  (load company-statistics-file 'noerror nil 'nosuffix))

ধরুন আমরা থেকে তৃতীয় যুক্তি পরিবর্তন করতে চান nilকরতে 'nomessage, বার্তা যে লগ করা হয় যখন দমন করতে company-statisticsলোড তার পরিসংখ্যান ফাইল। নিম্নলিখিত কোডগুলি আমাদের মধ্যে রেখে আমরা এটি করতে পারি init.el:

(el-patch-defun company-statistics--load ()
  "Restore statistics."
  (load company-statistics-file 'noerror
        (el-patch-swap nil 'nomessage)
        'nosuffix))

কেবলমাত্র কল করার el-patch-defunপরিবর্তে defunকোনও অপ-প্যাচ সংজ্ঞায়িত করা হয়েছে: এটির কোনও প্রভাব নেই (ভাল, বেশ নয় - পরে দেখুন )। তবে প্যাচ নির্দেশিকা অন্তর্ভুক্ত করে আপনি ফাংশনের পরিবর্তিত সংস্করণটিকে মূল থেকে আলাদা করতে পারেন।

এই ক্ষেত্রে, আমরা el-patch-swapনির্দেশ ব্যবহার করি । el-patch-swapফর্ম সঙ্গে প্রতিস্থাপিত হয় nilমূল সংজ্ঞা (যে, সংস্করণ যে "সরকারী" সংজ্ঞা বিরুদ্ধে তুলনা করা হয় company-statistics.el), এবং সঙ্গে 'nomessageপরিবর্তিত সংজ্ঞা (যে সংস্করণ যা আসলে আপনার Init ফাইল মূল্যায়ন করা হয়)।


0

আপনি যখন অনেকগুলি পরিবর্তন করেন, আমার মনে হয় আপনার ব্যবহার করা উচিত straight.el, রেডন রোসবারোর উত্তর দেখুন ।

আপনি যদি কেবল একটিটিকে পরিবর্তন করতে চান তবে আসুন একটি প্রকল্প বলে ধরে নেওয়া যাক fork-mode, নিম্নলিখিত পদক্ষেপগুলি করুন:

  • গিটটি সংরক্ষণ করার জন্য একটি ডিরেক্টরি তৈরি করুন mkdir ~/.emacs.d/lisp-gits
  • আপনি যে প্রকল্পটি পরিবর্তন করতে চান তার একটি কাঁটা তৈরি করুন, এ বলুন https://github.com/user/fork-mode
  • আপনার কাঁটাচামড়া ক্লোন করুন cd ~/.emacs.d/lisp-gits && git clone git@github.com:user/fork-mode.git

আপনার মধ্যে নিম্নলিখিত কোড লিখুন .emacs

(if (file-exists-p "~/.emacs.d/lisp-gits/fork-mode")
    (use-package fork-mode :load-path "~/.emacs.d/lisp-gits/fork-mode")
  (use-package fork-mode :ensure t))

(use-package fork-mode
  :config
  (setq fork-mode-setting t)
  :hook
  ((fork-mode . (lambda () (message "Inside hook"))))

আপনি C-h fযে ফাংশনগুলি পরিবর্তন করতে চান তা খুঁজতে আপনি এখন ইমাস মোডটি ব্যবহার করতে পারেন। আপনি লক্ষ্য করবেন যে প্যাকেজটি লিস্প-গিটগুলিতে ইনস্টল হওয়ার পরে আপনি সেখানে লাফিয়ে যাবেন। পরিবর্তনগুলি ঠেকাতে / ধাক্কা দেওয়ার জন্য ম্যাজিট বা অন্যান্য গিট কমান্ডগুলি ব্যবহার করুন এবং তারপরে আপনার টানার অনুরোধগুলি প্রেরণের জন্য গিথব ব্যবহার করুন।

একবার আপনার টানার অনুরোধগুলি স্বীকার হয়ে গেলে আপনি কেবলমাত্র প্রকল্পটি সরিয়ে ফেলতে পারবেন ~/.emacs.d/lisp-gitsএবং প্যাকেজ পরিচালককে তার কাজটি করতে দিন।

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