বাফারের সাথে সম্পর্কিত কী বাইন্ডিংগুলি


14

বাফারের সাথে নির্দিষ্ট কী বাইন্ডিংগুলি সেট করা সম্ভব?

আমার একটি org ফাইলের মধ্যে আমার নীচে রয়েছে:

# Local Variables:
# eval: (local-set-key (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer)
# End:

তবে এই বাঁধাই অন্যান্য org- মোড ফাইলগুলির জন্যও বজায় থাকে। আমি যদি অন্য কোনও প্রধান মোডের সাহায্যে কোনও ফাইল খুলি, তবে আমার ডিফল্ট কী বাঁধাই কিক করে।

দেখে মনে হচ্ছে local-set-keyযে বাফারের সাথে সুনির্দিষ্ট নয় মেজর-মোডের জন্য নির্দিষ্ট বাইন্ডিংগুলি সেট করা হচ্ছে ings

আমি কীভাবে বাইন্ডিংগুলি রাখতে পারি যা কেবলমাত্র একটি নির্দিষ্ট বাফারে সক্রিয় হয়?


2
ওহ, বাহ, আপনি ঠিক বলেছেন: "বাঁধাই বর্তমান বাফারের স্থানীয় মানচিত্রে যায় যা বেশিরভাগ ক্ষেত্রে একই প্রধান মোডে অন্যান্য সমস্ত বাফারদের সাথে ভাগ করা হয়।" আমি তা কখনই জানতাম না।
— shosti

এখন আমি এটা আমার মনে হয় যে, local-unset-keyসঙ্গে লাগানো org-mode-hookযথাসাধ্য কাজ যে সামনে মৃত্যুদন্ড কার্যকর হলে Local Variables:অধ্যায়।
— দক্ষ মোদী

অথবা আপনি একটি আধা স্পার্স কীম্যাপটি দিয়ে একটি ছোটখাটো মোড তৈরি করতে এবং এটি ব্যবহার করে টগল করতে পারেনLocal Variables:
— বামসি

@ ভামসি ধন্যবাদ! এটি একটি মার্জিত সমাধান! আমি আপনার সমাধান আপডেট করেছি।
— দক্ষ মোদী

উত্তর:


17

বন্ধ করার জন্য, এখানে আমার মন্তব্যের উপর প্রসারিত একটি উত্তর। আমি প্রয়োজনীয় কী-বাইন্ডিং সহ একটি ছোটখাটো মোড সংজ্ঞায়িত করি এবং ফাইল স্থানীয় ভেরিয়েবলগুলি ব্যবহার করে প্রয়োজনীয় বাফারে এটি টগল করি।

  (define-minor-mode my-org-buffer-local-mode
    "Minor mode to simulate buffer local keybindings."
    :init-value nil)
  (define-key my-org-buffer-local-mode-map (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer)

নিম্নরূপে ফাইলের শেষে স্থানীয় ভেরিয়েবল বিভাগটি সেট করে আপনি এটি প্রয়োজনীয় ফাইলগুলিতে টগল করতে পারেন। আপনি এখানে কী-বাইন্ডিং পরিবর্তন বা যুক্ত করতে পারেন। আপনার এখনও প্রতিটি বাফারের জন্য বিভিন্ন ছোট ছোট মোডগুলি সংজ্ঞায়িত করতে হবে যা বিভিন্ন কমান্ডে একই কী-সিকোয়েন্সকে ম্যাপ করে।

 # Local Variables:
 # my-org-buffer-local-mode: t
 # eval:(define-key my-org-buffer-local-mode-map (kbd "<f10>") 'some-other-custom-defun-specific-to-this-buffer)
 # End:

@ কৈশালমোদি: আপনার সম্পাদনাগুলি আরও সম্পূর্ণ হওয়ায় এটি আলাদা জবাব হিসাবে স্পিন করতে চাইবেন। এছাড়াও, আপনি বাফার নির্দিষ্ট নাম ব্যবহার না করে আপনি একই সাথে দুটি আলাদা ফাংশনে একই কী-সিকোয়েন্সটি মানচিত্র করতে সক্ষম হবেন না।
— ভামসী

আমি এই ত্রুটিটি eval-buffer: Symbol's value as variable is void: my-org-buffer-local-mode-mapপেয়েছি : যখন আমি এটি চালানোর চেষ্টা করি(define-minor-mode my-org-buffer-local-mode "Minor mode to simulate buffer local keybindings." :init-value nil) (define-key my-org-buffer-local-mode-map (kbd "<f10>") 'some-custom-defun-specific-to-this-buffer)
— ভাস্বর

