[आपका उचित स्ट्रिंग गलत दिखता है - शायद आपने इसे गलत कॉपी किया है। foo
केवल 3 वर्ण हैं, इसलिए इसे वर्णों 0 से 4 (यानी, वर्ण 0, 1, 2, और 3 - कि 4 वर्ण) पर फ़ॉन्ट किया जाना असंभव है। मैं यहां उदाहरण में 4 के बजाय 3 का उपयोग करता हूं।]
(let* ((foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(start 0)
(end (length foo)))
(set-text-properties start end nil foo)
foo)
set-text-properties
एक अंतर्निहित कार्य है C source code
।
(set-text-properties START END PROPERTIES &optional OBJECT)
पूरी तरह से से पाठ के गुणों को बदलने START
के लिए END
।
तीसरा तर्क PROPERTIES
नई संपत्ति सूची है।
यदि वैकल्पिक चौथा तर्क OBJECT
एक बफर (या शून्य, जिसका अर्थ है वर्तमान बफर) है, START
और END
बफर स्थिति (पूर्णांक या मार्कर) हैं। यदि OBJECT
एक स्ट्रिंग है, START
और END
इसमें 0-आधारित सूचकांक हैं। यदि PROPERTIES
शून्य है, तो प्रभाव OBJECT के निर्दिष्ट भाग से सभी संपत्तियों को हटाने के लिए है।
Elisp मैन्युअल, नोड चेंजिंग गुण देखें । वहाँ आप इसे देखेंगे, फ़ंक्शन के तहत remove-text-properties
(जिसका उपयोग आप नौकरी करने के लिए भी कर सकते हैं):
कुछ पाठ से सभी पाठ गुणों को निकालने के लिए, नई संपत्ति सूची के लिए उपयोग करें set-text-properties
और निर्दिष्ट करें nil
।
जैसा कि @ उल्लेख किया गया है, आप भी उपयोग कर सकते हैं substring-no-properties
, लेकिन ध्यान रखें कि यह एक नया स्ट्रिंग लौटाता है। यह वास्तविक स्ट्रिंग ऑब्जेक्ट को संशोधित नहीं करता है जिसे आप इसे पास करते हैं। दोनों remove-text-properties
और set-text-properties
स्ट्रिंग आप उन्हें पास बदल देते हैं।
उदाहरण के लिए:
(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(set-text-properties 0 (length foo) nil foo)
दोनों foo
और bar
अब सिर्फ हैं "foo"
, कोई गुण नहीं है।
परंतु:
(setq foo #("foo" 0 3 (fontified t face font-lock-function-name-face)))
(setq bar foo)
(setq foo (substring-no-properties foo))
अब foo
कोई गुण नहीं है लेकिन फिर bar
भी उनके पास है।