2009-03-03 3 views
35

मैं एक समारोह के भीतर एक स्ट्रिंग के रूप में वर्तमान क्षेत्र की सामग्री का उपयोग करना चाहते हैं। उदाहरण के लिए:मैं Emacs Lisp में वर्तमान क्षेत्र की सामग्री तक कैसे पहुंचूं?

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

धन्यवाद

एड

उत्तर

49

region-beginning साथ buffer-substring एक साथ और region-end ऐसा कर सकते हैं।

+0

कि अद्भुत है, धन्यवाद। मैं निश्चित रूप से खुद को नहीं मिला होता। – Singletoned

59

starblue कहते हैं, (buffer-substring (mark) (point)) क्षेत्र की सामग्री को अगर निशान सेट किया गया है देता है,। आप string properties नहीं करना चाहते हैं, तो आप 'buffer-substring-no-properties भिन्न रूप का उपयोग कर सकते हैं।

हालांकि, यदि आप इंटरैक्टिव कमांड लिख रहे हैं, तो (interactive "r") फ़ॉर्म का उपयोग करके क्षेत्र के अंतराल प्राप्त करने का एक बेहतर तरीका है।

 
(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 ...) प्रपत्र ताकि आप बफर, न सिर्फ इस क्षेत्र के किसी भी भाग में लाइनों गिनती करने के लिए इस सुविधा का उपयोग कर सकते हैं, नजरअंदाज कर दिया है द्वारा,: यहाँ simple.el से एक उदाहरण है उचित तर्क पारित करना: उदाहरण के लिए, (count-lines-region (point-min) (point-max)) बफर के संकुचित भाग में रेखाओं की गणना करने के लिए। लेकिन जब सहभागी कहा जाता है, (interactive ...) रूप मूल्यांकन किया जाता है, और "r" कोड बिंदु और निशान की आपूर्ति, दो संख्यात्मक तर्क, छोटी से छोटी पहले के रूप में।

Emacs Lisp मैन्युअल, अनुभाग 21.2.1 Using Interactive और 21.2.2 Code Characters for interactive देखें।

4

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

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