मैं एक निश्चित उपसर्ग के साथ सभी प्रतीक परिभाषाओं को कैसे खोल सकता हूं?


11

मैं अपने पैकेज के एपीआई को बार-बार बदल रहा हूं, लेकिन इसके पूर्णता में हर परिभाषित प्रतीक (जैसा कि इसे चाहिए) को company-modeखींचता है । मैं गलती से एक अनबाउंड नाम का उपयोग नहीं करना चाहता, इसलिए मैं उन सभी चर और कार्यों को कैसे खोल सकता हूं, जो शुरू करते हैं, कहते हैं ? इसके बाद, मैं बस फिर से सक्षम हो जाऊंगा।my-package-load-file

जवाबों:


10

unload-featureसभी प्रतीकों को अपरिभाषित करने के लिए कॉल करें जिन्हें एक एलिफ़ स्रोत या बाइट-संकलित फ़ाइल को लोड करने के हिस्से के रूप में परिभाषित किया गया था। सुनिश्चित करें कि आपकी फ़ाइल अंत में कॉल करके समाप्त होती है provide। यह मान लेता है कि आपने फ़ाइल को एक loadफ़ंक्शन के माध्यम से लोड किया है या इसके माध्यम से require, यह C-M-x( eval-defun) या इसी तरह के तंत्र द्वारा परिभाषित प्रतीकों को अपरिभाषित नहीं करेगा ।

यदि आप वास्तव में उनके द्वारा परिभाषित पैकेज के आधार पर उनके नाम के आधार पर प्रतीकों को खोलना चाहते हैं, तो आप mapatomsसभी प्रतीकों पर पुनरावृति करने के लिए उपयोग कर सकते हैं ।

(mapatoms (lambda (symbol)
            (if (string-prefix-p "foo-" (symbol-name symbol))
                (unintern symbol))))

उपयोगी है, लेकिन मुझे विश्वास नहीं है कि यह इंटरैक्टिव विकास के साथ प्रभावी होगा जैसा कि मैं वर्णन करता हूं। मैं featureसिस्टम से गहरा एक स्तर हूं ; मैं किसी भी स्पष्ट समूह के बिना केवल फ़ंक्शन और चर के साथ काम कर रहा हूं। मैंने मूल्यांकन करने की जहमत नहीं उठाई (provide 'my-package)
सीन एलेड

2
@SeanAllred मैं उपयोग न करने के एक अच्छे कारण के बारे में नहीं सोच सकता provide। लेकिन वैसे भी, यदि आप वास्तव में चीजों को गंदा करना चाहते हैं, तो मेरा संपादन देखें।
गिल्स एसओ- बुराई को रोकना '

ओह, मुझे प्यार है provide, मुझे नहीं लगता कि यह इस मामले में काम करेगा। क्या फ़ंक्शंस याद हैं कि उन्हें किस फ़ाइल में परिभाषित किया गया था यदि उनका अंतःक्रियात्मक रूप से मूल्यांकन किया गया था?
सीन ऑल्रेड

2
unload-featureयदि आपके पास किसी फ़ाइल से लोड किए बिना कोड का मूल्यांकन होता है तो इसका कोई प्रभाव नहीं है provide
ड्रू

2
@ सीनऑल्रेड नहीं, फ़ंक्शंस केवल यह याद रखते हैं कि वे कहाँ से लोड किए गए थे यदि उन्हें पूरी फ़ाइल लोड करने के हिस्से के रूप में लोड किया गया था।
गिल्स एसओ- बुराई को रोकना '10

7
  • का प्रयोग करें makunboundएक गतिशील चर के रूप में एक प्रतीक के उपयोग को दूर करने (यानी, अपने शून्य करने के लिए symbol-value)।

  • fmakunboundएक समारोह के रूप में एक प्रतीक के उपयोग को हटाने के लिए उपयोग करें (यानी, इसके शून्य करने के लिए symbol-function)।

  • mapatomsसभी प्रतीकों पर पुनरावृति का उपयोग करें । प्रत्येक पर symbol-nameविशेष रूप से उपसर्ग से मेल खाने वाले पर कार्य करें: इसमें makunboundऔर दोनों fmakunboundपर कॉल करें ।

  • आपको uninternप्रतीक की आवश्यकता नहीं है , जब तक कि आप स्वयं प्रतीकों के खिलाफ पूर्णता का उपयोग नहीं कर रहे हैं, और न केवल चर या कार्यों के रूप में उनके उपयोग पर। लेकिन आप अगर है पूरी तरह से एक प्रतीक निकालना चाहते हैं तो का उपयोग unintern

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.