इमैकस 25
जैसा कि टिप्पणी में @YoungFrog द्वारा उल्लेख किया गया है, 25.1 Emacs से शुरू होता है , C-h k
कुंजी-बाइंड का वर्णन करने का अच्छा-पुराना तरीका भी आपको बताएगा कि कुंजी किस कुंजी में पाई गई थी।
25 Emacs से पहले
इस पर यहाँ कुछ कोड
है , लेकिन यह अधूरा है क्योंकि यह सब कुछ कवर नहीं करता है। नीचे इसका एक बेहतर संस्करण है।
कीज़ को 9 (!) तरीकों से बांधा जा सकता है। धन्यवाद के लिए @Drew को इस लिंक (भी द्वारा पूरक इस ) पूरी सूची के साथ। पूर्वता के क्रम से, वे हैं:
- कुंजी का एक टर्मिनल-विशिष्ट सेट
overriding-terminal-local-map
,। यह set-transient-map
फ़ंक्शन द्वारा परिभाषित किया गया है।
- एक बफर-लोकल ओवरराइड मैप
overriding-local-map
,। यदि यह सेट हो जाता है, तो आइटम 3-8 छोड़ दिए जाते हैं (शायद आप इनमें से कई क्यों नहीं देखते हैं)।
keymap
पाठ-प्रसार के माध्यम से बिंदु पर (जो वास्तविक पाठ पर या ओवरले पर जा सकता है)।
- एक चर, जो अनिवार्य रूप सक्षम नाबालिग-मोड के विभिन्न संभव सेट simulates
emulation-mode-map-alists
।
- एक चर जहां प्रमुख-मोड मामूली-मोड की कीबाइंड को ओवरराइड कर सकते हैं, और
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
।