ฉันต้องการแทนที่ฟังก์ชันในโค้ดชั่วคราว
ยกตัวอย่างเช่น
(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)
อะไรไม่ทำงาน:
- นี้. มันจะสะอาดกว่านี้ถ้าฉันสามารถหลีกเลี่ยงการเปิดใช้งานและปิดการใช้งานคำแนะนำและไว้วางใจธรรมชาติของ Emacs แบบเธรดเดียวเพื่อดูแลสิ่งต่าง ๆ
cl-letf
จะไม่ให้ฉันอ้างอิงฟังก์ชั่นการกำเนิดดังนั้นฉันไม่สามารถใช้สิ่งที่:filter-args
ปกติจะทำcl-flet
ไม่สามารถแทนที่ฟังก์ชั่นในฟังก์ชั่นอื่น ๆnoflet
เป็นแพ็คเกจภายนอกซึ่งฉันต้องการหลีกเลี่ยง (ทำมากกว่าที่ฉันต้องการด้วย)
cl-letf*
สำหรับทั้งสองlet
อย่าง