संपादित करें: मुझे लगता है कि कीबोर्ड-छोड़ने वाला है (जो आमतौर पर सी-जी से बंधे होते हैं); लेकिन मुझे यह जानने में अधिक दिलचस्पी है कि एएमएक्स (इस मामले में) के साथ आने वाले संपादन कार्यों से कैसे निपटता है। मैं समय-समय पर इस तरह की स्थितियों में भाग लेता हूं जब मैं कुछ बिल्ड-इन फ़ंक्शंस को बदलना चाहता हूं।, कीबोर्ड-से बचने के लिए सबसे अच्छा तरीका क्या है- अन्य विंडो को नष्ट न करें?
जब आप एम-ईएससी ईएससी (या ईएससी तीन बार) हिट करते हैं, तो आप क्षणिक-चिह्न इत्यादि जैसी कई स्थितियों से बाहर निकल सकते हैं, लेकिन मैं बचपन से बचने के लिए आदत डालता हूं (मैं वास्तव में इसे रीमेप करता हूं एस्केप कुंजी का एक हिट) मेरे इरादे से अधिक है, और यह मेरी विंडोज कॉन्फ़िगरेशन को मारने से समाप्त होता है, जो काफी परेशान है। समारोह कुंजीपटल-एस्केप छोड़ने simple.el में परिभाषित किया गया है:
(defun keyboard-escape-quit()
"Exit the current \"mode\" (in a generalized sense of the word).
This command can exit an interactive command such as `query-replace',
can clear out a prefix argument or a region,
can get out of the minibuffer or other recursive edit,
cancel the use of the current buffer (for special-purpose buffers),
or go back to just one window (by deleting all but the selected window)."
(interactive)
(cond ((eq last-command 'mode-exited) nil)
((> (minibuffer-depth) 0)
(abort-recursive-edit))
(current-prefix-arg
nil)
((and transient-mark-mode mark-active)
(deactivate-mark))
((> (recursion-depth) 0)
(exit-recursive-edit))
(buffer-quit-function
(funcall buffer-quit-function))
((not (one-window-p t))
(delete-other-windows))
((string-match "^ \\*" (buffer-name (current-buffer)))
(bury-buffer))))
और मैं देख सकता हूँ कि मैं लाइनों नहीं करना चाहती:
((not (one-window-p t))
(delete-other-windows))
लेकिन क्या सबसे अच्छा तरीका यह संशोधित करने के लिए है समारोह? मैं केवल दो तरीकों को देख सकता हूं: 1) simple.el 2 को संशोधित करें) इस फ़ंक्शन को मेरी .emacs फ़ाइल में कॉपी करें और वहां संशोधन करें। दोनों तरीके वास्तव में अच्छा नहीं हैं; आदर्श रूप में मैं defadvice की रेखा पर कुछ देखना चाहता हूं, लेकिन मैं नहीं देख सकता कि मैं इस मामले में इसे कैसे कर सकता हूं।
एक बेहतर एक लाइनर संस्करण flet का उपयोग कर (यानी देना का कार्य संस्करण): (defadvice कुंजीपटल-एस्केप छोड़ने (मेरी-कुंजीपटल-एस्केप छोड़ने सक्रिय चारों ओर) (फलेट ((एक-विंडो-पी (और वैकल्पिक नामांकित ऑल-फ्रेम) टी)) विज्ञापन-डू-इट)) – polyglot
फ्लेट काम करने के लिए सीएल एक्सटेंशन की आवश्यकता है। – Alan
आपको 'flet' को' cl-flet' में बदलने की भी आवश्यकता हो सकती है। – Alan