একই বাফারটিতে দুটি প্রধান-মোড-মানচিত্র ব্যবহার করুন


11

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

  • আমি আমার কয়েকটি org ডকুমেন্টে প্রচুর ল্যাটেক্স লিখি, তাই latex-modeসম্পাদনার সময় কমান্ডগুলি সহজেই উপলব্ধ করা ভাল org-mode
  • আমি বারবার মার্কডাউন সাপোর্টের সাথে একটি আইস রুমে থাকি, তাই কী- markdown-modeবাইন্ডগুলি যুক্ত করা ভাল erc-mode

উভয় ক্ষেত্রেই এই অতিরিক্ত কীম্যাপটি ফ্যালব্যাক হিসাবে কাজ করা উচিত (এজন্য আমি এটির জন্য কেবল একটি ছোটখাটো মোড ব্যবহার করতে পারি না)। ল্যাটেক্স কমান্ডগুলি কোনও org-modeকীগুলিকে ওভাররাইড করতে চাই না । আমি যা চাই তা হ'ল:
যদি একটি কী সংজ্ঞায়িত হয় latex-mode-mapএবং এটি সংজ্ঞায়িত না হয় org-mode-mapতবে latex-mode-mapবাঁধাই ব্যবহার করুন

প্রশ্ন: আমি কীভাবে কোনও মেজর-মোডের জন্য ফ্যালব্যাক কীম্যাপ হিসাবে কী-ম্যাপ সেট করতে পারি?
বা
প্রশ্ন: কীভাবে কোনও কিছুকে ওভাররাইড না করে একটি প্রধান-মোড-মানচিত্র থেকে অন্যটিতে কীগুলি অনুলিপি করা যায়?


শুধু পরিষ্কার হতে। আমি জানি আমি এই কীগুলি একের পর এক সংজ্ঞায়িত করতে পারি, তবে একটি স্বয়ংক্রিয় সমাধান পাওয়া অসম্ভব সুবিধাজনক হবে।


6
একটি কীম্যাপ মার্জ ব্যবহার করুন। দেখুন make-composed-keymap
ড্রিউ

উত্তর:


12

এটি প্রত্যাশা করা সহজ হতে পরিণত হয়েছিল। এখানে মন্তব্য এবং প্রশ্নের পরামর্শ হিসাবে:

(with-eval-after-load 'erc
  (require 'markdown-mode)
  (require 'cl-lib)
  (setq erc-mode-map
        (make-composed-keymap (cl-copy-list erc-mode-map)
                              markdown-mode-map)))

এটি এমন একটি কীম্যাপ তৈরি করবে যা এর অনুলিপি erc-mode-mapতবে যা উত্তরাধিকার সূত্রে প্রাপ্ত markdown-mode-map। সুতরাং markdownযখনই ercকীগুলির সাথে সংঘর্ষ হয় তখন সমস্ত কী ছায়াযুক্ত হবে ।

আপনি যদি না প্রধান kemap উজ্জ্বলতায় কোনো কিছুকে ছাপিয়ে ফলব্যাক কীম্যাপ কিছু কী চাই, শুধু তাদের প্রধান এক অক্ষম করুন।

(define-key erc-mode-map "\C-c\C-a" nil)

2
আমি লক্ষ্য করেছি যে define-keyরিটার্ন ভ্যালুটি ব্যবহার করে make-composed-keymapমূল কীম্যাপগুলিতে অপ্রত্যাশিত পার্শ্ব প্রতিক্রিয়া থাকতে পারে এবং আমি সন্দেহ করি যে এটি ম্যানুয়ালি appendedমানচিত্রে একই রকম প্রয়োগ হতে পারে । আপনি যদি ব্যবহার করতে চান তবে define-keyএকটি নতুন কীম্যাপ তৈরি করা সবচেয়ে নিরাপদ বলে মনে হচ্ছে যার পিতামাতা কীম্যাপটি একটি রচিত কীম্যাপ।
জন ও।

@JonO। আসলে, এখানে এটি ঘটে না তা জানতে পেরে আমি খুব অবাক হয়েছিলাম । যদি আমি এটি করি (define-key erc-mode-map "\C-c\C-s" nil)তবে সংশ্লিষ্ট markdown-modeকীটি এমনকি এমনকি ইরক বাফারগুলিতেও উপলভ্য হবে ।
মালবারবা

মালবারবা: আমি বিশ্বাস করি যে কোড পরিবর্তন হওয়ার পরে আপনার শেষ মন্তব্যটি আর প্রযোজ্য নয়। make-composed-keymapডকুমেন্টেশন বলছেন "একটি শূন্য মানচিত্রে বাঁধাই কোনো অভিভাবক বাঁধাই সংশ্লিষ্ট, কিন্তু এটা সংশ্লিষ্ট মানচিত্রের অন্যান্য বোর্ডের ব্যবহার মধ্যে বাইন্ডিং ওভাররাইড নেই ওভাররাইড করে।" যেমন markdown-mode-mapআপনার প্যারেন্ট হিসাবে উদাহরণস্বরূপ, আমি আশা করি যে nilবাঁধাই মার্কডাউন বাঁধাই বাধা দেবে?
ফিল্ডস

2
আমার ব্যাখ্যাটি হ'ল যে আপনি কী বর্ণনা করেছেন (make-composed-keymap (list erc-mode-map markdown-mode-map)) তা কি প্রভাব ফেলবে?
ফিল্ড

1
cl-copy-listসত্যিই আপনি যা চান তা করবে না আপনি যদি কী ম্যাপটি অনুলিপি করতে চান তবে আপনার ব্যবহার করা উচিত ছিল copy-keymap
স্টিফান

3

@ মালবারবা দ্বারা উল্লিখিত হিসাবে, আপনি এটির make-composed-keymapজন্য ব্যবহার করতে পারেন । তবে আপনি যদি সত্যিই নতুন কী ম্যাপটি উভয় কীম্যাপ থেকে উত্তরাধিকার সূত্রে চান তবে নতুন কীম্যাপটি পরিবর্তন করা অন্য দুটি কীম্যাপের কোনওটিতে প্রভাব ফেলবে না, আপনাকে দুটি পদক্ষেপে এটি করতে হবে:

(make-composed-keymap
 nil (make-composed-keymap (list erc-mode-map markdown-mode-map)))

এর কারণ define-keyএটি কখনও কখনও প্রথম মান হিসাবে পাস করা মানচিত্রগুলিকে সংশোধন করতে পারে make-composed-keymapতবে দ্বিতীয় হিসাবে পাস করা হয় না। আমি অনুমান করি আপনার উচিত M-x report-emacs-bugএবং অনুরোধ করা হ'ল দ্বিতীয় যুক্তি হিসাবে কীম্যাপগুলির make-composed-keymapএকটি তালিকা গ্রহণ করুন , যাতে আপনি কেবল এটি করতে পারেন

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