আমিও একই ত্রুটি পেয়েছি। কোন ধারণা?
— জেলটাক

@ কীন্ডেসেন্টম্যান কল (মেক-কিম্যাপ) :keymapকীওয়ার্ড সহ, নাল্পপ্রগ্রাম.com
— blog/

5

বাফার-নির্দিষ্ট কী বাইন্ডিং সেট করার একটি সাধারণ উপায়।

  • একটি অস্থায়ী মাইনর মোড তৈরি করুন (নীচে স্নিপেটটি এটিতে temp-mode.elএবং requireএটিতে আপনার সংরক্ষণ করুন) init.el।
  • সেই temp-modeগৌণ মোডটি সক্ষম করুন এবং কেবলমাত্র আপনার প্রয়োজন বাফারে সেই মাইনর-মোডের কী ম্যাপটি সংজ্ঞায়িত করুন।

নীচে Local Variablesস্নিপেটটি যেখানে আপনি পছন্দসই কী বাঁধাই করতে চান সেখানে রাখুন । নীচে org-modeফাইলগুলির উদাহরণ দেওয়া হল ।

বাফারে এক

# Local Variables:
# eval: (temp-mode 1)
# eval: (define-key temp-mode-map (kbd "<f10>") 'function-ONE)
# End:

যদি অন্য কিছু বাফার একই কী-বন্ডিং ব্যবহার করে পুনরায় সংজ্ঞা দেয়,

বাফার টিডব্লিউও-তে

# Local Variables:
# eval: (temp-mode 1)
# eval: (define-key temp-mode-map (kbd "<f10>") 'function-TWO)
# End:

তারপরে নতুন বাঁধাই কার্যকারী হয়ে ওঠে M-x revert-buffer।

আমার যদি খুব ঘন ঘন এই দুটি বাফারের মধ্যে স্যুইচ করতে হয় এবং যদি F10উভয়ের মধ্যে আমাকে বাইন্ডিং ব্যবহার করতে হয় তবে আমি এটি করব :

  • এক বাফারে কাজ করুন, C-x C-s(সংরক্ষণ করুন) এবং বাফার TWO এ স্যুইচ করুন
  • revert-buffer(বাইন্ডিংগুলি রিফ্রেশ করুন), বাফার TWO এ কাজ করুন এবং বাফার একটিতে C-x C-sস্যুইচ করুন
  • revert-buffer(বাইন্ডিংগুলি রিফ্রেশ করুন), বাফার ওয়ান-এ কাজ করুন এবং C-x C-sবাফার TWO এ স্যুইচ করুন

তবে আমি পরিবর্তে বিভিন্ন বাফ-নির্দিষ্ট কমান্ডকে বিভিন্ন কীতে আবদ্ধ করব।


অস্থায়ী মাইনর মোড

;; temp-mode.el
;; Temporary minor mode
;; Main use is to enable it only in specific buffers to achieve the goal of
;; buffer-specific keymaps

(defvar temp-mode-map (make-sparse-keymap)
  "Keymap while temp-mode is active.")

;;;###autoload
(define-minor-mode temp-mode
  "A temporary minor mode to be activated only specific to a buffer."
  nil
  :lighter " Temp"
  temp-mode-map)

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