कुछ लोग सोच सकते हैं कि इसका उपयोग करना सरल है setq। कुछ लोग सोच सकते हैं कि यह अधिक लिस्पी है। वास्तव में, यह सामान्य मामले में अनुभवहीन है।
यह सच है कि कुछ उपयोगकर्ता विकल्पों के लिए यह कोई मायने नहीं रखता है। लेकिन दूसरों के लिए, यह मायने रखता है, और setqउन विकल्पों के लिए गलत दृष्टिकोण है। तो एक सामान्य नियम के रूप setqमें, गलत दृष्टिकोण है।
यदि आप उपयोग करते हैं custom-set-variablesया customize-set-variableइसके बजाय setq, या यदि आप अनुकूलित उपयोगकर्ता इंटरफ़ेस (जैसे M-x customize-option) का उपयोग करते हैं , तो आप सुनिश्चित हैं कि विकल्प मान के लिए आवश्यक किसी भी प्रारंभिक आरंभीकरण या अद्यतन कोड को स्वचालित रूप से ट्रिगर किया जाएगा और आवश्यकतानुसार चलाया जाएगा। यदि आप उपयोग करते हैं setq, तो यह नहीं किया जाएगा।
अब, यह भी मामला है कि सबसे अधिक उपयोगकर्ता विकल्प, उनमें से विशेष रूप से कई 3rd पक्ष के पुस्तकालयों के लिए लिखा है, का उपयोग नहीं करते है defcustomकीवर्ड :setऔर :initialize, और का उपयोग कर setqउनके लिए कोई फर्क नहीं पड़ता। लेकिन बहुत सारे वेनिला एमएसीएस विकल्प ऐसे कीवर्ड का उपयोग करते हैं, और जो ऐसा करते हैं, उनके setqलिए यह सही बात नहीं है। इसलिए यदि आप अपने विकल्पों को सेट करने के लिए Lisp कोड का उपयोग करना चाहते हैं, न कि कस्टमाइज़ यूआई का, तो आप इसका उपयोग करने के बजाय custom-set-variablesया बंद करना बेहतर customize-set-variableसमझते हैं setq। यह कभी दर्द नहीं करता है और यह कभी-कभी मदद करता है (बहुत)।
लेकिन मैं इन दोनों चीजों को करने की सलाह देता हूं:
इसके लिए लिस्प कोड लिखने के बजाय कस्टमाइज़ यूआई का उपयोग करें ।
वेरिएबल को डिफाइन करेंcustom-file , ताकि कस्टमाइज उस फाइल पर कस्टमाइजेशन लिखे और आपकी इनिट फाइल ( ~/.emacs) में नहीं। IOW, अपने हाथ से लिखे गए आरंभीकरण कोड को कस्टमाइज़ द्वारा लिखे गए स्वचालित कोड से अलग रखें।