2008-11-18 19 views
10

pareditM-<up> और M-<down> बांधता है, लेकिन मुझे windmove उन कुंजीबाइंडिंग के स्वामित्व में चाहिए। मेरे पास केवल कुछ मोड में सक्रिय करने के लिए पेरेडिट-मोड सेट है, लेकिन विंडमोव वैश्विक रूप से चलाने के लिए सेट है। मैं windmove जीतने के लिए चाहता हूँ, लेकिन जब यह लोड होता है तो paredit उन keybindings चुरा लेता है।विरोधाभासी कीबाइंडिंग को कैसे संभालें

मैं आसानी से पनडिट को विंडमॉव की कीबाइंडिंग पर स्टॉपिंग से कैसे रोक सकता हूं? मैं paredit.el में जा रहा हूं और कीबाइंडिंग सेट करने वाली लाइनों पर टिप्पणी कर रहा हूं, लेकिन यह आदर्श से बहुत दूर है (मुझे हर बार जब पेरेडिट अपडेट किया जाता है तो मुझे यह याद रखना होगा)।

अधिक आम तौर पर, क्या मैं कुछ कीबाइंडिंग को बदलने से "सुरक्षा" करते समय एक elisp फ़ाइल लोड कर सकता हूं?

उत्तर

11

आप अपनी टिप्पणी में वर्णित के रूप में यह लोड करने के बाद paredit के व्यवहार कॉन्फ़िगर करने के लिए, eval-after-load उपयोग कर सकते हैं:

;;; Customize paredit using `eval-after-load': 
;;; 
;;; (eval-after-load 'paredit 
;;;  '(progn ...redefine keys, &c....)) 

तो, उदाहरण के लिए:

(eval-after-load 'paredit 
    '(progn 
    (define-key paredit-mode-map (kbd "<M-up>") nil) 
    (define-key paredit-mode-map (kbd "<M-down>") nil))) 
+0

यह एक बहुत ही सामान्य उद्देश्य का उत्तर है - बहुत बहुत धन्यवाद। मेरा एक योगदान यह इंगित करना है कि यदि आप एक कीबाइंडिंग (इसे हटाने के बजाय) को बदलना चाहते हैं, तो आप पेरेडिट फ़ंक्शन का नाम डाल देंगे जहां एमेरिक ने 'शून्य' ऊपर रखा है, जैसा कि मैंने "आगे- slurp ":' (eval-after-load 'paredit ' (progn (परिभाषित-कुंजी पेरेडिट-मोड-मैप (kbd "") 'paredit-forward-slurp-sexp)) '' – quux00

1

इस सवाल का जवाब दिया गया से पहले: Globally override key binding in Emacs

आप अपनी पसंदीदा कीबाइंडिंग के साथ अपना स्वयं का मामूली मोड बनाते हैं और इसे वैश्विक रूप से सक्षम करते हैं, ताकि यह अन्य सभी कीबाइंडिंग को ओवरराइड कर सके।

संबंधित मुद्दे