प्रोग्रामेटिक रूप से डिफ़ॉल्ट मान के लिए कस्टम चर रीसेट करें


25

प्रश्न: एलिस्प के प्रयोग से, मैं उस मूल्य को जाने बिना उसके डिफ़ॉल्ट मान पर चर कैसे रीसेट कर सकता हूं?

मैंने यह पता लगाने की कोशिश की कि मैं अपने इन-फाइल में एक गैर-डिफ़ॉल्ट मान के लिए सेट किए गए चर के लिए कस्टमाइज़ इंटरफ़ेस को कैसे लाऊं और C-h k"रिवर्ट ..." बटन पर एक क्लिक के बाद दबाव डालूं। इसके लिए प्रलेखन लाया widget-button-click, जो स्पष्ट रूप से बहुत मदद नहीं करता था। (इसी तरह, C-h k RETबटन पर बिंदु के साथ मदद के लिए पता चलता है Custom-newline, जो भी मैं नहीं देख रहा हूँ।)


3
संबंधित, गैर-कस्टम वर्जन के लिए
Malabarba

जवाबों:


23

C-hig (elisp) Variable Definitions

आंतरिक रूप से, मानक मान के लिए अभिव्यक्ति को रिकॉर्ड करने के defcustomलिए प्रतीक संपत्ति standard-valueका उपयोग करता है , saved-valueअनुकूलन बफर के साथ उपयोगकर्ता द्वारा सहेजे गए मूल्य customized-valueको रिकॉर्ड करने के लिए , और उपयोगकर्ता द्वारा निर्धारित मूल्य को रिकॉर्ड करने के लिए कस्टम बफर के साथ रिकॉर्ड किया गया है, लेकिन सहेजा नहीं गया। प्रतीक गुण देखें । ये गुण सूचियाँ हैं, carजिनमें से एक अभिव्यक्ति है जो मूल्य का मूल्यांकन करती है।

इसलिये:

(setq foo (eval (car (get 'foo 'standard-value))))

ध्यान दें कि यह केवल defcustomचर ("उपयोगकर्ता विकल्प") पर लागू होता है । Emacs किसी defvarवैरिएबल के शुरुआती मूल्य को कहीं भी सेव नहीं करता है ।


3
दरअसल, आपको वादी में गले का मूल्यांकन करने की आवश्यकता है। आपके उदाहरण को बदल दिया जाना चाहिए: (setq foo (eval (car (get 'foo 'standard-value))))जनरेट किया गया डिफ़ॉल्ट मान फ़ॉर्म defcustomफ़नल और क्लोज़र के साथ एक फ़ॉर्म है (यह संभवतः केवल तब होता है जब लेक्सिकल बाइंडिंग सक्षम किया जाता है)
एलियास मैर्टेनसन

आप शायद का उपयोग करना चाहते setq-defaultकरने के बजाय setqइस मामले में।
17

11

एक और, शायद क्लीनर, एक चर के मूल्य को रीसेट करने का तरीका:

custom-reevaluate-settingमें संकलित लिस्प फ़ंक्शन है custom.el

(custom-reevaluate-setting SYMBOL)

SYMBOLइसके सहेजे गए या मानक मान का पुनर्मूल्यांकन करके मूल्य को रीसेट करें । :setऐसा करने के लिए फ़ंक्शन का उपयोग करें । यह उन अनुकूलन योग्य विकल्पों के लिए उपयोगी है जिन्हें उनके मानक मूल्य से पहले परिभाषित किया जा सकता है। उदा। डंप किए गए चर जिनका डिफ़ॉल्ट रन-टाइम जानकारी पर निर्भर करता है।

उदाहरण के लिए:

(custom-reevaluate-setting 'emms-player-next-function)

पिछले मान को उस प्रतीक से बदल देगा standard-value

संपादित करें

इस फ़ंक्शन के बारे में एक बहुत ही महत्वपूर्ण विवरण के लिए नीचे @phils टिप्पणी पढ़ें।


5
नोट " सहेजा गया या मानक मान"। वरीयता के उस क्रम में। यदि उपयोगकर्ता ने वैरिएबल के लिए मान को अनुकूलित और सहेजा है, तो यह फ़ंक्शन इसे इसके लिए रीसेट करता है saved-value, इसके नहीं standard-value
फिल्स
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.