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


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.