variables एमएसीएस में मैं सभी संभावित मूल्यों के लिए एक फाइल में सेट किए जाने वाले स्थानीय वैरिएबल सुरक्षित कैसे कर सकता हूं I




emacs elisp (3)

Elisp में मैंने एक विशेष कस्टम मोड के लिए एक चर की तरह शुरू की है:

(defvar leo-special-var "")
(make-variable-buffer-local 'leo-special-var)

अब मैं इस चर को फाइलों में मैं लाइनों के साथ सेट करता हूं ( फाइल में संपादित करने के लिए ):

# Local Variables:
# leo-special-var: "-d http://www.google.com.au"
# End:

और मैं इस वैरिएबल को " अपने सभी मानों के लिए सुरक्षित" मानना ​​चाहता हूं, यही कारण है कि safe-local-variable-values मदद नहीं करते हैं। इसके बजाय मैंने कोशिश की ( लिस्पी कोड में ):

# setting the symbol property of the variable
(put 'leo-special-var 'safe-local-variable 'booleanp)

लेकिन सफलता के बिना प्रतीक संपत्ति की स्थापना करते समय क्या मैं कुछ गलत करता हूं? क्या कोई और तरीका है?


आप उपयोग करना चाहते हैं

(put 'leo-special-var 'safe-local-variable #'stringp)

कहने के लिए कि जब तक यह स्ट्रिंग है तब तक यह सुरक्षित है


यह मैनुअल में है: (elisp) File Local Variables

   You can specify safe values for a variable with a
`safe-local-variable' property.  The property has to be a function of
one argument; any value is safe if the function returns non-`nil' given
that value.  Many commonly-encountered file variables have
`safe-local-variable' properties; these include `fill-column',
`fill-prefix', and `indent-tabs-mode'.  For boolean-valued variables
that are safe, use `booleanp' as the property value.  Lambda
expressions should be quoted so that `describe-variable' can display
the predicate.

   When defining a user option using `defcustom', you can set its
`safe-local-variable' property by adding the arguments `:safe FUNCTION'
to `defcustom' (*note Variable Definitions::).

यदि आप वास्तव में यह कहना चाहते हैं कि यह सभी मानों के लिए सुरक्षित है तो इसका उपयोग करें:

(put 'leo-special-var 'safe-local-variable (lambda (xx) t))

सुरक्षा की जांच करने के लिए फ़ंक्शन किसी भी मूल्य के लिए गैर- nil देता है।

(अतिरिक्त कोष्ठक को हटाने के लिए संपादित।)





elisp