গৌণ মোড সক্ষম করার উপযুক্ত উপায়


24

আমার কাছে ফু-মোড রয়েছে এবং এটির জন্য বার-মাইনর-মোড সক্ষম করব । তাহলে কোন উপায়টি বেশি সাধারণ এবং পছন্দনীয়?

একজন

(add-hook 'foo-mode-hook 'bar-minor-mode)

বি

(add-hook 'foo-mode-hook (lambda ()
                           "Turn on `bar-minor-mode' mode."
                           (bar-minor-mode 1)))

সি

(defun bar-minor-mode-on ()
  "Turn on `bar-minor-mode' mode."
  (interactive)
  (bar-minor-mode 1))

(add-hook 'foo-mode-hook 'bar-minor-mode-on)

ডি

• বৈকল্পিক সি, তবে ফাংশনটি প্রবাহে ধাক্কা

Iant বৈকল্পিক সি, তবে প্লাগইন এর রেসিপিটিতে সঞ্চিত ফাংশন


4
হাই @ নেটসু, আমি লক্ষ্য করেছি যে আপনি আপনার ল্যাম্বদা থেকে উদ্ধৃতিটি উদ্ধৃত করেছেন back সাধারণত, ল্যাম্বডাসের উদ্ধৃতিটি ক্ষতিকারক, সুতরাং স্টেফান এবং আমি কেবল ভাল অভ্যাসগুলি প্রেরণার চেষ্টা করছি। :-)
মালবারবা

উত্তর:


26

এটি ইম্যাকের কোন সংস্করণ (গুলি) উপর নির্ভর করে আপনি (বা লক্ষ্যবস্তু) ব্যবহার করছেন। যদি আপনি একচেটিয়াভাবে Emacs 24+ ব্যবহার করেন তবে আপনি নিরাপদে বৈকল্পিক A ব্যবহার করতে পারেন:

* Incompatible Lisp Changes in Emacs 24.1

** Passing a nil argument to a minor mode function call now ENABLES
the minor mode unconditionally.  This is so that you can write e.g.

 (add-hook 'text-mode-hook 'foo-mode)

to enable foo-mode in Text mode buffers, removing the need for
`turn-on-foo-mode' style functions.  This affects all mode commands
defined by `define-minor-mode'.  If called interactively, the mode
command still toggles the minor mode.

এটি নিউজ ফাইল থেকে এসেছে, তবে মতামত অনুসারে ফাংশন প্রতীকগুলির জন্য ফাংশন-উদ্ধৃতি ব্যবহার করা ভাল অনুশীলন, যেমন:

 (add-hook 'text-mode-hook #'foo-mode)

যদি কোডটি ইম্যাক্স 23 (বা তার আগে) এর অধীনে চলতে পারে, তবে আমি বৈকল্পিক সি সহ যাব, ব্যক্তিগতভাবে আমি হুক ভেরিয়েবলগুলিতে বেনামে ফাংশনগুলি দেখতে পছন্দ করি না। (আমি নিশ্চিত নই যে আপনি ডি ও ই, মাইন্ডে ভেরিয়েন্ট বলতে কী বোঝাতে চেয়েছেন) তা আমি বুঝতে পেরেছি।


3
অপ্রাপ্তবয়স্ক মোডের জন্য আপনার পছন্দমতো ফাংশন কোট ব্যবহার করা উচিত, যাতে মোড অপরিজ্ঞাত থাকলে বাইট সংকলক আপনাকে সতর্ক করতে পারে।
লুনারিওর

ধন্যবাদ। তবে কী এখনও ফাংশন-উদ্ধৃতি প্রয়োজনীয়? এটি কি সুবিধা দেয়? লাম্বডাসের জন্যও কি এটি প্রয়োজনীয়?
নেটসু


7

এটি করার আরও একটি উপায় এখানে রয়েছে যার কিছু সুবিধা রয়েছে বলে ধরে নেওয়া, আপনি নিজের কনফিগারেশন সম্পাদনা করছেন, আপনি যে প্যাকেজ বিতরণ করছেন তা নয়।

(add-hook 'foo-mode-hook
          #'custom-foo-hook)

(defun custom-foo-hook ()
  (bar-minor-mode 1)
  (baz-minor-mode 1)
  ;; ...
  (define-key foo-mode-map "C-c C-b" #'foobar))

সুবিধা হলো সবকিছু তাই কিছু উপাদান অক্ষম করতে আপনাকে যা করতে হবে না এক হুক মধ্যে সংরক্ষিত হয়, হয় remove-hook, কিন্তু এর পরিবর্তে কিছু কাপড় মন্তব্য custom-foo-hookএবং C-M-x

এমনকি আপনি একটি কমান্ড লিখতে পারেন যা কোনও মোড থেকে তার কাস্টম হুক পর্যন্ত লাফ দেয়।


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

1
ভেরিয়েন্ট সি add-hookসক্ষম করতে প্রতিটি ছোটখাটো মোডের জন্য একাধিক বিবৃতি দেয়। আমি জোর দিতে চেয়েছিলাম যে শুধুমাত্র একটি add-hookবিবৃতি থাকা একটি সুবিধা।
আবো-আবো

একমত। আমার মাথার মধ্যে আমি বেশিরভাগ রূপান্তরিত সি অনুবাদ করেছিলাম "একটি মোড সক্ষম করে এমন একটি কাস্টম ফাংশন সংজ্ঞায়িত করুন" পরিবর্তে "একটি কাস্টম ফাংশন সংজ্ঞায়িত করুন যা কেবল মোডকে সক্ষম করে", তবে পূর্ববর্তী ক্ষেত্রে প্রতীয়মানটি উদ্দেশ্য বলে মনে হয় না। আপনি যেমনটি বলেছেন, কোডটি ব্যক্তিগত ব্যবহারের জন্য কিনা তা নির্ভর করে।
21

7

আপনি কেন একটি নতুন কমান্ডকে সংজ্ঞায়িত করবেন যা ঠিক কী bar-minor-modeকরে?

24.1 দিয়ে শুরু করে, এগুলি সমস্ত সম্পূর্ণ সমতুল্য, সুতরাং কেবল কম অপ্রয়োজনীয় ব্যবহার করুন: বিকল্প এ A

(add-hook 'foo-mode-hook #'bar-minor-mode)

1
এটি কি নিরাপদ সমাধান? আমি বলতে চাইছি যদি বার-মাইনর-মোডে দু'বার কল করার চেয়ে কোনও ফু-মোড-হুক প্যারেন্ট মোডের একই হুক থাকে , তাই অক্ষম হয়ে যাবে। অপ্রত্যাশিত আচরণ।
নেটসু

2
@ নেটসু হ্যাঁ, কোনও যুক্তি ছাড়াই একটি মাইনর মোড ফাংশনকে কল করা শর্তহীন মোডকে নিঃশর্তভাবে সক্ষম করে।
মালবারবা

4
@ মালাব্বারবা কেবল ইম্যাক্স 24 হিসাবে। আগের সংস্করণগুলিতে এটি আসলে মোডটি টোগল করত।
লুনারিওর

1
@ লুনারিওরন হ্যাঁ, এই কারণেই ফিলসের উত্তর আরও ভাল। :-) আমার নিজেকে ঠিক করতে খুব অলস হচ্ছিলাম।
মালবারবা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.