2013-04-18 6 views
5

मुझे यह छोटी समस्या है, मेरे पास C-. C-x या C-. C-m जैसी कुछ महत्वपूर्ण बाइंडिंग हैं। फ्लाईस्पेल-मोड को सक्रिय करने के बाद, मैं इन आदेशों का उपयोग नहीं कर सकता। मेरी .emacs फ़ाइल में मैं पहलेemacs, flyspell, निष्क्रिय "सी-।" कुंजी बाध्यकारी

(global-unset-key (kbd "C-.")) 
(define-key (current-global-map) (kbd "C-.") nil) 
(global-set-key (kbd "C-. C-l") 'global-linum-mode) 

फिर, मेरी C-. C-l काम करता है अगले 2 लाइनों है, लेकिन यह जब नहीं flyspell मोड सक्रिय है नहीं करता है। C-. से जुड़ा आदेश flyspell-auto-correct-word है। मैंने इसे निम्नानुसार निष्क्रिय करने की कोशिश की:

;; first try 
(defun flyspell-auto-correct-word-disable() (define-key (current-local-map) (kbd "C-.") nil)) 
(add-hook 'flyspell-mode-hook 'flyspell-auto-correct-word-disable) 
;; second try 
(define-key (current-global-map) [remap flyspell-auto-correct-word] nil) 

कोई भी कोशिश नहीं करता है, मैं क्या कर सकता हूं? मैंने Emacs 23 और 24 में कोशिश की और मेरे पास एक ही समस्या है।

उत्तर

9

के बारे में क्या:

(eval-after-load "flyspell" 
    '(define-key flyspell-mode-map (kbd "C-.") nil)) 

आपका पहला समाधान लगभग सही है, लेकिन आप याद करने के लिए है कि वर्तमान स्थानीय मानचित्र प्रमुख मोड, नहीं नाबालिग मोड द्वारा स्थापित किया गया है। flyspell-mode-map तक सीधे पहुंचने के लिए आपके पास सबसे अच्छा विकल्प है और इसे संशोधित करें (दूसरा विकल्प इसे minor-mode-map-alist में ढूंढना होगा, लेकिन मुझे लगता है कि यह आवश्यक रूप से जटिल होगा)।

इसके अलावा, मैं एक हुक के बजाय eval-after-load (जिसका अर्थ है कि उनका मूल्यांकन किया जाएगा) के भीतर ऐसी मोड-विशिष्ट सेटिंग्स डालना पसंद करते हैं (जिस स्थिति में सेटिंग्स का मूल्यांकन कई बार किया जाता है: प्रत्येक बार एक बफर flyspell-mode सक्रिय करता है)। लेकिन यह वरीयता का मामला है और किसी भी तरह से ठीक है।

+0

धन्यवाद एक बहुत है, यह आसानी से अब काम कर रहा है =) – silgon

+0

मैं एक ही मुद्दा है, लेकिन अब php-मोड के साथ रही है, इसलिए इस बार मैंने कोशिश की (eval के बाद लोड "php" '(परिभाषित कुंजी php-मोड- मानचित्र (केबीडी "सी-।") शून्य)) लेकिन यह काम नहीं कर रहा है। मुझे पता है, मुझे अपनी कीबाइंडिंग बदलनी चाहिए, लेकिन मुझे यह जानना है कि यह क्यों काम नहीं कर रहा है, धन्यवाद! – silgon

+0

मेरे पास मेरे सिस्टम पर 'php-mode' स्थापित नहीं है; क्या यह मानक है? आपको यह जांचना चाहिए कि कौन सी लाइब्रेरी 'php-mode' और' php-mode-map' को परिभाषित करती है। यह 'सी-एच वी php-mode-map' या' सी-एच एफ php-mode' 'के साथ emacs' दस्तावेज़ सिस्टम तक पहुंचकर किया जा सकता है। जिस नाम को आपको 'eval-after-load' रूप में रखना चाहिए वह पुस्तकालय का नाम इसके ".el" प्रत्यय के बिना है। – Francesco

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