मुझे Emacs बफर में चयन तक पहुंचने की आवश्यकता है। मुझे यह आलेख How do I access the contents of the current region in Emacs Lisp? मिला है और यह मुझे बहुत मदद करता है।मैं Emacs Lisp में प्रोग्रामेटिक रूप से क्षेत्र (चयन) कैसे प्राप्त करूं?
लेकिन एक समस्या है। पहली बार जब मैं एक क्षेत्र का चयन करता हूं (हाइलाइट करता हूं), यह ठीक काम करता है, लेकिन जब मैं सीजी दबाता हूं, और किसी भी वर्ण को हाइलाइट किए बिना कर्सर को सामान्य रूप से किसी अन्य स्थान पर ले जाता हूं, तो मुझे अंतिम बिंदु से वर्तमान बिंदु तक एक स्ट्रिंग मिलती है जबकि मैं एक खाली उम्मीद करता हूं ।
असल में मुझे एक फ़ंक्शन को कार्यान्वित करने की आवश्यकता है जो वर्तमान चयन (हाइलाइट) को एक स्ट्रिंग के रूप में वापस लाएगा, या खाली स्ट्रिंग अगर कुछ भी हाइलाइट नहीं किया गया है। निम्नलिखित कोड मुझे और स्पष्ट रूप से व्यक्त कर सकता है।
(defun get-search-term()
(interactive)
(let (
(selection (buffer-substring-no-properties (region-beginning) (region-end))))
(if (= (length selection) 0)
(message "empty string")
(message selection))))
कोई सुझाव? आपका बहुत बहुत धन्यवाद!
कोई कारण नहीं है कि आप गैरेथ रीस द्वारा दिखाए गए 'इंटरैक्टिव' फॉर्म का उपयोग नहीं कर रहे हैं, जिसमें आपने लिंक किया था? – phils
आपके उत्तर के लिए धन्यवाद, और उस लेख को ध्यान से पर्याप्त रूप से पढ़ने के लिए खेद है। (इंटरैक्टिव "आर") ने मेरी समस्या हल कर दी है। मुझे इंटरैक्टिव के बारे में और अधिक पढ़ने की जरूरत है। – sailing
संभावित डुप्लिकेट [मैं Emacs Lisp में वर्तमान क्षेत्र की सामग्री तक कैसे पहुंच सकता हूं?] (Http://stackoverflow.com/questions/605846/how-do-i-access-the-contents-of-the-current -region-in-emacs-lisp) – phils