मैं कोड के एक टुकड़े में एक फ़ंक्शन को अस्थायी रूप से ओवरराइड करना चाहता हूं।
उदाहरण के लिए, निम्नलिखित लें:
(defun nadvice/load-quiet (args)
(cl-destructuring-bind
(file &optional noerror nomessage nosuffix must-suffix)
args
(list file noerror t nosuffix must-suffix)))
(defun nadvice/idle-require-quiet (old-fun &rest args)
(advice-add 'load :filter-args #'nadvice/load-quiet)
(apply old-fun args)
(advice-remove #'load #'nadvice/load-quiet))
(advice-add 'idle-require-load-next :around #'nadvice/idle-require-quiet)
क्या काम नहीं करता है:
- इस। यह बहुत साफ होगा अगर मैं मैन्युअल रूप से सक्षम और अक्षम करने से बच सकता हूं और चीजों की देखभाल के लिए एमएसीएस के एकल-थ्रेडेड प्रकृति पर भरोसा कर सकता हूं।
cl-letf
मुझे मूल फ़ंक्शन का संदर्भ नहीं देने देंगे, इसलिए मैं उन चीजों को लागू नहीं कर सकता जो:filter-args
सामान्य रूप से होती हैं।cl-flet
अन्य कार्यों में कार्यों को ओवरराइड नहीं कर सकते।noflet
एक बाहरी पैकेज है, जिससे मैं बचना चाहूंगा। (मेरी आवश्यकता से बहुत अधिक)
cl-letf*
है दोनों के लिए उपयोगlet
।