जब क्षणिक-चिह्न-मोड सक्रिय होता है तो Emacs का सामान्य व्यवहार यह होता है कि जब आप शिफ्ट-सेलेक्शन करते हैं, तो यदि अगला कमांड एक नॉन-शिफ्ट मूवमेंट है, तो मार्क निष्क्रिय हो जाता है। उदाहरण के लिए, कमांड के बाद M-l(नीचे फ़ंक्शन के साथ वर्तमान लाइन को चिह्नित करने के लिए) और C-f, चिह्न निष्क्रिय है। उस व्यवहार को बाद में कैसे करें (set-mark-command nil)?
उदाहरण के लिए:
(defun my-mark-current-line ()
(interactive)
(beginning-of-line)
(set-mark-command nil)
(end-of-line)
(forward-char))
(global-set-key (kbd "M-l") 'my-mark-current-line)
अब Ml Cf करें और क्षेत्र बढ़ेगा, लेकिन इसके बजाय, मैं चाहता हूं कि डिफ़ॉल्ट व्यवहार, अर्थात Cf को निष्क्रिय करने के लिए क्षेत्र, और CSf के साथ बढ़े।
संपादित करें : सेट-मार्क-कमांड के लिए एक फ़ंक्शन का उपयोग करना चाहिए जो इसे अनुमति देता है? मुझे कोई नहीं मिला।
C-fवह आपके द्वारा उपयोग किए जाने वाले अन्य सभी नेविगेशन कमांड पर भी लागू होगी।
C-fबाद M-lक्षेत्र का विस्तार नहीं करता है क्योंकि M-l(जो downcase-wordडिफ़ॉल्ट रूप से बाध्य है ) के अंत में कोई सक्रिय क्षेत्र नहीं है ।
M-lओपी द्वारा संदर्भित डिफ़ॉल्ट बाइंडिंग नहीं है ( downcase-word), लेकिन कस्टम बाइंडिंगmy-mark-current-line
C-S-fकरनेC-SPC)C-f(नेविगेशन) के अनुरूप है । आप संभवतःC-fएक रैपर फ़ंक्शन से बाइंड करके प्राप्त कर सकते हैं जो पहले सक्रिय होने पर एक क्षेत्र को निष्क्रिय करता है और फिर जोC-fकरता है उसे करने के लिए आगे बढ़ता है (forward-char); औरC-S-fसीधे बाँधोforward-char। ध्यान दें कि यदि आप कभी टर्मिनल मोड में emacs का उपयोग करते हैं,C-fऔरC-S-fदोनों व्यवहार करेंगेC-fजैसे टर्मिनल दोनों के बीच अंतर नहीं कर सकता है।