Emacs कस्टम सिस्टम के बारे में भ्रामक
elisp (3)
कई समान सेटिंग कार्य हैं:
- सेट और सेटैक
- डिफॉल्ट सेट करें
- defcustom
- कस्टम सेट मूल्य
- कस्टम सेट चर
- अनुकूलित-सेट-मूल्य
- अनुकूलित सेट-चर
तो, इन कार्यों के बीच अंतर क्या है?
अगर मैं अपनी पसंद को ऐड-ऑन पर सेट करना चाहता हूं, तो इन परिदृश्य के लिए:
- यदि defcustom से एक चर सेटिंग, जो सेटिंग-समारोह बेहतर होगा?
- और defvar द्वारा एक चर सेटिंग के बारे में क्या?
-
set
औरsetq
वेरिएबल के किसी भी प्रकार को निर्दिष्ट करने के लिए उपयोग किए जाने वाले सबसे निम्न स्तर की प्राथमिकताएं हैं। -
set-default
औरsetq-default
emacs एक्सटेंशन हैं जो बफ़र-लोकल वैरिएबल के साथ जाते हैं, नए बफ़र्स के लिए उपयोग किए जाने वाले डिफ़ॉल्ट मान को सेट करने की अनुमति देने के लिए। 3-7। सभी "कस्टम" सामान बाद में एक अतिरिक्त है जो उपयोगकर्ता प्राथमिकताओं के रूप में उपयोग किए जाने वाले वेरिएबल के प्रबंधन के लिए उपयोगकर्ता इंटरफ़ेस का समर्थन करने के लिए डिज़ाइन किया गया था -
defcustom
के समान है, लेकिन आप विकल्प के पदानुक्रम में एक स्थान निर्दिष्ट करने के साथ-साथ डेटा प्रकार की जानकारी प्रदान कर सकते हैं ताकि UI मेनू के रूप में मान प्रदर्शित कर सके या स्वचालित रूप से उचित प्रकार के उपयोगकर्ता इनपुट को परिवर्तित कर सके। - मुझे नहीं लगता कि
custom-set-value
समारोह है - सभी उपयोगकर्ता के विकल्प सहेजे जाने पर
custom-set-variables
कस्टमाइज़ UI द्वारा उपयोग किया जाता है। यह सभी चर को सूचीबद्ध करता है जो उपयोगकर्ता अपने डिफ़ॉल्ट से बदल चुका है। 6-7।custom-set-value
औरcustom-set-variable
उपयोगकर्ता को एक विकल्प वैरिएबल के वर्तमान और डिफ़ॉल्ट मानों के लिए संकेत करने के लिए अनुकूलित करें UI द्वारा उपयोग किया जाता है, और उन्हें असाइन करें। आप आमतौर पर इसे खुद नहीं कहते हैं।
आपके लिए संक्षिप्त उत्तर है:
defvar
द्वारा परिभाषित चर के लिएsetq
याsetq-default
उपयोग करेंdefcustom
द्वारा परिभाषित चर के लिएsetq
,setq-default
, याCustomize
तंत्र का उपयोगCustomize
नीचे लंबा जवाब है।
आपके द्वारा उपयोग करने वाले कार्य निम्न हैं:
set
एक चर का मान सेट करने के लिए मुख्य फ़ंक्शन हैsetq
एक अन्य संस्करण है जो स्वचालित रूप से अपनी पहली तर्क उद्धरण देता है यह पहला तर्क है कि आप लगभग हर समय क्या करना चाहते हैं उद्धृत करने के बाद उपयोगी है।कुछ चर को विश्व स्तर पर सेट नहीं किया जा सकता है जब भी आप चर सेट करते हैं तो यह केवल वर्तमान बफर के लिए निर्धारित होता है यदि आप वैश्विक रूप से इस चर को सेट करना अनुकरण करना चाहते हैं तो आप
set-default
याsetq-default
।
फ़ंक्शन जो पैकेज लेखक का उपयोग करता है:
defvar
जो पैकेज लेखक को एक चर परिभाषित करने और कुछ दस्तावेज देने की अनुमति देता है। इस फ़ंक्शन की आवश्यकता नहीं है लेकिन उपयोगकर्ताओं के जीवन को आसान बनाता हैdefcustom
बनाता है यह emacs को बताता है कि यह एक चर है, और यह डेवलपर को मूल्य निर्धारित करने के लिए एकcustom
इंटरफ़ेस बनाने की अनुमति देता है। डेवलपर कह सकता है, "इस वेरिएबल में केवल 'value' foo या 'bar' शामिल हो सकते हैं।
चर को सेट करना दो तरीकों से किया जा सकता है:
अगर
defvar
का उपयोग किया गया था, मान केवलset
फ़ंक्शन (या वेरिएंट) का उपयोग करके उपयोगकर्ता द्वारा इसकेdefvar
में सेट किया जा सकता है।यदि
defcustom
इस्तेमाल किया गया था, तो मानset
(set
देखें) का उपयोग करकेset
किया जा सकता है। कस्टमाइज़ तंत्र का उपयोग करते समय, emacs कुछ कोड उत्पन्न करेगा जोcustom-set-variables
में रखेगा। उपयोगकर्ता को इस फ़ंक्शन का उपयोग नहीं करना चाहिए।
वे, एक ही बात करने के लिए मोटे तौर पर सभी रास्ते हैं हालांकि कुछ महत्वपूर्ण अंतर हैं उन्हें जानने का सबसे अच्छा तरीका है एमैक्स और एलिसप (देखें Ch i)
लिए मैनुअल पढ़ना। हालांकि सिर के ऊपर बंद:
-
set
एक "निम्न स्तरीय" चर असाइन है -
(setq foo bar)
शॉर्टहैंड के लिए है(set (quote foo) bar)
-
(set-default foo bar)
अर्थ है "जब तक कि वर्तमान बफर मेंfoo
की अधिक स्पष्ट रूप से परिभाषित परिभाषा नहीं है, मान बार का उपयोग करें", और सभी बफ़र्स पर लागू होता है -
defcustom
को एक वैरिएबल को चिह्नित करने के लिए उपयोग किया जाता है जो उपयोगकर्ता कोcustomize
सुविधा के माध्यम से सुरक्षित रूप से संशोधित करने में सक्षम होने की उम्मीद है। -
custom-set-value
औरcustomize-set-value
दो नाम हैं जो समान फ़ंक्शन को इंगित करते हैं।customize
सिस्टम के साथ काम करने के लिए वे सुविधा के तरीके हैं -
custom-set-variables
औरcustomize-set-variables
का उपयोग किसी भी अनुकूलित-से-अनुकूलित वैरिएबल को सक्रिय करने के लिए किया जाता है, IIRC।
सामान्य तौर पर, इसके बारे में चीजों को बदलने के लिए Mx customize
करने का सुझाव दिया गया है। आप अपने। set
या defcustom
का उपयोग करके परिभाषित चीजों को सेट करने के लिए स्वतंत्र हैं, कस्टमाइज़ सिस्टम आपको इसके बारे में चेतावनी देगा यदि आप बाद में इसे customize
इसे customize
करते हैं।
आमतौर पर defcustom
आम तौर पर वितरण के लिए किए गए पैकेज लिखने वाले लोगों द्वारा उपयोग किए जाते हैं, और मुझे नहीं लगता कि मैंने किसी को custom-set-*
setq
लोगों की प्रारंभिक फाइलों में बहुत आम है, ताकि वे चीजों को सेट अप करने के लिए सेट कर सकें कि वे किस तरह पसंद करते हैं, भले ही इन चीजों को customize
या नहीं के साथ उपयोग के लिए चिह्नित किया जाए या नहीं।
मुझे इस सबकी पूर्ण समझ नहीं है, उम्मीद है कि कोई और अधिक प्रकाश डाल सकता है, लेकिन मुझे लगता है कि यह काफी अच्छा अवलोकन है: पी