ইমাস 25
মন্তব্যগুলিতে @ ইয়ংফ্রোগের উল্লেখ অনুসারে, ইমাস 25.1.1 দিয়ে শুরু করে , C-h k
কী- বাইন্ডগুলি বর্ণনা করার ভাল-পুরাতন পদ্ধতিটি আপনাকে কী কী ম্যাপটি পাওয়া গেছে তা জানিয়ে দেবে।
ইমাস 25 এর আগে
এটিতে এখানে কিছু কোড রয়েছে
তবে এটি অসম্পূর্ণ কারণ এটি সমস্ত কিছু আবরণ করে না। নীচে এটির একটি উন্নত সংস্করণ রয়েছে।
কীগুলি 9 (!) উপায়ে আবদ্ধ হতে পারে। জন্য ধন্যবাদ @Drew করতে এই লিঙ্কে (এছাড়াও দ্বারা supplemented এই ) সম্পূর্ণ তালিকা সঙ্গে। অগ্রাধিকারের আদেশ অনুসারে তারা হলেন:
- কীগুলির একটি টার্মিনাল-নির্দিষ্ট সেট
overriding-terminal-local-map
,। এটি set-transient-map
ফাংশন দ্বারা সংজ্ঞায়িত করা হয় ।
- একটি বাফার-লোকাল ওভাররাইড মানচিত্র
overriding-local-map
,। যদি এটি সেট করা থাকে তবে আইটেমগুলি 3-8 এড়িয়ে যায় (সম্ভবত আপনি কেন এগুলি দেখতে পান না)।
keymap
পাঠ্য-প্রপটির মাধ্যমে বিন্দুতে (যা প্রকৃত পাঠ্যে বা ওভারলেতে যেতে পারে)।
- একটি ভেরিয়েবল যা সক্ষমভাবে ন্যূনতম মোডগুলির বিভিন্ন সম্ভাব্য সেটগুলি সিমুলেট করে
emulation-mode-map-alists
।
- একটি পরিবর্তনশীল, যেখানে প্রধান-মোড ছোটখাট-মোড keybinds ওভাররাইড করতে পারে
minor-mode-overriding-map-alist
।
- প্রকৃত ছোটখাটো মোডস, যার কীবাইন্ডগুলি এতে সঞ্চিত
minor-mode-map-alist
।
- বিন্দুতে (আবার),
local-map
পাঠ্য সম্পত্তিটির মাধ্যমে । এটি উপস্থিত থাকলে 8 আইটেম এড়িয়ে যায়।
- স্ট্যান্ডার্ড বাফার-লোকাল কীম্যাপ (যেখানে মেজর-মোড বা বাফার-লোকাল কীবাইন্ডগুলি যায়), ফাংশন দিয়ে ফিরে আসে
current-local-map
।
- বিশ্বব্যাপী কীম্যাপ , দ্বারা ফিরে
current-global-map
।
একটি আধা-আইটেমও রয়েছে 10. উপরোক্ত পদ্ধতির মাধ্যমে যা কিছু আদেশ পাওয়া গেছে তাও পুনরায় করা যেতে পারে।
নিম্নলিখিত ফাংশন জিজ্ঞাস্য কিছু এই সম্ভাবনার (সম্ভবত বেশী), এবং আয় বা কপি করে প্রিন্ট ফলাফল।
(defun locate-key-binding (key)
"Determine in which keymap KEY is defined."
(interactive "kPress key: ")
(let ((ret
(list
(key-binding-at-point key)
(minor-mode-key-binding key)
(local-key-binding key)
(global-key-binding key))))
(when (called-interactively-p 'any)
(message "At Point: %s\nMinor-mode: %s\nLocal: %s\nGlobal: %s"
(or (nth 0 ret) "")
(or (mapconcat (lambda (x) (format "%s: %s" (car x) (cdr x)))
(nth 1 ret) "\n ")
"")
(or (nth 2 ret) "")
(or (nth 3 ret) "")))
ret))
প্রথমটি ব্যতীত এগুলির জন্য অন্তর্নির্মিত ফাংশন রয়েছে, সুতরাং আমাদের অবশ্যই একটি তৈরি করতে হবে (উপরে সংযুক্ত কোডের একটি উন্নত সংস্করণ)।
(defun key-binding-at-point (key)
(mapcar (lambda (keymap) (when (keymapp keymap)
(lookup-key keymap key)))
(list
;; More likely
(get-text-property (point) 'keymap)
(mapcar (lambda (overlay)
(overlay-get overlay 'keymap))
(overlays-at (point)))
;; Less likely
(get-text-property (point) 'local-map)
(mapcar (lambda (overlay)
(overlay-get overlay 'local-map))
(overlays-at (point))))))
যেহেতু আপনি বলছেন যে আচরণটি সক্রিয় রয়েছে যখন পয়েন্টটি কোনও সংযুক্তিতে থাকে, তাই কী-বাইন্ডটি কোনও ওভারলে বা পাঠ্য-সম্পত্তির উপর জায়গা করে নেওয়ার ভাল সুযোগ রয়েছে।
যদি এটি কাজ না করে তবে নীচের কমান্ডটিও চেষ্টা করে দেখুন। সংযুক্তিতে কেবল কার্সারটি রাখুন এবং করুন M-x
keymaps-at-point
।
(defun keymaps-at-point ()
"List entire keymaps present at point."
(interactive)
(let ((map-list
(list
(mapcar (lambda (overlay)
(overlay-get overlay 'keymap))
(overlays-at (point)))
(mapcar (lambda (overlay)
(overlay-get overlay 'local-map))
(overlays-at (point)))
(get-text-property (point) 'keymap)
(get-text-property (point) 'local-map))))
(apply #'message
(concat
"Overlay keymap: %s\n"
"Overlay local-map: %s\n"
"Text-property keymap: %s\n"
"Text-property local-map: %s")
map-list)))
Searching Keymaps
। নোডFunctions for Key Lookup
এবংActive Keymaps
।