मैं Emacs Lisp में वर्तमान क्षेत्र की सामग्री का उपयोग कैसे करूं?




region (2)

जैसा कि स्टारब्ले कहता है, (buffer-substring (mark) (point)) क्षेत्र की सामग्री लौटाता है, यदि चिह्न सेट है। यदि आप स्ट्रिंग गुण नहीं चाहते हैं , तो आप 'buffer-substring-no-properties वेरिएंट 'buffer-substring-no-properties उपयोग कर सकते हैं।

हालाँकि, यदि आप एक इंटरैक्टिव कमांड लिख रहे हैं, तो फॉर्म (interactive "r") का उपयोग करके क्षेत्र के समापन बिंदु प्राप्त करने का एक बेहतर तरीका है। यहाँ simple.el से एक उदाहरण दिया simple.el :

(defun count-lines-region (start end)
  "Print number of lines and characters in the region."
  (interactive "r")
  (message "Region has %d lines, %d characters"
       (count-lines start end) (- end start)))

जब लिस्प कोड से कॉल किया जाता है, (interactive ...) फॉर्म को नजरअंदाज कर दिया जाता है, तो आप इस फ़ंक्शन का उपयोग उचित तर्कों को पारित करके, न केवल क्षेत्र के बफर के किसी भी हिस्से में लाइनों की गणना करने के लिए कर सकते हैं: (count-lines-region (point-min) (point-max)) बफर के संकुचित हिस्से में लाइनों को गिनने के लिए। लेकिन जब अंतःक्रियात्मक रूप से कहा जाता है, तो (interactive ...) रूप का मूल्यांकन किया जाता है, और "r" कोड बिंदु और चिह्न की आपूर्ति करता है, दो संख्यात्मक तर्क के रूप में, सबसे छोटा।

Emacs Lisp मैन्युअल, सेक्शन 21.2.1 इंटरैक्टिव के लिए इंटरएक्टिव और 21.2.2 कोड कैरेक्टर का उपयोग करके देखें।

मैं एक फ़ंक्शन के भीतर वर्तमान क्षेत्र की सामग्री को स्ट्रिंग के रूप में एक्सेस करना चाहता हूं। उदाहरण के लिए:

(concat "stringa" (get-region-as-string) "stringb")

धन्यवाद

ईडी


यदि आप Lisp कोड में क्षेत्र की सामग्री को उपयोगकर्ता-सुलभ डेटा संरचना जैसे किल-रिंग, एक्स क्लिपबोर्ड या रजिस्टर में कॉपी करना चाहते हैं, तो Emacs Lisp मैन्युअल केवल buffer-substring बजाय filter-buffer-substring का उपयोग करने की सिफारिश करता है। प्रतिलिपि बनाने से पहले, फ़ंक्शन filter-buffer-substring-functions नामक सूची चर से फ़िल्टर फ़ंक्शन लागू filter-buffer-substring-functions । फ़ंक्शन को 22.3 संस्करण में जोड़ा गया था।





region