बफर-लोकल वैरिएबल को फिर से ग्लोबल बनाएं


12

मैं स्थानीय चर और सेट के साथ प्रयोग कर रहा था:

(defvar-local foo nil "Buffer local foo")

मैंने बाद में अपने प्रोग्राम को उपयोग करने के बजाय एक वैश्विक चर का उपयोग करने के लिए बदल दिया:

(defvar foo nil "Not buffer local foo")

लेकिन चर अभी भी स्थानीय बफर है और यहां तक (kill-local-variable 'foo)कि इसे मार नहीं था।

मूल रूप से, मैं "पूर्ववत" कैसे कर सकता हूं make-local-variable?


1
बस एफडब्ल्यूआई, डिवार-लोकल उपयोग make-variable-buffer-localनहीं करता है make-local-variable
मालाबार 22

जवाबों:


12

@Malabarba की टिप्पणी आपकी समस्या बताती है।

kill-local-variable करता स्थानीय बाध्यकारी चर से छुटकारा पाने के। लेकिन जब से आपके मामले में चर स्वचालित रूप से किसी भी बफर में स्थानीय है, जब आप इसे एक मान देते हैं, तो यह मान स्थानीय है।

AFAIK, काउंटर पर कोई रास्ता नहीं है make-variable-buffer-localसिवाय uninternप्रतीक पर उपयोग करने के। ( makunboundमदद नहीं करता है।)

यदि आप एकतरफा उपयोग करते हैं तो आप ठीक हैं। लेकिन ध्यान रखें कि अनइन्टर्निंग प्रतीक को पूरी तरह से हटा देता है, इसलिए यदि आप एक चर के अलावा किसी और चीज़ के लिए प्रतीक का उपयोग करते हैं, तो नकारात्मक परिणाम हो सकते हैं।

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

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