Ich hatte Spaß daran, einer Funktion einige Ratschläge hinzuzufügen:
(advice-add 'executable-find :around
(lambda (f &rest args)
(apply g args)))
;;; ^
Autsch, ein Tippfehler. Es wurde behoben und der obige Code erneut ausgewertet. Aber jetzt habe ich sowohl den "korrigierten" als auch den "kaputten" Rat bezüglich dieser Funktion.
Wie werde ich diese los? Vorausgesetzt, dass advice-remove
entweder das Funktionsobjekt oder der Around-Rat benötigt (der hier leer ist)?
(Natürlich kann ich einfach beenden und neu starten, aber es gibt noch einen anderen Weg, oder?)
eq
mit den vorherigen übereinstimmt, (2) das Entfernen von Ratschlägen die Funktion vergleicht, die Sie an die Ratschläge übergeben, bis sie gefunden wird eine, die dazu gehörteq
und das entfernt, (3) selbst wenn ein Ratschlag-Entfernen einen anderen Test verwendet,equal
würde es immer noch nicht funktionieren, weil sich verschiedene Bewertungen einer Lambda-Form nichtequal
gegenseitig würden . Es stellt sich heraus, dass (1) richtig ist, aber (2) und (3) falsch sind: Ratschläge entfernenequal
undlambda
zweimal bewerten, führt zuequal
Ergebnissen!